VBA导出Microsoft Word书签和select文本到Excel电子表格

我最近在我的工作中负责了客户端的文档标准化工作。 他们是政府,所以我不能以任何方式作为参考。 抱歉。

我想在VBA中做的是有一个大约80个书签的Word文档(有27个文件,我必须这样做)将书签的.Name.Selection提取到Excel工作表。

作为一个例子,我提供了以下内容:

你好,我的名字是世界!

如果以上是一个单词文件, World! 是书签和( Doc_World )的select将是书签名称。 我正在尝试编写将写入"Doc_World""World!"的macros 到一个Excel表格。

最后一个警告是,目前没有任何标准,所以我需要它只是在当前打开的文档中循环浏览书签。

我实际上设法find了一些我想做的事情,然后拼凑了一些我一起发现的信息来创造一些有用的东西,但是你必须事先创build所有的xls文件。 @RachelHettinger比我自己想出了更多,更优雅的答案。 为了参考,以下是我的frankenstein:

 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 

如果我正确理解你的需求,这个macros应该有所帮助。 它遍历活动文档中的所有书签,并将其导出到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来创buildExcel的实例,所以每次运行macros时都会创build一个新的实例。 (GetObject将使用现有的实例,但如果没有find则失败。)