请参阅附图。我需要将“Total Qty”列中的数据复制到另一个工作簿,并通过将文件名作为Shipment ID将其保存到特定文件夹中。在此我记得该文件并从中获取数据到另一列。
我需要为此添加更多内容,即我想检查文件是否存在于特定文件夹中。如果文件存在,则需要更新文件。如果该文件不存在,请使用“Total Qty”列创建一个文件。
我为此编写了以下代码。它一直有效,直到我将“total qty”列的函数赋予“=(G2 + H2)”。给出该功能后,目标文件在单元格中显示为“=(#REF!+#REF!)”。
Sub Export_Total_Qty()
Application.ScreenUpdating = False
Dim FilePath As String
Dim ID As String, abc
Const FILE_INFO As String = "D:\Excel Software\Shipment Tracking\Junk\<id>.xlsx"
ID = Worksheets("Sheet1").Cells(1, "O").Value
abc = Replace(FILE_INFO, "<id>", ID)
FilePath = ""
On Error Resume Next
FilePath = Dir(abc)
On Error GoTo 0
If FilePath = "" Then
Sheets("Sheet1").Range("I2:I50").Copy
Workbooks.Add
ActiveSheet.Paste Destination:=Range("A1")
ActiveWorkbook.SaveAs _
Filename:=abc
MsgBox "New Entry is created, Thak you", vbInformation, "Kutools for Excel"
Else
Sheets("Sheet1").Range("G1:G50").Copy
ActiveSheet.Paste Destination:=Range("A1")
'ActiveWorkbook.Update _
Filename:=abc
MsgBox "successfully Updated", vbInformation, "Kutools for Excel"
End If
Application.ScreenUpdating = False
End Sub
答案 0 :(得分:0)
问题似乎是,当您退出这些公式所指向的环境时,您的引用会变坏(源工作表中的列会成为错误的引用)。您可以尝试使用“选择性粘贴”功能,该功能允许您指定只希望复制值。
为此,请将ActiveSheet.Paste Destination:=Range("A1")
更改为ActiveSheet.Range("A1").PasteSpecial Operation:=xlPasteValues
也许the docs for PasteSpecial会帮助你。
我还建议你不要使用ActiveWorksheet
/ ActiveWorksheet
,而是引入Worksheet
/ Workbook
类型的新对象变量,因为我已经获得了它们的经验只是更健壮。