VBA Экспорт закладок и текста Microsoft Word в электронную таблицу Excel - PullRequest
2 голосов
/ 22 ноября 2011

Я недавно был назначен ответственным за стандартизацию документов для клиента на моей работе.Это правительство, поэтому я не могу ничего публиковать в качестве примеров для справки.Извините.

В VBA я пытаюсь создать документ Word, содержащий около 80 закладок (для этого нужно сделать 27 файлов), извлечь .Name закладки и .Selection к листу Excel.

В качестве примера я предлагаю следующее:

Здравствуйте, меня зовут Мир!

Если вышеупомянутый текстовый документ, World! - это .Selection закладки, а (Doc_World) будет именем закладки.Я пытаюсь записать макрос, который будет записывать "Doc_World" и "World!" в таблицу Excel.

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

Мне действительно удалось найти что-то вроде того, что я делал, и затем скомбинировал некоторую другую информацию, которую я нашел вместе, чтобы создать что-то, что работало, но вы должны были создать все файлы xls преждерука.У @RachelHettinger гораздо более элегантный ответ, чем я сам придумал.Для справки, мой Франкенштейн:

Sub WdBkMktoXL()
Dim ObjExcel As Object, ObjWorkBook As Object, ObjWorksheet As Object
Dim Bmk() As String
Dim x As Integer, J As Integer

Set ObjExcel = CreateObject("EXCEL.APPLICATION")
Set ObjWorkBook = ObjExcel.Workbooks.Open("C:\Users\Zach\Desktop\ETTP\TermsAndConditions\1.xlsx")
Set ObjWorksheet = ObjWorkBook.Worksheets("Sheet1")

x = ActiveDocument.Bookmarks.Count
ReDim Bmk(x)
For J = 1 To x
Bmk(J) = ActiveDocument.Bookmarks(J).Name
ObjWorksheet.Range("A" & J) = ActiveDocument.Bookmarks(J).Range.Text
ObjWorksheet.Range("B" & J) = ActiveDocument.Bookmarks(J).Name
Next J

ObjWorkBook.Save
ObjWorkBook.Close
Set ObjWorksheet = Nothing
Set ObjWorkBook = Nothing
ObjExcel.Quit
Set ObjExcel = Nothing
End Sub

1 Ответ

4 голосов
/ 22 ноября 2011

Если я правильно понимаю ваши потребности, этот макрос должен помочь.Он просматривает все закладки в активном документе и экспортирует их в новый файл в Excel:

Sub ExportBookmarksToExcel()
    Dim bk As Bookmark
    Dim appXl As Excel.Application
    Dim wbk As Excel.Workbook
    Dim wst As Excel.Worksheet
    Dim lRow As Long

    Set appXl = CreateObject("Excel.Application")
    With appXl
        .Visible = True
        Set wbk = .Workbooks.Add
        Set wst = wbk.Worksheets(1)
        lRow = 1
        wst.Cells(lRow, 1) = "Bookmark name"
        wst.Cells(lRow, 2) = "Bookmark text"
        wst.Rows(lRow).Font.Bold = True
    End With

    For Each bk In ActiveDocument.Bookmarks
        lRow = lRow + 1
        wst.Cells(lRow, 1) = bk.Name
        wst.Cells(lRow, 2) = bk.Range.Text
    Next bk
    wst.UsedRange.Columns.AutoFit

End Sub

Примечание 1. Поскольку этот код использует раннее связывание, требуется ссылка на библиотеку Excel (Инструменты: Ссылки).Примечание 2. Он использует CreateObject для создания экземпляра Excel, поэтому при каждом запуске макроса создается новый экземпляр.(GetObject будет использовать существующий экземпляр, но завершится ошибкой, если ни один не найден.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...