如何将具有函数的数据导出到excel

时间:2017-08-21 20:54:49

标签: excel-vba excel-formula vba excel

请参阅附图。我需要将“Total Qty”列中的数据复制到另一个工作簿,并通过将文件名作为Shipment ID将其保存到特定文件夹中。在此我记得该文件并从中获取数据到另一列。

enter image description here

我需要为此添加更多内容,即我想检查文件是否存在于特定文件夹中。如果文件存在,则需要更新文件。如果该文件不存在,请使用“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

1 个答案:

答案 0 :(得分:0)

问题似乎是,当您退出这些公式所指向的环境时,您的引用会变坏(源工作表中的列会成为错误的引用)。您可以尝试使用“选择性粘贴”功能,该功能允许您指定只希望复制值。 为此,请将ActiveSheet.Paste Destination:=Range("A1")更改为ActiveSheet.Range("A1").PasteSpecial Operation:=xlPasteValues

也许the docs for PasteSpecial会帮助你。

我还建议你不要使用ActiveWorksheet / ActiveWorksheet,而是引入Worksheet / Workbook类型的新对象变量,因为我已经获得了它们的经验只是更健壮。