Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как открывать разные файлы при помощи макроса?  (Прочитано 16456 раз)
0 Пользователей и 1 Гость смотрят эту тему.
I_wonder
Гость
« : 31-05-2006 13:50 » 

Добрый день Улыбаюсь
У меня вопрос: если у нас есть макрос, который работает с файлом определенным, но нам нужно сделать так, чтобы он работал с файлом вне зависимости от его имени.
Т.е. не обращался к файлу конкретно по имени, а если у нас, например, файлы записываются каждый день в формате "дд.мм.гг.xls", то как с ними работать? Я пока что придумал при начале работы макроса сохранять открытый файл как "файл для работы".
Но это не решает проблему, потому что хотелось бы работать именно в данных файлах.
Спасибо
Записан
RomCom
Опытный

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 01-06-2006 03:12 » 

I_wonder, немного сумбурно излогаешь.
Что значит?
Т.е. не обращался к файлу конкретно по имени
Обращаться к файлу можно только по имени и никак иначе.
И что тебе мешает работать с уже открытым файлом не сохраняя его под другим именем?
Записан

R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine
I_wonder
Гость
« Ответ #2 : 01-06-2006 07:03 » 

Если у нас есть файлы с информацией, которые мы записываем под именем того дня, в который пришла информация, т.е. 5 апреля он называется "05.04.xls" и т.д. А макрос же так и пишет у себя в коде, что работать ему нужно с "Лист1" из файла "05.04.xls", а если я работаю с файлом, например, "06.04.xls", он выдает ошибку само собой.
А как сделать, чтобы он в макросе не привязывался к названию файла или автоматически его изменял, вот вопрос?
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 01-06-2006 07:29 » 

А что нет возможности в VBA сформировать имя файла в нужном формате?
смотри в сторну строковых функций и функций даты
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
RomCom
Опытный

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 01-06-2006 07:58 » 

А в файле "06.04.xls" точно есть Лист1?
Вот пример открытия файла из скрипта:
Код:
Dim wbk As Workbook
Dim Sht As Worksheet
Dim f As String
f="05.04.xls" 'имя файла
Set wbk = Application.Workbooks.Open(f) 'открываем файл
Set Sht = wbk.Sheets("Лист1") 'получаем Лист1
Sht.Cells(.............   'работаем с Лист1
.......
Покажи кусок кода работы с файлом, иначе мы тут долго будем гадать что у тебя не так.
« Последнее редактирование: 18-12-2007 21:52 от Алексей1153++ » Записан

R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine
I_wonder
Гость
« Ответ #5 : 02-06-2006 08:15 » 

 Да что ты говоришь?.. Что самое интересное, сегодня зашел в макрос, чтобы вырезать кусок кода и не нашел там вообще имени файла. Странно,наверное, это я в другом макросе такую проблему видел, найду, выложу.
А еще вопрос, раз уж пошла такая пьянка Улыбаюсь
А если у нас в файле Лист1 переименован, то как тогда к нему обращаться?
Записан
Falsehood
Молодой специалист

ru
Offline Offline
Пол: Женский
не может быть


« Ответ #6 : 02-06-2006 09:47 » 

по номеру:
ActiveWorkbook.Sheets(1), например..
Записан

Славная трава...
I_wonder
Гость
« Ответ #7 : 05-06-2006 08:14 » 

Спасибо!
Только это же работает, если мы на первом листе работаем, а как сделать, чтобы на любом листе макрос работал? У нас 6 листов в файле.
Записан
Falsehood
Молодой специалист

ru
Offline Offline
Пол: Женский
не может быть


« Ответ #8 : 05-06-2006 10:32 » 

    For Each Sheet In ActiveWorkbook.Sheets
        Sheet.Range("a1").Value = "aaa"
    Next
читай про цикл for each
Записан

Славная трава...
I_wonder
Гость
« Ответ #9 : 05-07-2006 10:26 » 

Доброе утро, у меня еще один вопрос, вот код макроса:

Sub Макрос()     
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        "Лист1!A1:" & Worksheets("Лист1").Cells.SpecialCells(xlLastCell).Address).CreatePivotTable TableDestination:= _
        "", TableName:="Своднаятаблица1"
    With ActiveSheet.PivotTables("Своднаятаблица1")
        .ColumnGrand = False
        .RowGrand = False
        .DisplayNullString = False
    End With
    ActiveSheet.PivotTables("Своднаятаблица1").AddFields RowFields:= _
        "Столбец3", ColumnFields:="Столбец2", PageFields:= _
        "Столбец7"
    With ActiveSheet.PivotTables("Своднаятаблица1").PivotFields("Столбец5")
        .Orientation = xlDataField
        .Position = 1
    End With
    ActiveSheet.PivotTables("Своднаятаблица1").PivotFields("Столбец6").Orientation = _
        xlDataField
    ActiveWindow.SmallScroll Down:=-9
End Sub


Унас 7 столбцов в файле, п оним он и работал. Теперь мы добавили еще один столбец в начало, и excel выдает ошибку:

"Run-time error '1004'
Недопустимое поле сводной таблицы....и т.д."


Почему? И как это исправить? Теперь этот столбец нужен, но в самой сводной таблице его как не было, так и не будет, т.е. там ,я так понимаю, ничего изменять не нужно.
« Последнее редактирование: 18-12-2007 21:57 от Алексей1153++ » Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #10 : 07-07-2006 05:54 » 

[quote I_wonder]Почему? И как это исправить? Теперь этот столбец нужен, но в самой сводной таблице его как не было, так и не будет, т.е. там ,я так понимаю, ничего изменять не нужн
Код:
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        "Лист1!A1:" & Worksheets("Лист1").Cells.SpecialCells(xlLastCell).Address).CreatePivotTable TableDestination:= _
        "", TableName:="Своднаятаблица1"

Лист1!A1 на Лист1!B1

может поможет
Записан

I Have Nine Lives You Have One Only
THINK!
I_wonder
Гость
« Ответ #11 : 07-07-2006 08:06 » 

Спасибо, может поможет Улыбаюсь
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines