我正在Excel中创建工具 哪个将读取一些数据并根据该数据创建Word文档。
到目前为止,我已经精通创建Word文档并添加几行文本而没有任何问题。 虽然添加表的下一点引起了问题。 我可以很好地添加表格,但是由于某种原因,它会删除我最初添加的文本行。
这是我的代码:
Dim objWord As Word.Application
Dim objDoc As Word.Document
Dim objSelection As Object
Dim objRange As Object
Dim objTable As Object
Dim ctr as long
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.documents.Add
Set objSelection = objWord.Selection
Set objRange = objDoc.Range
'Adding some heading Text
objSelection.Style = objDoc.Styles("Heading 1")
objSelection.Font.Bold = True
objSelection.TypeText ("Heading Text")
objSelection.TypeParagraph
'Adding some normal Text
objSelection.Style = objDoc.Styles("Normal")
objSelection.Font.Bold = False
objSelection.TypeText ("Normal Text")
objSelection.TypeParagraph
Stop
'Adding the table
objDoc.Tables.Add objRange, 10, 2, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitWindow
objWord.Quit SaveChanges:=False
Set objWord = Nothing
在添加了标题和普通文本之后,我在一个停顿点插入了它们,并且它们出现在word文档中。(以下屏幕截图)
但是,一旦代码到达Tables.Add位,我的所有文本都消失了,文档只剩下表格了。 (以下还有截图)
我在网上四处张望,并尝试将 objSelection.Collapse WdCollapseDirection.wdCollapseEnd
答案 0 :(得分:0)
您添加表的代码失败,因为您正在将表添加到定义为整个文档的objRange
中。
您还应该养成在Word和Excel中避免使用Selection
对象的习惯。不仅效率低下(必须不断重新绘制屏幕),而且容易出错,因为用户可以将选择更改为您不期望的内容。
下面的代码应该对您有用。
Dim objWord As Word.Application
Dim objDoc As Word.Document
Dim objRange As Word.Range
Dim objTable As Word.Table
Dim ctr As Long
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.documents.Add
'Adding some heading Text
With objDoc.Paragraphs(1).Range
.Style = objDoc.Styles(wdStyleHeading1)
.Font.Bold = True
.Text = "Heading Text"
.InsertParagraphAfter
End With
'Adding some normal Text
With objDoc.Paragraphs(2).Range
.Style = objDoc.Styles(wdStyleNormal)
.Font.Bold = False
.Text = "Normal Text"
.InsertParagraphAfter
End With
Set objRange = objDoc.Paragraphs.Last.Range
'Adding the table
Set objTable = objDoc.Tables.Add(objRange, 10, 2, _
DefaultTableBehavior:=wdWord9TableBehavior, _
AutoFitBehavior:=wdAutoFitWindow)
objWord.Quit SaveChanges:=False
Set objWord = Nothing
答案 1 :(得分:0)
我使用下面的代码进行了测试,并且有效:
先决条件:在您的VBA项目中添加引用“ Microsoft Word xx.x对象库”
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
' create an instance of MS Word
Set WordApp = CreateObject("word.application")
WordApp.Visible = True
Set WordDoc = WordApp.Documents.Add
Range("A1:A2").Copy
WordApp.Selection.TypeText ("Here are my comment")
WordApp.Selection.Paste
' fit the table with window
WordDoc.Tables(1).AutoFitBehavior wdAutoFitWindow
' Save the content into the .doc file
WordDoc.SaveAs2 ("C:\mypath\myDocument.doc")