Страницы: 1
RSS
Как сохранить файл по адресу из ячейки другой книги с которой его запустили
 
Доброй ночи.

Подскажите, пож-та и дайте спокойно заснуть :),
как мне пересохранить открываемый макросом dbf файл в формат xls используя при этом путь для сохранения, находящийся в ячейке книги, с которого запустили макрос.
Как нужно исправить код чтобы обратиться к книге с макросом?

Код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub Пересохранение()
   
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
     
    Workbooks.Open [F1] ' файл dbf находящийся по адресу в ячейке F1
        
    ' хочу сохранить файл в формат xls по адресу в ячейке С1 (книга с макросом)
    ThisWorkbook.SaveAs Filename:=[C1], _
    FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
    ReadOnlyRecommended:=False, CreateBackup:=False
     
    ActiveWindow.Close False
    Application.DisplayAlerts = True
 
End Sub
Код
1
Если вместо ThisWorkbook использовать ActiveWorkbook, то не сохраняет.
Код
1
Вместо ThisWorkbook.SaveAs Filename:=[C1], _ было
Код
1
ActiveWorkbook.SaveAs Filename:="E:\1\fstld2_4.xls", _
Изменено: MedvedevAV - 08.03.2014 01:53:02
Если не можешь победить беспорядок, возглавь его
 
Код
1
2
3
4
5
6
7
8
9
10
11
12
Sub Пересохранение()
    Application.ScreenUpdating = False: Application.DisplayAlerts = False
 
    Dim sh As Worksheet, WB As Workbook
    Set sh = ActiveSheet        ' запоминаем лист, с которого берем имена файлов
 
    Set WB = Workbooks.Open(sh.Range("F1"))        ' открываем файл dbf
    WB.SaveAs sh.Range("C1"), xlWorkbookNormal        ' сохраняем в формате XLS
    WB.Close False        ' закрываем файл
 
    Application.DisplayAlerts = True: Application.ScreenUpdating = True
End Sub
 
Спасибо, получилось.
Если нужно обратиться к конкретному листу книги с которой запустился макрос (например Лист2 "Настройка" ;)
как правильно указать это в коде? Добавить в Set sh = ActiveSheet.Sheets("Лист2") ?!
Если не можешь победить беспорядок, возглавь его
 
Присвойте листу кодовое имя, - и по нему обращайтесь

или же так:
Код
1
Set sh = ThisWorkbook.worksheets("Лист2")
 
Благодарю вас. Адаптировал под свою задачу, все получилось.
Мой LevelUp +1 :)
Если не можешь победить беспорядок, возглавь его
Страницы: 1
Читают тему
Наверх
Loading...