У меня есть пользователь, который вводит 20 номеров магазинов в ячейки от A1 до A20. Ячейки с B1 по B20 будут иметь гиперссылку, которая есть у каждого номера магазина, например: ячейка с B1 по B20 будет иметь следующую формулу: =HYPERLINK("C:\"Номер магазина "&A1&".xls")
- Как открыть все эти гиперссылки одновременно, не щелкая ячейки с B1 по B20 (20 раз)?
- Что, если пользователь хочет видеть только 10 файлов вместо 20? Если я создам VBA, который открывает все гиперссылки в ячейках от B1 до B20, но пользователь вводит только 10 магазинов, у меня возникнет проблема отладки.
- После того, как эти файлы открыты, как мне объединить их в 1 файл, содержащий до 20 листов/вкладок? Каждый файл хранилища имеет одинаковый формат и одно и то же имя листа: "Лист1".
Большое спасибо за помощь!!
Ответ 1 · Tim Williams
Это может помочь вам приступить к части 3.
Sub ConsolidateAllSheet1()
Dim wbCons As Excel.Workbook
Dim wb As Excel.Workbook
Dim wbName As String
Set wbCons = Workbooks.Add()
For Each wb In Application.Workbooks
wbName = wb.Name
If wbName Like "Store Number*" And _
wbName <> ThisWorkbook.Name Then
wb.Sheets("Sheet1").Copy _
after:=wbCons.Sheets(wbCons.Sheets.Count)
wbCons.Sheets(wbCons.Sheets.Count).Name = _
Replace(wbName, ".xls", "")
'wb.Close False 'save without changes
End If
Next wb
End Sub
Ответ 2 · rajah9
и добро пожаловать в StackOverflow. Я нашел хороший ответ на ваши вопросы 1 и 2 здесь. (Но, как прокомментировал OP, это для веб-гиперссылок, а не для файловых гиперссылок.)
Я не решил вопрос 3 с помощью VBA, но я сделал это вручную, щелкнув правой кнопкой мыши вкладку, которую нужно скопировать, а затем выбрав "Переместить или скопировать" во всплывающем окне контекста. Затем я копирую лист во вновь созданную книгу.
РЕДАКТИРОВАТЬ: я бы посоветовал вам изменить гиперссылки на простой текст. Затем следующий VBA откроет имена файлов в выбранных ячейках.
Dim fileName As String
For Each vCell In Selection
fileName = vCell.Value
Workbooks.Open fileName
Next vCell