2016-01-21 94 views
0

想从Excel复制三个范围的数据,然后将三个不同的范围粘贴到现有的Word表格中。 Word文档是从另一个程序生成的,文件名称每次都不相同。我需要将这三个范围分开并粘贴到单词表(1)中,但列表中与Excel副本不匹配。当前进程是复制一个Excel范围,alt + tab到Word文档并粘贴到表格中,重复其余两个范围。这是我的复制代码,但我需要“粘贴”帮助。将不相邻的Excel列拆分为不相邻的Word表格列

Sub Copy_CV() 
    Dim MaxVal As Long, C As Long 

    MaxVal = Worksheets("Prop").Application.Max(Columns(2)) 
    C = MaxVal + 3 
    Worksheets("Prop").Range("G4:G" & C).Select 
    Worksheets("Prop").Range("L4:L" & C).Select 
    Worksheets("Prop").Range("M4:M" & C).Select 
    Selection.Copy 
End Sub 

回答

1

你可以做这样的事情:

Sub Copy_CV() 
    Dim MaxVal As Long, C As Long 

    MaxVal = Worksheets("Prop").Application.Max(Columns(2)) 
    C = MaxVal + 3 

    'open Word with COM and late binding and open document 
    Dim Word As Object, Document As Object, Table As Object 
    Set Word = CreateObject("Word.Application") 
    Set Document = Word.Documents.Open("example.docx") 

    'get table 
    Set Table = Document.Tables(1) 

    'adjust rows 
    dif = Table.Rows.Count - MaxVal 
    If dif > 0 Then 
    For i = 1 To dif 
     Table.Rows(1).Delete 
    Next 
    ElseIf dif < 0 Then 
    For i = 1 To -dif 
     Table.Rows.Add 
    Next 
    End If 

    'copy each col in excel and paste in col in the new table 
    Worksheets("Prop").Range("G4:G" & C).Select 
    Selection.Copy 
    Table.Columns(1).Select 'this assumes that target rows are 1, 2 and 3 
    Word.Selection.PasteAndFormat 16 'wdFormatOriginalFormatting=16 

    Worksheets("Prop").Range("L4:L" & C).Select 
    Selection.Copy 
    Table.Columns(2).Select 
    Word.Selection.PasteAndFormat 16 

    Worksheets("Prop").Range("M4:M" & C).Select 
    Selection.Copy 
    Table.Columns(3).Select 
    Word.Selection.PasteAndFormat 16 

    'save and close document 
    Document.Save 
    Document.Close 
    Word.Quit 

    Set Table = Nothing 
    Set Document = Nothing 
    Set Word = Nothing 
End Sub 

这是假设你要使用的第一个表在文档中。编辑:添加代码来修复目标表上的行数。

+0

感谢您的响应。不得不添加一个答案给你更多的信息。我真的很感谢你的帮助....你给了我一个可以做什么的想法,而不是我想要做的一点点。 – Will

0

感谢您的回应!工作...有点儿。这就是我遇到的情况,代码停止执行并挂在“设置文档”行上。经过进一步的考虑和你展示我的可能性,我有一些额外的援助请求。我只介绍了部分流程,因为我只是在考虑一个方向。实际的过程是:1)将Word表格的第5列和第6列的数据复制粘贴到Excel表格G和L中,2)调整数据并生成列M,然后3)复制并粘贴Excel G,L和因为每个单词列都有独特的格式(具有我无法复制的标签),所以我必须选择每列的标题并使用格式画家格式化每列。我试图用宏记录来实现这一点,但没有成功,因为它只会格式化表格中的第一个单元格。

单词表 - 每次生成单独的程序但变量行。

请求 1)访问Word文档的打开实例......可能有错误处理程序,如果它挂断 2)从Word表格中的数据复制1列5 & 6和Excel表格列粘贴摹& L 3)从Excel表格列G,L & M复制数据并粘贴到Word表格1列5,6,& 7. 4)格式化Word表格列5,& 7基于表格格式的行2个单元格的每列。

Word Table 1

子Copy_CV() 昏暗MaxVal最大值只要,C只要

MaxVal = Worksheets("Prop").Application.Max(Columns(2)) 
    C = MaxVal + 3 

    'open Word with COM and late binding and open document 
    Dim Word As Object, Document As Object, Table As Object 
    Set Word = CreateObject("Word.Application") 
    Set Document = Word.Documents.Open("c:\test\Test.rtf") 

    'get table 
    Set Table = Document.Tables(1) 
    ' 
    Worksheets("Prop").Range("G4:G" & C).Select 
    Selection.Copy 
    Table.Cell(Row:=3, Column:=5).Range.Select 
    Word.Selection.Collapse 
    Word.Selection.PasteAndFormat (wdTableOverwriteCells) 

    'Copy ppa 
    Worksheets("Prop").Range("L4:L" & C).Select 
    Selection.Copy 
    Table.Cell(Row:=3, Column:=6).Range.Select 
    Word.Selection.Collapse 
    Word.Selection.PasteAndFormat (wdTableOverwriteCells) 

    'Copy klbs 
    Worksheets("Prop").Range("M4:M" & C).Select 
    Selection.Copy 
    Table.Cell(Row:=3, Column:=7).Range.Select 
    Word.Selection.Collapse 
    Word.Selection.PasteAndFormat (wdTableOverwriteCells) 

    'save and close document 
    Document.Save 
    Document.Close 
    Word.Quit 

    Set Table = Nothing 
    Set Document = Nothing 
    Set Word = Nothing 
End Sub 
+0

没问题。关于您的后续问题,我建议您先尝试推出一些代码,然后如果您无法弄清楚,则将它们(使用您创建的任何代码)发布为新问题。 – dnep

+0

会做。谢谢。 – Will