VBA 宏 - 将 table 数据从 Excel 文件导出到 Word 并为每个工作表创建一个部分
VBA Macro - Export table data from Excel file to Word and create a section for each worksheet
我在 VBA 中使用宏将来自 Excel 的数据导出到 Word。
Sub ExportToWord()
Set obj = CreateObject("Word.Application")
obj.Visible = True
Set newobj = obj.Documents.Add
For Each ws In ActiveWorkbook.Sheets
ws.UsedRange.Copy
newobj.ActiveWindow.Selection.PasteExcelTable False, False, False
newobj.ActiveWindow.Selection.InsertBreak Type:=7
Next
newobj.ActiveWindow.Selection.TypeBackspace
newobj.ActiveWindow.Selection.TypeBackspace
obj.Activate
newobj.SaveAs Filename:=Application.ActiveWorkbook.Path & "\OLD\" & Split(ActiveWorkbook.Name, ".")(0)
End Sub
所有数据和 table 布局都在 Word 中检索。该过程将每个工作表的 usedRange 复制到 Word 并按每个工作表分页。
我想通过将工作表的名称放在每个工作表的 copy/paste 数据之前来更新此脚本。
你能告诉我怎么做吗?
更新代码后:
Sub export_workbook_to_word()
Dim sheetName As String
Set obj = CreateObject("Word.Application")
obj.Visible = True
Set newobj = obj.Documents.Add
For Each ws In ActiveWorkbook.Sheets
sheetName = ws.Name
ws.UsedRange.Copy
newobj.ActiveWindow.TypeText ws.Name
newobj.ActiveWindow.Selection.PasteExcelTable False, False, False
newobj.ActiveWindow.Selection.InsertBreak Type:=7
Next
newobj.ActiveWindow.Selection.TypeBackspace
newobj.ActiveWindow.Selection.TypeBackspace
obj.Activate
newobj.SaveAs Filename:=Application.ActiveWorkbook.Path & "\" & Split(ActiveWorkbook.Name, ".")(0)
End Sub
我在第 newobj.ActiveWindow.TypeText ws.Name
行收到错误 Object doesn't support this property or method
你能帮帮我吗?
尝试将此添加到声明中:
Dim sheetName as String
这在 For Each 语句下面
sheetName = ws.Name
newobj.ActiveWindow.TypeText (sheetName)
其实行
newobj.ActiveWindow.Selection.InsertBreak Type:=7
插入分页符:7 对应于 wdPageBreak。我通过将 7 更改为 2(对应于 wdSectionBreakNextPage)插入了下一页分节符。
Word 中的节没有名称。我在 table:
上方插入工作表的名称
newobj.ActiveWindow.Selection.TypeText sheetName
newobj.ActiveWindow.Selection.Style = ActiveDocument.Styles(-2)
newobj.ActiveWindow.Selection.TypeParagraph
我在 VBA 中使用宏将来自 Excel 的数据导出到 Word。
Sub ExportToWord()
Set obj = CreateObject("Word.Application")
obj.Visible = True
Set newobj = obj.Documents.Add
For Each ws In ActiveWorkbook.Sheets
ws.UsedRange.Copy
newobj.ActiveWindow.Selection.PasteExcelTable False, False, False
newobj.ActiveWindow.Selection.InsertBreak Type:=7
Next
newobj.ActiveWindow.Selection.TypeBackspace
newobj.ActiveWindow.Selection.TypeBackspace
obj.Activate
newobj.SaveAs Filename:=Application.ActiveWorkbook.Path & "\OLD\" & Split(ActiveWorkbook.Name, ".")(0)
End Sub
所有数据和 table 布局都在 Word 中检索。该过程将每个工作表的 usedRange 复制到 Word 并按每个工作表分页。
我想通过将工作表的名称放在每个工作表的 copy/paste 数据之前来更新此脚本。
你能告诉我怎么做吗?
更新代码后:
Sub export_workbook_to_word()
Dim sheetName As String
Set obj = CreateObject("Word.Application")
obj.Visible = True
Set newobj = obj.Documents.Add
For Each ws In ActiveWorkbook.Sheets
sheetName = ws.Name
ws.UsedRange.Copy
newobj.ActiveWindow.TypeText ws.Name
newobj.ActiveWindow.Selection.PasteExcelTable False, False, False
newobj.ActiveWindow.Selection.InsertBreak Type:=7
Next
newobj.ActiveWindow.Selection.TypeBackspace
newobj.ActiveWindow.Selection.TypeBackspace
obj.Activate
newobj.SaveAs Filename:=Application.ActiveWorkbook.Path & "\" & Split(ActiveWorkbook.Name, ".")(0)
End Sub
我在第 newobj.ActiveWindow.TypeText ws.Name
Object doesn't support this property or method
你能帮帮我吗?
尝试将此添加到声明中:
Dim sheetName as String
这在 For Each 语句下面
sheetName = ws.Name
newobj.ActiveWindow.TypeText (sheetName)
其实行
newobj.ActiveWindow.Selection.InsertBreak Type:=7
插入分页符:7 对应于 wdPageBreak。我通过将 7 更改为 2(对应于 wdSectionBreakNextPage)插入了下一页分节符。
Word 中的节没有名称。我在 table:
上方插入工作表的名称 newobj.ActiveWindow.Selection.TypeText sheetName
newobj.ActiveWindow.Selection.Style = ActiveDocument.Styles(-2)
newobj.ActiveWindow.Selection.TypeParagraph