Как открыть листы и объединить их в 1 файл с несколькими листами?

У меня есть пользователь, который вводит 20 номеров магазинов в ячейки от A1 до A20. Ячейки с B1 по B20 будут иметь гиперссылку, которая есть у каждого номера магазина, например: ячейка с B1 по B20 будет иметь следующую формулу: =HYPERLINK("C:\"Номер магазина "&A1&".xls")

  1. Как открыть все эти гиперссылки одновременно, не щелкая ячейки с B1 по B20 (20 раз)?
  2. Что, если пользователь хочет видеть только 10 файлов вместо 20? Если я создам VBA, который открывает все гиперссылки в ячейках от B1 до B20, но пользователь вводит только 10 магазинов, у меня возникнет проблема отладки.
  3. После того, как эти файлы открыты, как мне объединить их в 1 файл, содержащий до 20 листов/вкладок? Каждый файл хранилища имеет одинаковый формат и одно и то же имя листа: «Лист1».

Большое спасибо за помощь!!


person Cindy    schedule 13.06.2011    source источник
comment
=ЕСЛИ(A1‹›,ГИПЕРССЫЛКА(C:\Номер магазина &A1&.xls),)   -  person Tim Williams    schedule 14.06.2011


Ответы (2)


Это может помочь вам приступить к части 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
person Tim Williams    schedule 13.06.2011

и добро пожаловать в StackOverflow. Я нашел хороший ответ на ваши вопросы 1 и 2 здесь. (Но, как прокомментировал OP, это для веб-гиперссылок, а не для файловых гиперссылок.)

Я не решил вопрос 3 с помощью VBA, но я сделал это вручную, щелкнув правой кнопкой мыши вкладку, которую нужно скопировать, а затем выбрав «Переместить или скопировать» во всплывающем окне контекста. Затем я копирую лист во вновь созданную книгу.

РЕДАКТИРОВАТЬ: я бы посоветовал вам изменить гиперссылки на простой текст. Затем следующий VBA откроет имена файлов в выбранных ячейках.

Dim fileName As String
For Each vCell In Selection
    fileName = vCell.Value
    Workbooks.Open fileName
Next vCell
person rajah9    schedule 13.06.2011
comment
Я думаю, что они имеют в виду открытие гиперссылок веб-адреса. - person Cindy; 14.06.2011