通过VBA从Excel复制表格后在word中设置表格格式
我想将Excel中的文本复制到Word文件中,在其中添加一个分页符(第50行和第51行之间),并在Word文件中设置表格的格式将表格的宽度调整到Word文档的页面 我尝试了InsertBreak和SetWidth方法,但不知何故产生了错误(语法或对象未定义) 上面是我目前使用的代码,它可以工作,但在第50行之后没有分页符,表的格式也不正确,即列太宽通过VBA从Excel复制表格后在word中设置表格格式,excel,vba,ms-word,Excel,Vba,Ms Word,我想将Excel中的文本复制到Word文件中,在其中添加一个分页符(第50行和第51行之间),并在Word文件中设置表格的格式将表格的宽度调整到Word文档的页面 我尝试了InsertBreak和SetWidth方法,但不知何故产生了错误(语法或对象未定义) 上面是我目前使用的代码,它可以工作,但在第50行之后没有分页符,表的格式也不正确,即列太宽 有人能帮我/为我指出正确的方向吗?试试下面的代码,并根据您的需要进行定制: Sub Button1() ' Define object
有人能帮我/为我指出正确的方向吗?试试下面的代码,并根据您的需要进行定制:
Sub Button1()
' Define object variables
Dim wordObject As Object
Dim wordDocument As Object
Dim wordTable As Object
Dim rangeToCopy As Range
' Define other variables
Dim sheetName As String
Dim rangeAddress As String
Dim rowToInsertBreak As Integer
' >>>>>Customize
sheetName = "Sheet1" ' Sheet name in Excel
rangeAddress = "C15:C73" ' Range in Excel to copy from
rowToInsertBreak = 25 ' (index starts at 0 and first row is the header
' Initiate word object
Set wordObject = CreateObject("Word.Application")
' Add a new document
Set wordDocument = wordObject.Documents.Add
' Make the window visible
wordObject.Visible = True
' Define the range to copy
Set rangeToCopy = ThisWorkbook.Worksheets(sheetName).Range(rangeAddress)
' Copy the range
rangeToCopy.Copy
' Paste it into word
wordDocument.Paragraphs(1).Range.PasteExcelTable _
LinkedToExcel:=False, _
WordFormatting:=False, _
RTF:=False
' Reference the table we just pasted
Set wordTable = wordDocument.Tables(1)
' Autofit the table
wordTable.AutoFitBehavior 2 ' wdAutoFitWindow: Check https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2003/aa211923(v%3Doffice.11)
' Insert the page break after row
wordTable.Rows(rowToInsertBreak).Range.InsertBreak Type:=7 ' wdPageBreak
' Clear The Clipboard
Application.CutCopyMode = False
End Sub
以下是一些您需要查看的链接:如何将excel表格正确复制并粘贴到word:
注意:通常最好用这个词作为参考
如何处理Word表格中的分页符:
网站规则是每个问题一个问题。你有两个。请使用问题下方的链接将其缩小到单个主题(我建议使用标题中提到的主题)。还包括您尝试过但不起作用的内容、它产生的错误以及导致错误的行。我们还需要确切地知道你想要什么结果。“表的格式也不正确,即列太宽”意味着问题不仅仅是列宽……亲爱的Ricardo,非常感谢!您的答案非常有用,包含了使文件正常工作所需的所有元素。非常感谢!
Sub Button1()
' Define object variables
Dim wordObject As Object
Dim wordDocument As Object
Dim wordTable As Object
Dim rangeToCopy As Range
' Define other variables
Dim sheetName As String
Dim rangeAddress As String
Dim rowToInsertBreak As Integer
' >>>>>Customize
sheetName = "Sheet1" ' Sheet name in Excel
rangeAddress = "C15:C73" ' Range in Excel to copy from
rowToInsertBreak = 25 ' (index starts at 0 and first row is the header
' Initiate word object
Set wordObject = CreateObject("Word.Application")
' Add a new document
Set wordDocument = wordObject.Documents.Add
' Make the window visible
wordObject.Visible = True
' Define the range to copy
Set rangeToCopy = ThisWorkbook.Worksheets(sheetName).Range(rangeAddress)
' Copy the range
rangeToCopy.Copy
' Paste it into word
wordDocument.Paragraphs(1).Range.PasteExcelTable _
LinkedToExcel:=False, _
WordFormatting:=False, _
RTF:=False
' Reference the table we just pasted
Set wordTable = wordDocument.Tables(1)
' Autofit the table
wordTable.AutoFitBehavior 2 ' wdAutoFitWindow: Check https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2003/aa211923(v%3Doffice.11)
' Insert the page break after row
wordTable.Rows(rowToInsertBreak).Range.InsertBreak Type:=7 ' wdPageBreak
' Clear The Clipboard
Application.CutCopyMode = False
End Sub