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则失败。)