【发布时间】:2017-11-10 03:03:11
【问题描述】:
我正在尝试使用 VBA 为 Word 文档添加标题。我正在使用以下代码。数据以 Excel 电子表格中的表格开始,每张表格一个。我们正在尝试在 word 文档中生成一个表格列表。
以下代码加载开始编辑单词模板:
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Add("Template path")
' Moving to end of word document
objWord.Selection.EndKey END_OF_STORY, MOVE_SELECTION
' Insert title
objWord.Selection.Font.Size = "16"
objWord.Selection.Font.Bold = True
objWord.Selection.TypeText ("Document name")
objWord.Selection.ParagraphFormat.SpaceAfter = 12
objWord.Selection.InsertParagraphAfter
以下代码循环遍历工作表中的工作表并添加表格和标题。
' Declaring variables
Dim Wbk As Workbook
Dim Ws As Worksheet
Dim END_OF_STORY As Integer: END_OF_STORY = 6
Dim MOVE_SELECTION As Integer: MOVE_SELECTION = 0
Dim LastRow As Integer
Dim LastColumn As Integer
Dim TableCount As Integer
Dim sectionTitle As String: sectionTitle = " "
' Loading workbook
Set Wbk = Workbooks.Open(inputFileName)
' Moving to end of word document
objWord.Selection.EndKey END_OF_STORY, MOVE_SELECTION
' Looping through all spreadsheets in workbook
For Each Ws In Wbk.Worksheets
' Empty Clipboard
Application.CutCopyMode = False
objWord.Selection.insertcaption Label:="Table", title:=": " & Ws.Range("B2").Text
在单元格 B2 中,我有以下文本:“表 1:摘要”。我希望 word 文档有一个反映此文本的标题。问题是表号重复两次,我得到输出:“表 1:表 1:摘要”。我尝试了以下更改,均导致错误:
objWord.Selection.insertcaption Label:="", title:="" & Ws.Range("B2").Text
objWord.Selection.insertcaption Label:= Ws.Range("B2").Text
我做错了什么,更一般地说,insertcaption 方法是如何工作的?
我已经尝试阅读此内容,但对语法感到困惑。
https://msdn.microsoft.com/en-us/vba/word-vba/articles/selection-insertcaption-method-word
【问题讨论】:
-
我们需要查看更多您的代码,并更清楚地解释您在做什么。这暗示您的代码是从 Excel 编写和运行的(因为“单元格 B2”)并在 Word 文档上运行。您如何创建插入标题的
Selection?您的问题的答案可能是在插入标题之前或之后删除选择。 -
谢谢,我已尝试添加更多代码和上下文以使我的问题更清晰。
-
我看到的一个问题是 Word 'InsertCaption' 方法会自动包含 'Table nnn:' 作为标题的一部分。我看到的另一个问题是您正在插入“字幕”,但将它们全部分配到一个位置。通常标题是用于形状或对象的?您是否排除了从 Excel 中“导入”数据的代码?如果没有,而你想要的只是目录之类的东西,那么你需要改变你的方法。