我有一个宏(类似于下图)连接到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发布于 2014-11-26 13:26:20
不要使用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文档
致以敬意,
https://stackoverflow.com/questions/27141505
复制相似问题