Я пишу систему отчетности, в которой пользователь заполняет форму, а кнопка формы запускает макрос для сохранения файла с именем, основанным на нескольких полях, включая отметку времени.
Все данные такжена втором листе, но в одной строке для простоты копирования на мастер-лист.
Я пытаюсь расширить макрос сохранения, чтобы скопировать эту строку в последнюю строку второй рабочей книги.
Это было успешно, когда макрос был запущен из отдельной рабочей книги, но я не могу на всю жизнь понять, как это сделать из самого файла.
Я трижды проверил сами пути,Я знаю, что они правы, когда создаются новые файлы, я запустил msgbox в коде, чтобы проверить имя файла и переменную тоже.
timestampedfile = Worksheets("single_line").Range("b3")
totalpath = Path & timestampedfile & ".xlsm"
ActiveWorkbook.SaveCopyAs filename:=totalpath
master_wb = "s:\blah\blah\blah.xlsx"
master_sht = "Master_Database"
contact_wb = totalpath
contact_sht = "single_line"
Workbooks.Open (master_wb)
Workbooks.Open (contact_wb)
MsgBox (totalpath)
Workbooks(contact_wb).Worksheets(contact_sht).Range("A3:AQ3").Copy Worksheets(master_wb).Sheets(master_sht).Range("A" & Rows.Count).End(xlUp)(2)
'
Обе книги открыты, так что я знаю, что пути правильные, кто-нибудь может помочь?
Редактировать: Решено благодаря комментарию о переменных книги для BigBen
Код изменен на:
Dim master_wb As Workbook
Dim contact_wb As Workbook
Dim master_sht As Worksheet
Dim contact_sht As Worksheet
Path = "S:\blah\" & Worksheets("report").Range("c8") & "\"
filename = Worksheets("back_end_formulas").Range("e10")
timestampedfile = Worksheets("single_line").Range("b3")
totalpath = Path & timestampedfile & ".xlsm"
ActiveWorkbook.SaveCopyAs filename:=totalpath
SetAttr totalpath, vbReadOnly
Set master_wb = Workbooks.Open("S:\blah\Master_Database2.xlsx")
Set master_sht = master_wb.Sheets("Master_Database")
Set contact_wb = Workbooks.Open(totalpath)
Set contact_sht = contact_wb.Sheets("single_line")
ThisWorkbook.Activate
contact_sht.Range("A3:AQ3").Copy master_sht.Range("A" & Rows.Count).End(xlUp)(2)
master_wb.Close SaveChanges:=True
contact_wb.Close SaveChanges:=False
ActiveWorkbook.Close SaveChanges:=False
СПАСИБО.