Как перейти по гиперссылке в Excel и закрыть исходный файл? - PullRequest
0 голосов
/ 08 июля 2020

У меня есть серия файлов с именами, которые соответствуют соглашению об именах, которое включает дату окончания недели. Например: 2020 Поле - PP 28 - 07-05.xlsm

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

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

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

Я попытался немного поиграть с некоторыми код, но я не знаю достаточно VB, чтобы высморкаться.

Я придумал это, но, поскольку он не работает, я знаю, что это будет еще кое-что:

Sub CommandButton1()

    Workbooks.Open Filename:=ActiveWorkbook.Sheets(1).Cells(1, 10).Value
    ActiveWorkbook.Close savechanges:=True
    
End Sub

В случае необходимости формула в ячейке следующая:

=HYPERLINK(CONCATENATE(YEAR(C1)," Field - PP ",IF((WEEKNUM(C1+14,2))<10,0,""),WEEKNUM(C1+14,2)," - ",IF(MONTH(C1+7)<10,"0"&MONTH(C1+7),MONTH(C1+7)),"-",IF(DAY(C1+7)<10,"0"&DAY(C1+7),DAY(C1+7)),".xlsm"),"Next PP")

C1 - это ячейка с текущей датой окончания недели для файлов.

Некоторая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 08 июля 2020

Попробуйте что-то вроде этого:

Sub CommandButton1()
    Dim dt, f
    dt = ActiveSheet.Range("C1").Value
    f = Format(dt, "yyyy") & " Field - PP " & Format(dt + 14, "ww") & _
        " - " & Format(dt + 7, "mm") & " - " & Format(dt + 7, "dd") & ".xlsm"
    Debug.Print "Opening: " & ThisWorkbook.Path & "\" & f
    Workbooks.Open ThisWorkbook.Path & "\" & f
    ThisWorkbook.Close savechanges:=True
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...