2016-08-24 153 views
1

该宏用Excel编写。我已经将表格复制到excel的第一页,然后我想将表格插入第2页的word.But从下面设置“MyRange”返回空和表格与1行不创建。从Excel中复制表格后Vba Word添加表格

Set objWord = CreateObject("Word.Application") 
    Set objDoc = objWord.Documents.Open(str_path_folder & "\" & AdID & ".dotm") 
    objWord.Visible = True 
    objDoc.Activate 
    AppActivate AdID & ".dotm" 
    Sheets("Meta").Select 
    Range("B1:E" & LastRow).Select 
    Selection.Copy 
    objWord.Selection.PasteExcelTable False, False, False 
    objDoc.Tables(1).AutoFitBehavior wdAutoFitContent 
    objWord.Selection.InsertBreak.Type = wdPageBreak 
    Set MyRange = ActiveDocument.Content 
    MyRange.collapse Direction:=wdCollapseEnd 
    ActiveDocument.Tables.Add Range:=MyRange, NumRows:=1, _ 
    NumColumns:=1, DefaultTableBehavior:=wdWord9TableBehavior,  AutoFitBehavior:=wdAutoFitFixed 

另外,如果我用它下面是替换第1页已经复制表:

objDoc.Tables.Add Range:=objDoc.Range, NumRows:=3, NumColumns:=2, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed 

回答

0

另一种方式来获得文档的末尾是objDoc.Range(objDoc.Range.End - 1)

objDoc.Range.PasteExcelTable 0, 0, 0 

objDoc.Range(objDoc.Range.End - 1).InsertBreak 

objDoc.Tables.Add objDoc.Range(objDoc.Range.End - 1), 2, 2 

如果您在Word中记录宏,你会得到像这样的东西

Selection.PasteExcelTable False, False, True 
Selection.InsertBreak Type:=wdPageBreak 
ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=1, NumColumns:=1, _ 
    DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed 
+0

谢谢,但它还没有在第2页添加新表格。你能否建议 –