将 table 粘贴到打开的 Word 文档的书签处
Pasting a table into open Word document at a bookmark
我在这个论坛和其他论坛上搜索了很多,但我无法让代码工作。我知道这是用户错误 - 我是 learning/self-taught。
我想要的是将特定 Excel 工作表中的(公认的大)table 在特定点复制到已打开的 Word 文档中。我已经看到这是使用关键字搜索完成的,但我更愿意使用书签(我已经让书签起作用了!)纯粹是因为最终用户看不到它。我正在尝试尽可能自动创建文档。
下面的代码可以工作,但我只能在相关的 Word 文档关闭后才能工作。如果我在 word doc 打开时尝试 运行 这个 sub,它只会尝试重新打开它,当然不能。我找不到允许我将数据粘贴到已经打开的文档中的简洁代码。
此外,我可以使它适用于一个值,但不适用于一个范围(即我要粘贴的 table)。
Sub ExcelRangeToWord()
Dim objWord As Object
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Summary")
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
'Optimize Code
Application.ScreenUpdating = False
Application.EnableEvents = False
'open the word doc
objWord.Documents.Open "K:\Exeter Office\Quotebuilder project\testbed\test.docx" 'change as required
'pastes the value of cell I19 at the "heatlosses" bookmark
With objWord.ActiveDocument
.Bookmarks("heatlosses").Range.Text = ws.Range("I19").Value
End With
'Optimize Code
Set objWord = Nothing
Application.ScreenUpdating = True
Application.EnableEvents = True
'Clear The Clipboard
Application.CutCopyMode = False
End Sub
我正在尝试一次解决这个问题,因为这样我就有一半的机会更好地理解事情...
如果我尝试 copy/paste 一个范围,而不是只有一个值,我正在使用 Currentregion select B19 周围所有使用过的单元格:
With objWord.ActiveDocument
.Bookmarks("heatlosses").Range.Text = Range("B19").CurrentRegion
End With
这只是将单词 "True" 粘贴到 Word 中。
我很困惑。请问有人可以提供帮助吗?
使用下面的代码实现您的要求:
Sub CopyToWord()
Dim wApp, wDoc
'Get the running word application
Set wApp = GetObject(, "Word.Application")
'select the open document you want to paste into
Set wDoc = wApp.documents("test.docx")
'copy what you want to paste from excel
Sheet1.Range("A1").copy
'select the word range you want to paste into
wDoc.bookmarks("heatlosses").Select
'and paste the clipboard contents
wApp.Selection.Paste
End Sub
我在这个论坛和其他论坛上搜索了很多,但我无法让代码工作。我知道这是用户错误 - 我是 learning/self-taught。
我想要的是将特定 Excel 工作表中的(公认的大)table 在特定点复制到已打开的 Word 文档中。我已经看到这是使用关键字搜索完成的,但我更愿意使用书签(我已经让书签起作用了!)纯粹是因为最终用户看不到它。我正在尝试尽可能自动创建文档。
下面的代码可以工作,但我只能在相关的 Word 文档关闭后才能工作。如果我在 word doc 打开时尝试 运行 这个 sub,它只会尝试重新打开它,当然不能。我找不到允许我将数据粘贴到已经打开的文档中的简洁代码。
此外,我可以使它适用于一个值,但不适用于一个范围(即我要粘贴的 table)。
Sub ExcelRangeToWord()
Dim objWord As Object
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Summary")
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
'Optimize Code
Application.ScreenUpdating = False
Application.EnableEvents = False
'open the word doc
objWord.Documents.Open "K:\Exeter Office\Quotebuilder project\testbed\test.docx" 'change as required
'pastes the value of cell I19 at the "heatlosses" bookmark
With objWord.ActiveDocument
.Bookmarks("heatlosses").Range.Text = ws.Range("I19").Value
End With
'Optimize Code
Set objWord = Nothing
Application.ScreenUpdating = True
Application.EnableEvents = True
'Clear The Clipboard
Application.CutCopyMode = False
End Sub
我正在尝试一次解决这个问题,因为这样我就有一半的机会更好地理解事情...
如果我尝试 copy/paste 一个范围,而不是只有一个值,我正在使用 Currentregion select B19 周围所有使用过的单元格:
With objWord.ActiveDocument
.Bookmarks("heatlosses").Range.Text = Range("B19").CurrentRegion
End With
这只是将单词 "True" 粘贴到 Word 中。
我很困惑。请问有人可以提供帮助吗?
使用下面的代码实现您的要求:
Sub CopyToWord()
Dim wApp, wDoc
'Get the running word application
Set wApp = GetObject(, "Word.Application")
'select the open document you want to paste into
Set wDoc = wApp.documents("test.docx")
'copy what you want to paste from excel
Sheet1.Range("A1").copy
'select the word range you want to paste into
wDoc.bookmarks("heatlosses").Select
'and paste the clipboard contents
wApp.Selection.Paste
End Sub