Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: CindyОтветов: 2

У меня есть пользователь, который вводит 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".

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

  • =ЕСЛИ(A1‹›,ГИПЕРССЫЛКА(C:\Номер магазина &A1&.xls),) Tim Williams 14.06.2011

excelvbahyperlinkconsolidation

Ответы

Ответ 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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы