Индекс вне диапазона при копировании диапазона в другую книгу - решено - PullRequest
0 голосов
/ 01 ноября 2019

Я пишу систему отчетности, в которой пользователь заполняет форму, а кнопка формы запускает макрос для сохранения файла с именем, основанным на нескольких полях, включая отметку времени.

Все данные такжена втором листе, но в одной строке для простоты копирования на мастер-лист.

Я пытаюсь расширить макрос сохранения, чтобы скопировать эту строку в последнюю строку второй рабочей книги.

Это было успешно, когда макрос был запущен из отдельной рабочей книги, но я не могу на всю жизнь понять, как это сделать из самого файла.

Я трижды проверил сами пути,Я знаю, что они правы, когда создаются новые файлы, я запустил 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

СПАСИБО.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...