Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel到Word宏_Excel_Vba_Ms Word - Fatal编程技术网

Excel到Word宏

Excel到Word宏,excel,vba,ms-word,Excel,Vba,Ms Word,我有一个宏类似于以下连接到excel工作表中的图像。当我单击它时,它会将一个工作表中的所有必要信息保存到TPS报告工作表中,然后将文档保存为word文件,其名称为单元格B5中的任何内容。它工作正常,但问题是每当我单击启动宏时,它都会为工作表的每一行重新生成每个word文档。有没有办法让它只生成最新的文档?因此,如果已经创建了文件A、B和C,但工作表上的数据最多为F,当我单击宏时,它只会创建D、E和F,而不是ABCDE和F。我在这里找不到答案,请提供帮助。是否有一种方法可以在“另存为”命令之后添加

我有一个宏类似于以下连接到excel工作表中的图像。当我单击它时,它会将一个工作表中的所有必要信息保存到TPS报告工作表中,然后将文档保存为word文件,其名称为单元格B5中的任何内容。它工作正常,但问题是每当我单击启动宏时,它都会为工作表的每一行重新生成每个word文档。有没有办法让它只生成最新的文档?因此,如果已经创建了文件A、B和C,但工作表上的数据最多为F,当我单击宏时,它只会创建D、E和F,而不是ABCDE和F。我在这里找不到答案,请提供帮助。是否有一种方法可以在“另存为”命令之后添加一些代码,以检查文件是否存在,并仅在目录中不存在文件时创建它

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

不要使用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文档

问候,