Динамическое вытягивание книг Excel - PullRequest
0 голосов
/ 07 ноября 2019

Я отвечаю за еженедельные отчеты о работе. Я использую персональный модуль VBA для создания кода. Все рабочие книги будут использовать одно и то же соглашение об именах, единственная разница будет заключаться в датах в конце рабочей книги. Например: я хочу вытащить из книги A, названной «workbook A 10.28.19.xlsx», в книгу B, названную «workbook B 11.4.19.xlsx». Как я могу сделать так, чтобы мне не приходилось вручную менять имя книги в коде каждую неделю?

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

Это то, что я имею до сих пор:

    Workbooks("workbook A 
    10.28.19.xlsx").Worksheets("sheet1").Range("AD:AE").Copy _
    Workbooks("workbook B 
    11.4.19.xlsx").Worksheets("sheet1").Range("AD:AE")
    End Sub

Код работает нормально, просто нужно сделать его динамичным, если это возможно

РЕДАКТИРОВАТЬ: Спасибо за комментарии до сих пор. Некоторые пояснения, которые я добавлю здесь: «рабочая книга A / B», которую я использовал в этом примере, являются фиксированными именами, и единственное, что изменится, - это дата. В отчете всегда будут использоваться даты понедельника, потому что мне нужно смотреть на итоги WoW, чтобы оно не имело значения для выходных. Когда наступит 2020 год, даты действительно будут изменены на xx.xx.20.

1 Ответ

0 голосов
/ 11 ноября 2019

Полагаю, это то, что вам нужно.

Сначала будет выглядеть, если сегодня понедельник, а затем использовать текущую дату в качестве рабочей книги A и B в качестве понедельника последних недель.
Если это не понедельник, тогда он найдет предыдущий понедельник как A, а одну неделю назад найдетпредыдущий понедельник как B.

If Weekday(Date, vbMonday) = 1 Then
    wkbA = Format(Date, "MM.D.YY") & ".xlsx"
    wkbB = Format(Date - Weekday(Date - 1, vbMonday), "MM.D.YY") & ".xlsx"
Else
    wkbA = Format(Date - Weekday(Date - 1, vbMonday), "MM.D.YY") & ".xlsx"
    wkbB = Format(Date - Weekday(Date - 7, vbMonday), "MM.D.YY") & ".xlsx"
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...