Excel到Word宏

时间:2014-11-26 04:45:40

标签: excel vba ms-word word-vba

我有一个宏(类似于以下)连接到Excel工作表中的图像。当我单击它时,它将从一个工作表到TPS报告工作表的所有必要信息,然后将文档保存为word文件,其名称是单元格B5中存在的任何名称。它工作正常,除了问题是我随时点击启动宏它为工作表的每一行重新生成每个单词文档。有没有办法让它只生成最新的文件?因此,如果已创建文件“A”,“B”和“C”,但工作表上的数据最多为“F”,当我单击宏时,它只会创建“D”,“E”和“F”而不是ABCDE和F.我在这里找不到答案,任何帮助都将不胜感激。有没有办法可以在Save as Command之后添加一些代码来检查文件是否存在,只有在目录中不存在时才创建它。

Sub ControlWordTPS()
    Dim appWD As Word.Application
    Set appWD = CreateObject("Word.Application.8")
    appWD.Visible = True
    Sheets("TPS").Select
    'Find the last row with data in the database
    FinalRow = Range("P9999").End(xlUp).Row
    For i = 5 To FinalRow
        Sheets("TPS").Select
        Range("A" & i).Copy Destination:=Sheets("TPSForm").Range("B5")
        Range("D" & i).Copy Destination:=Sheets("TPSForm").Range("B6")
        Range("E" & i).Copy Destination:=Sheets("TPSForm").Range("B7")
        Range("G" & i).Copy Destination:=Sheets("TPSForm").Range("B8")
        Range("M" & i).Copy Destination:=Sheets("TPSForm").Range("B9")
        Range("N" & i).Copy Destination:=Sheets("TPSForm").Range("B10")
        Range("O" & i).Copy Destination:=Sheets("TPSForm").Range("B11")
        Range("H" & i).Copy Destination:=Sheets("TPSForm").Range("B24")
        Range("I" & i).Copy Destination:=Sheets("TPSForm").Range("B25")
        Range("K" & i).Copy Destination:=Sheets("TPSForm").Range("B26")
        Range("J" & i).Copy Destination:=Sheets("TPSForm").Range("B27")
        Sheets("TPSForm").Select
        Range("A1:F28").Copy
        appWD.Documents.Add
        appWD.Selection.Paste
        appWD.ActiveDocument.SaveAs Filename:="G:\Warranties\Customer\2014\2014TPSForms        \TPSAUTO\" & Range("B5")
        appWD.ActiveDocument.Close
    Next i
    appWD.Quit
End Sub

1 个答案:

答案 0 :(得分:0)

不要使用For循环;而是一次复制所有行,如下面的代码片段所示:

' Copy multiple rows at once
Worksheets("Sheet1").Rows("5:" & FinalRow).Copy

' Create a new Word document
appWD.Documents.Add

' Paste the contents of the clipboard into the new Word document
appWD.Selection.Paste

'...保存Word文档的其余代码

此致