我实际上需要你帮助修改这个宏代码。我从其他地方得到了这个代码(抱歉,忘记了他的名字!)。基本上,我有来自 Excel Sheet1 的表数据源。我需要将该表传输到 MS Word,同时保留边框、字体大小、自动调整等格式,并使用名为“书签”的书签。
需要注意的是:
- 书签的位置位于最后一段。我的 Word 文件中有超过 12 段,但表格应放在最后一段。
- 请注意,表数据源中的行数和列数是动态的。这意味着,行数和列数不固定。它可以改变。我现有的宏代码适用于此。但是,它完全删除了现有段落。这张桌子取代了我档案中的所有内容。我不知道将该表放置到书签所在位置的确切宏代码。
感谢您对第 2 项的帮助。以下是代码:
Private Sub CommandButton1_Click()
On Error Resume Next
' FIRST GET THE ROWS COLUMNS OF A USED RANGE.
Dim iTotalRows As Integer ' GET TOTAL USED RANGE ROWS.
iTotalRows = Worksheets("sheet1").UsedRange.Rows.Count
Dim iTotalCols As Integer ' GET TOTAL COLUMNS.
iTotalCols = Worksheets("sheet1").UsedRange.Columns.Count
' WORD OBJECT.
Dim oWord As Object
Set oWord = CreateObject(Class:="Word.Application")
oWord.Visible = True
oWord.Activate
' ADD A DOCUMENT TO THE WORD OBJECT.
Dim oDoc
Set oDoc = oWord.Documents.Open("C:\Macro\samplebookmark1.docx")
' CREATE A RANGE FOR THE TABLE INSIDE WORD DOCUMENT.
Dim oRange
Set oRange = oDoc.Range
' CREATE AND DEFINE TABLE STRUCTURE USING
' THE ROWS AND COLUMNS EXTRACTED FROM EXCEL USED RANGE.
oDoc.Tables.Add oRange, iTotalRows, iTotalCols
' CREATE A TABLE OBJECT.
Dim oTable
Set oTable = oDoc.Tables(1)
oTable.Borders.Enable = True ' YES, WE WANT BORDERS.
Dim iRows, iCols As Integer
' LOOP THROUGH EACH ROW AND COLUMN TO EXTRACT DATA IN EXCEL.
For iRows = 1 To iTotalRows
For iCols = 1 To iTotalCols
Dim txt As Variant
txt = Worksheets("Sheet1").Cells(iRows, iCols)
oTable.cell(iRows, iCols).Range.Text = txt ' COPY (OR WRITE) DATA TO THE TABLE.
' BOLD HEADERS.
If Val(iRows) = 1 Then
objTable.cell(iRows, iCols).Range.Font.Bold = True
End If
Next iCols
Next iRows
Set oWord = Nothing
End Sub
问题出在这一行内:
Set oRange = oDoc.Range
就像现在一样,它定义整个文档范围而不是书签范围。
你应该使用类似的东西:
Set oRange = oDoc.Bookmarks("BookmarkName").Range
Concerning your new problem, one way to fix it is to put table directly into document's last paragraph without using a bookmark.
Set oRange = oDoc.Range.Paragraphs(oDoc.Range.Paragraphs.Count).Range
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)