【发布时间】:2019-10-16 19:10:34
【问题描述】:
我有多个 Excel 选项卡,我想将它们输出到 Word 文档中。我能够获取一些代码(当然是在社区的帮助下!)并将我的 excel 的第一个选项卡输出到 word 文档。当我尝试获取第 3 页上的第二个选项卡时,它只是替换了我创建的第一页。
我还尝试了另一种方法,将每张工作表导出为单独的 word 文档,然后将它们合并,但这也遇到了同样的问题,单词只是一遍又一遍地替换了第一页。
基本上我的代码执行以下操作:
- 创建具有特定边距轮廓的 Word 文件。
- 将表格设置为 Excel 工作表中的已用范围。复制这个
- 粘贴到单词中。
再试下一张。遇到问题。
(设置 tbl = ThisWorkbook.Worksheets(Sheet3.Name).UsedRange)
Dim tbl As Excel.Range
Dim WordApp As Word.Application
Dim WordTable As Word.Table
Dim MainDoc As Word.Document
Dim mydoct1 As Word.Document
Dim sFolderPath As String
Sub Export_to_Word()
Application.ScreenUpdating = False
Application.EnableEvents = False
'Create an Instance of MS Word
On Error Resume Next
'Is MS Word already opened?
Set WordApp = GetObject(class:="Word.Application")
'Clear the error between errors
Err.Clear
'If MS Word is not already open then open MS Word
If WordApp Is Nothing Then Set WordApp = CreateObject(class:="Word.Application")
'Handle if the Word Application is not found
If Err.Number = 429 Then
MsgBox "Microsoft Word could not be found, aborting."
GoTo EndRoutine
End If
On Error GoTo 0
'Make MS Word Visible and Active
WordApp.Visible = True
WordApp.Activate
'Create a New Document
Set mydoc1 = WordApp.Documents.Add
With mydoc1.PageSetup
.TopMargin = Application.CentimetersToPoints(1)
.BottomMargin = Application.CentimetersToPoints(1)
.LeftMargin = Application.CentimetersToPoints(1)
.RightMargin = Application.CentimetersToPoints(1)
End With
Set tbl = ThisWorkbook.Worksheets(Sheet2.Name).UsedRange
tbl.Copy
'Paste Table into MS Word
mydoc1.Paragraphs(1).Range.PasteExcelTable False, False, False
'Autofit Table so it fits inside Word Document
Set WordTable = mydoc1.Tables(1)
WordTable.AutoFitBehavior (wdAutoFitWindow)
mydoc1.Range.InsertAfter Chr(13) & "Hello"
my.Collapse Direction:=wdCollapseEnd
mydoc1.Range.InsertBreak
Set tbl = ThisWorkbook.Worksheets(Sheet3.Name).UsedRange
tbl.Copy
mydoc1.Range.PasteExcelTable False, False, False
EndRoutine:
'Clear The Clipboard
Application.CutCopyMode = False
mydoc1.SaveAs Filename:=Application.ActiveWorkbook.Path & "\Application_Temp\" & "Sheet1"
mydoc1.Close
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
【问题讨论】:
-
@CindyMeister 谢谢!我认为它类似于 excel,如果您选择一个单元格然后写入另一个单元格,则 activecell 会发生变化。我会试一试,让你知道它是怎么回事。我一直在尝试该行的各种版本,以查看是否可以移动范围,但该部分一直存在一些问题。