使用 VBA 向 Word 文档添加连续信息
Adding consecutive information to Word Document using VBA
我正在尝试使用 VBA 将 Excel 中的信息添加到 Word 中,同时将 text/paragraphs 添加到该 word 文档中。
我有以下代码,由于某种原因导致添加了 table 注释。我想添加table然后连续添加内容。
尝试修改段落编号但没有成功?
限定词 - 我是 VBA 的新手,不确定我是否做对了。
这是我的代码:
Sub create_Word()
Dim tblRange As Excel.Range
Dim WrdRange As Word.Range
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim WordTable As Word.Table
Dim intRows
Dim intColumns
'Define number of rows
intNoOfRows = 2
intNoOfColumns = 2
' Check if word is open, otherwise open word
On Error Resume Next
Set WordApp = GetObject(class:="Word.Application")
If WordApp Is Nothing Then Set WordApp = CreateObject(class:="Word.Application")
' Make word visible and activate the program
WordApp.Visible = True
WordApp.Activate
' Create document inside word
Set WordDoc = WordApp.Documents.Add
'Section 1
With WordApp.Selection
.Paragraphs.Alignment = wdAlignParagraphLeft
.Font.Size = 12
.TypeText "Heading" & vbCrLf & vbCrLf & "Date: _____________" & vbCrLf & vbCrLf
.BoldRun
.Font.Size = 12
.TypeText "Content" & vbCrLf
.TypeText "Period ended: 31 December 2020" & vbCrLf & vbCrLf
.BoldRun
End With
'Add table
Set WrdRange = WordDoc.Paragraphs(11).Range
WordDoc.Tables.Add WrdRange, intNoOfRows, intNoOfColumns
Set WordTable = WordDoc.Tables(1)
WordTable.Borders.Enable = True
End Sub
更新
根据下面的建议,我修改了代码,这导致 tables 出于某种原因合并。已应用以下代码:
Set WordDoc = WordApp.Documents.Add
'Section 1
With WordApp.Selection
.Paragraphs.Alignment = wdAlignParagraphLeft
.Font.Size = 12
.TypeText "Test Text 1"
End With
'Add table 1
Set WrdRange = WordDoc.Paragraphs.Last.Range
Set WordTable = WordDoc.Tables.Add(WrdRange, intNoOfRows, intNoOfColumns)
WordTable.Borders.Enable = True
'Section 2
With WordApp.Selection
.TypeText "Test Text 2" & vbCrLf
End With
'Add table 1
Set WrdRange = WordDoc.Paragraphs.Last.Range
Set WordTable = WordDoc.Tables.Add(WrdRange, intNoOfRows, intNoOfColumns)
WordTable.Borders.Enable = True
您的第一个问题是您在获取Word应用程序后没有重置错误处理。那段代码应该是:
On Error Resume Next
Set WordApp = GetObject(class:="Word.Application")
If WordApp Is Nothing Then Set WordApp = CreateObject(class:="Word.Application")
On Error GoTo 0
您正在尝试向第 11 段添加 table,但据我统计,您的文档仅包含 8 个段落。如果您尝试将 table 添加到文档末尾,那么您可以使用:
Set WrdRange = WordDoc.Paragraphs.Last.Range
或:
Set WrdRange = WordDoc.Characters.Last
Add
方法是一个函数,将 return 添加对象,因此您应该利用它,例如
Set WordTable = WordDoc.Tables.Add(WrdRange, intNoOfRows, intNoOfColumns)
WordTable.Borders.Enable = True
或:
With WordDoc.Tables.Add(WrdRange, intNoOfRows, intNoOfColumns)
.Borders.Enable = True
End With
您的代码还包含一些未声明的变量。您可以通过在代码模块顶部添加 Option Explicit 来避免这些错误。当您有未声明的变量时,这将阻止您的代码编译。要将其自动添加到新模块,请打开 VBE 并转到工具 |选项。在“选项”对话框中,确保选中“要求变量声明”。
编辑:
停止使用 Selection
。在使用 Word 或 Excel.
时,很少需要 select 任何东西
您的 table 正在加入,因为他们彼此关注。这是因为您正在使用 Selection
添加文本,即使当前 selection 在 table.
之前
变化:
With WordApp.Selection
.TypeText "Test Text 2" & vbCrLf
End With
收件人:
WordDoc.Paragraphs.Last.Range.Text = "Test Text 2" & vbCr
熟悉 VBE 中的帮助工具:Intellisense、对象浏览器和联机帮助。
我正在尝试使用 VBA 将 Excel 中的信息添加到 Word 中,同时将 text/paragraphs 添加到该 word 文档中。
我有以下代码,由于某种原因导致添加了 table 注释。我想添加table然后连续添加内容。
尝试修改段落编号但没有成功?
限定词 - 我是 VBA 的新手,不确定我是否做对了。
这是我的代码:
Sub create_Word()
Dim tblRange As Excel.Range
Dim WrdRange As Word.Range
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim WordTable As Word.Table
Dim intRows
Dim intColumns
'Define number of rows
intNoOfRows = 2
intNoOfColumns = 2
' Check if word is open, otherwise open word
On Error Resume Next
Set WordApp = GetObject(class:="Word.Application")
If WordApp Is Nothing Then Set WordApp = CreateObject(class:="Word.Application")
' Make word visible and activate the program
WordApp.Visible = True
WordApp.Activate
' Create document inside word
Set WordDoc = WordApp.Documents.Add
'Section 1
With WordApp.Selection
.Paragraphs.Alignment = wdAlignParagraphLeft
.Font.Size = 12
.TypeText "Heading" & vbCrLf & vbCrLf & "Date: _____________" & vbCrLf & vbCrLf
.BoldRun
.Font.Size = 12
.TypeText "Content" & vbCrLf
.TypeText "Period ended: 31 December 2020" & vbCrLf & vbCrLf
.BoldRun
End With
'Add table
Set WrdRange = WordDoc.Paragraphs(11).Range
WordDoc.Tables.Add WrdRange, intNoOfRows, intNoOfColumns
Set WordTable = WordDoc.Tables(1)
WordTable.Borders.Enable = True
End Sub
更新 根据下面的建议,我修改了代码,这导致 tables 出于某种原因合并。已应用以下代码:
Set WordDoc = WordApp.Documents.Add
'Section 1
With WordApp.Selection
.Paragraphs.Alignment = wdAlignParagraphLeft
.Font.Size = 12
.TypeText "Test Text 1"
End With
'Add table 1
Set WrdRange = WordDoc.Paragraphs.Last.Range
Set WordTable = WordDoc.Tables.Add(WrdRange, intNoOfRows, intNoOfColumns)
WordTable.Borders.Enable = True
'Section 2
With WordApp.Selection
.TypeText "Test Text 2" & vbCrLf
End With
'Add table 1
Set WrdRange = WordDoc.Paragraphs.Last.Range
Set WordTable = WordDoc.Tables.Add(WrdRange, intNoOfRows, intNoOfColumns)
WordTable.Borders.Enable = True
您的第一个问题是您在获取Word应用程序后没有重置错误处理。那段代码应该是:
On Error Resume Next
Set WordApp = GetObject(class:="Word.Application")
If WordApp Is Nothing Then Set WordApp = CreateObject(class:="Word.Application")
On Error GoTo 0
您正在尝试向第 11 段添加 table,但据我统计,您的文档仅包含 8 个段落。如果您尝试将 table 添加到文档末尾,那么您可以使用:
Set WrdRange = WordDoc.Paragraphs.Last.Range
或:
Set WrdRange = WordDoc.Characters.Last
Add
方法是一个函数,将 return 添加对象,因此您应该利用它,例如
Set WordTable = WordDoc.Tables.Add(WrdRange, intNoOfRows, intNoOfColumns)
WordTable.Borders.Enable = True
或:
With WordDoc.Tables.Add(WrdRange, intNoOfRows, intNoOfColumns)
.Borders.Enable = True
End With
您的代码还包含一些未声明的变量。您可以通过在代码模块顶部添加 Option Explicit 来避免这些错误。当您有未声明的变量时,这将阻止您的代码编译。要将其自动添加到新模块,请打开 VBE 并转到工具 |选项。在“选项”对话框中,确保选中“要求变量声明”。
编辑:
停止使用 Selection
。在使用 Word 或 Excel.
您的 table 正在加入,因为他们彼此关注。这是因为您正在使用 Selection
添加文本,即使当前 selection 在 table.
变化:
With WordApp.Selection
.TypeText "Test Text 2" & vbCrLf
End With
收件人:
WordDoc.Paragraphs.Last.Range.Text = "Test Text 2" & vbCr
熟悉 VBE 中的帮助工具:Intellisense、对象浏览器和联机帮助。