我是 Excel VBA 的新手,对编码也不太了解,并且面临这个问题 -
我正在尝试将单张纸中的表格列表复制到word,但是表格被粘贴在文档的开头,是否有任何方法可以粘贴到书签,代码也可以包含从VBA本身格式化的方式。
Sub ListObjectToWord_Multi()
'Declare Word Variables
Dim WrdApp As Object
Dim WrdDoc As Word.Document
Dim WrdTbl As Word.Table
'Declare Excel Variables
Dim ExcLisObj As ListObject
Dim WrkSht As Worksheet
'Create a new instance of word
Set WrdApp = CreateObject("Word.Application")
With WrdApp
.Visible = True
.Documents.Open Range("F3").Value
.Activate
'Loop through all the Worksheets in Active Workbook
For Each WrkSht In ThisWorkbook.Worksheets
'Loop thorugh all objects on the active sheet
For Each ExcLisObj In WrkSht.ListObjects
'Copy the List Object
ExcLisObj.Range.Copy
'Pause the excel Application for few seconds
Application.Wait Now() + #12:00:03 AM#
'Go to New Page
WrdApp.Selection.GoTo What:=wdGoToBookmarks, Which:=wdGoTo
'Paste List Objects into the word document
With WrdApp.Selection
.PasteExcelTable LinkedToExcel:=True, WordFormatting:=True, RTF:=True
End With
'Clear my Clipboard
Application.CutCopyMode = False
Next
'Go to First Page
WrdApp.Selection.GoTo What:=wdGoToPage, Which:=wdGoToFirst
Next
End With
End Sub
这是我使用的代码,请帮助提供任何可以解决我的问题的见解
请尝试一下。
Option Explicit
Sub ListObjectToWord_Multi()
'Declare Word Variables
Dim WrdApp As Object
Dim WrdDoc As Word.Document
Dim WrdTbl As Word.Table
'Declare Excel Variables
Dim ExcLisObj As ListObject
Dim WrkSht As Worksheet
Dim i As Long, bkCount As Long
'Create a new instance of word
Set WrdApp = CreateObject("Word.Application")
' Set WrdApp = GetObject(, "Word.Application")
With WrdApp
.Visible = True
.Documents.Open Range("F3").Value
Set WrdDoc = .ActiveDocument
bkCount = WrdDoc.Bookmarks.Count
End With
i = 1
'Loop through all the Worksheets in Active Workbook
For Each WrkSht In ThisWorkbook.Worksheets
'Loop thorugh all objects on the active sheet
For Each ExcLisObj In WrkSht.ListObjects
If i > bkCount Then
MsgBox "The count of bookmarks is less than listbox."
Exit Sub
Else
WrdApp.Selection.GoTo What:=wdGoToBookmark, Name:=WrdDoc.Bookmarks(i).Name
End If
'Paste List Objects into the word document
With WrdApp.Selection
.Collapse wdCollapseEnd
ExcLisObj.Range.Copy
'Pause the excel Application for few seconds
Application.Wait Now() + TimeSerial(0, 0, 3)
.PasteExcelTable LinkedToExcel:=True, WordFormatting:=True, RTF:=True
End With
'Clear my Clipboard
Application.CutCopyMode = False
i = i + 1
Next
Next
'Go to First Page
WrdApp.Selection.HomeKey Unit:=wdStory
End Sub