我试图在这里找到一个解决方案:Automatically move MS Word bookmark after an insertion at this point,经过几个小时的挫折,我看不出我错过了什么。
我正在尝试实现一个问题的解决方案,我需要为MS Word生成一系列表格。每个表的结构相同。内容取自Excel中的数据并复制到表中。然后我想将表复制到Word中,将段落添加到单独的表中,返回到Excel并使用新数据填充相同的范围并重复该过程,直到创建了所有表。这就是背景。
我在这里复制的代码只是尝试将表格添加到目前带有书签(ExcelTable)的空白文件中,这样我就可以计算出粘贴表格并自动移动书签的过程。
我得到了#34;类型不匹配"在线上, "设置tmpRng = MyDoc.Bookmarks(" ExcelTable")。范围"尽管已经宣布tmpRng为Range,原始回复显示了。
我错过了什么?
Sub copy_SRA_tables()
'declare all variables
Dim WSheet As Worksheet
Dim Tbl1 As ListObject
Dim IsActive As Boolean
Dim WordApp As Word.Application
Dim MyDoc As Word.Document
Dim AdminEntity As String
Dim strSaveName As String
Dim fdFileDialog As FileDialog
Dim tmpRng As Range
'Activate the Word Document
On Error Resume Next
Set WordApp = GetObject(class:="Word.Application")
Err.Clear
If WordApp Is Nothing Then
Set WordApp = CreateObject(class:="Word.Application")
End If
On Error GoTo 0
WordApp.Visible = True
WordApp.Activate
With WordApp.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = False
.Show
.Execute
txtFilename = .SelectedItems(1)
End With
Set MyDoc = WordApp.Documents(txtFilename)
'Start the process:
ThisWorkbook.Sheets("SAR").Activate
ThisWorkbook.Sheets("SAR").Range("SAR_Details").Copy
WordApp.Visible = True
With MyDoc
.Activate
.Bookmarks("ExcelTable").Range.PasteExcelTable _
LinkedToExcel:=False, _
WordFormatting:=False, _
RTF:=False
End With
Set tmpRng = MyDoc.Bookmarks("ExcelTable").Range
MyDoc.Bookmarks.Add "ExcelTable", ActiveDocument.Range(tmpRng.Start - 1, tmpRng.Start - 1)
End Sub