excel - 将表格添加到文档
问题描述
嗨,当我尝试将表格从 Excel 添加到 Word 文档时,我收到此错误 450。我从 word 宏记录器中复制了代码。还尝试使用此处的语法https://docs.microsoft.com/en-us/office/vba/api/word.tables.add 例如 Tables.Add(Selection.Range, 3, 5) 并将其设置为表对象,但仍然没有运气。
Sub ExcelToWord()
'
' Select data in excel and copy to GIR
'
'
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Dim wb As Workbook
Dim ws As Worksheet
Dim wdApp As Word.Application
Dim GIR As Word.Document
Dim GIRName As String
Dim GEOL As String
Dim Tbl As Long
Dim NewTbl As Word.Table
Set wdApp = New Word.Application '<<< Create a Word application object
wdApp.Visible = True '<<<< Open word so you can see any errors
GIRName = Application.GetOpenFilename(Title:="Please choose GIR to open", _
FileFilter:="Word Files *.docm* (*.docm*),")
Set GIR = wdApp.Documents.Open(GIRName) '<< call Documents.Open on the word app
'Loop through excel workbook to copy data
Set wb = ThisWorkbook
Set ws = ActiveSheet
For Each ws In wb.Worksheets
If UCase(ws.Name) <> "TEMPLATE" And ws.Visible = True Then
ws.Name = Replace(ws.Name, "(Blank)", "NoGEOLCode")
ws.Activate
GEOL = Range("C9").Value
Tbl = 1
Range("A14").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
'Paste each worksheet's data into word as new heading
wdApp.Selection.GoTo What:=wdGoToHeading, Which:=wdGoToFirst, Count:=4, Name:=""
wdApp.Selection.EndKey Unit:=wdLine
wdApp.Selection.TypeParagraph
wdApp.Selection.Style = ActiveDocument.Styles("Heading 2")
wdApp.Selection.TypeText Text:=GEOL
wdApp.Selection.TypeParagraph
Set NewTbl = ActiveDocument.Tables.Add(Range:=Selection.Range, NumRows:=53, NumColumns _
:=7, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
wdAutoFitWindow)
With wdApp.Selection.Tables(Tbl)
If .Style <> "Table1" Then
.Style = "Table1"
End If
.ApplyStyleHeadingRows = True
.ApplyStyleLastRow = False
.ApplyStyleFirstColumn = True
.ApplyStyleLastColumn = False
.ApplyStyleRowBands = True
.ApplyStyleColumnBands = False
End With
wdApp.Selection.PasteAndFormat (wdFormatPlainText)
Tbl = Tbl + 1
wdApp.Selection.GoTo What:=wdGoToSection, Which:=wdGoToFirst, Count:=6, Name:=""
wdApp.Selection.MoveUp Unit:=wdLine, Count:=1
wdApp.Selection.TypeParagraph
End If
Next
GIR.Save
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
解决方案
推荐阅读
- autohotkey - Autohotkey 无法在 AutoCAD 中移动鼠标
- python - Tkinter 画布十六进制代码颜色不一致?
- php - PHP mbstring 不起作用,但我设置了所有内容
- c# - 如何从 .NET 5 Worker Service 中的 app.config 读取数据?
- c# - LottieSharp(WPF) 在与 UWP 项目桥接时崩溃
- mysql - 为什么 MySQL 更喜欢 ENUM('N','Y') 而不是 BOOL?
- flutter - 如何仅针对当前页面制作具有不同页面大小的 PageView
- javascript - this.functionName 未定义
- windows-10 - NFC-list 使用 ACR122U 读写器无法找到 USB 总线(没有此类文件或目录)
- c# - 当另一个应用程序全屏运行时,WPF 应用程序无法正确绘制