-1

我正在尝试使用 VB 宏使用我的 excel (.xlsm) 中的数据自动生成 word 文档 (.docm)。

目前我可以将部分信息从excel复制到word文档中。问题是我找不到将表格信息传递给单词书签的解决方案。

Sub Word()

Dim wdApp As Word.Application
Dim WDDoc As Word.Document
Dim BMRange As Word.Range
Dim cliente As Range
Dim CPE As Range
Dim localidade As Range
Dim numproposta As Range
Dim DIRECT, saveAsName, data As String
Dim table1 As Table

Set wdApp = CreateObject("Word.Application") 'Create an instance of word
Set WDDoc = wdApp.Documents.Open("C:\Users\PT13217294\test.docm") 'Open word file
wdApp.Visible = True

'excel ranges
'Windows(shtname).Activate

Set cliente = Sheets("Dados").Range("C10")
Set CPE = Sheets("Dados").Range("C15")
Set localidade = Sheets("Dados").Range("C13")
Set table1 = Sheets("Cálculos").Range("B5:K17")

'word's bookmark

'cabeçalho
 ActiveDocument.Bookmarks("cliente4").Range.Text = cliente

'rodapé
ActiveDocument.Bookmarks("num_proposta4").Range.Text = numproposta

 'corpo texto
 Set BMRange = WDDoc.Goto(What:=wdGoToBookmark, Name:="cliente1")
 BMRange.Text = cliente

 Set BMRange = WDDoc.Goto(What:=wdGoToBookmark, Name:="Table")
 BMRange.Text = table1

'Guardar word na pasta das propostas
With wdApp.ActiveDocument
saveAsName = "C:\Users\PT13217294\test.docm"
ActiveDocument.SaveAs Filename:=saveAsName
wdApp.Quit
End With

Set BMRange = Nothing
Set WDDoc = Nothing
Set wdApp = Nothing

我应该怎么做才能解决这个问题?提前致谢,

安德烈

4

2 回答 2

1

您不能将Excel Range Objecttable1在您的代码中)分配给Word Range.Text Properties. 在这种情况下,我们通常需要在两个应用程序之间复制>>粘贴。

因此,您需要执行以下操作:

'....your code here
Set BMRange = WDDoc.Goto(What:=wdGoToBookmark, Name:="Table")
'new code for you
    table1.Copy
    BMRange.Paste
'rest of your code
'Guardar word na pasta das propostas
With wdApp.ActiveDocument
'...and so on

如果需要,您需要在粘贴时尝试表格形成。上面的解决方案是经过尝试和测试的。

于 2013-05-30T15:49:29.730 回答
0

在您使用 Kaz 的建议后(Option Explicit防止此类错误),一旦您复制了表格,您可以尝试这样的事情(未经测试):

Dim wdRange as Object
Set wdRng = WDDoc.Bookmarks("Table").Range
wdApp.Goto(What:=wdGoToBookmark, Name:="Table")
wdApp.Selection.PasteAndFormat wdTableOriginalFormatting '## Modify as needed

在粘贴新表格之前,您可能需要添加一些逻辑来删除现有表格形状。

我想如果你删除,那么你可能还需要这样做(我的示例 Excel--> Word 宏中有这个,但我已经有一段时间没有使用它了):

wdApp.Selection.Bookmarks.Add "Table", wdRng
于 2013-05-30T15:48:55.223 回答