将信息复制到外部工作簿

我正在写一个macros,从CSV中获取数据并将其复制到另一个Excel文件(而不是当前或活动文件)。

什么是代码复制的数据,并发送到另一个文件在同一目录。

这是我的代码,我已经注释掉了导致macros不工作的行。 我想将variableswshT设置为WTF.xlsx文件的Sheet1,它位于相同的目录中,但不是活动的工作簿。 我没有打开那个。 所以我们的目标是使用这个macros从CSV中复制额外的数据,并将其发送到WTF.xlsx文件并将其保存为新的,在本例中为“BBB”。 任何帮助深表感谢。 当我取消注释这些行时,popup错误。

 Sub Import() Dim MyPath As String Dim strFileName As String 'Dim strFileName1 As String MyPath = ActiveWorkbook.Path strFileName = MyPath & "\borgwich_die_BM1940_profile.csv" 'strFileName1 = Workbooks("WTF.xlsx").Activate 'strFileName1 = Workbooks("WTF.xlsx").Worksheets("Sheet1").Select Dim wbkS As Workbook Dim wshS As Worksheet Dim wshT As Worksheet 'Set wshT = strFileName1 Set wbkS = Workbooks.Open(Filename:=strFileName) Set wshS = wbkS.Worksheets(1) wshS.Range("A1:A3").EntireRow.Delete 'wshS.UsedRange.Copy Destination:=wshT.Range("A1") wbkS.Close SaveChanges:=False Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:=MyPath & "\BBB", FileFormat _ :=51, CreateBackup:=False Application.DisplayAlerts = False 'ActiveWindow.Close End Sub 

通过使用.Activate和/或.Select来对strFileName1赋值的使用是不好的方法。 如果WTF.xlsx处于打开状态,则可以直接引用其Sheet1并将工作表对象引用设置为variables。

 Sub Import() Dim MyPath As String, strFileName As String Dim wbkS As Workbook, wshS As Worksheet, wshT As Worksheet MyPath = ActiveWorkbook.Path strFileName = MyPath & "\borgwich_die_BM1940_profile.csv" Set wbkS = Workbooks.Open(Filename:=strFileName) Set wshS = wbkS.Worksheets(1) Set wshT = Workbooks("WTF.xlsx").Worksheets("Sheet1") wshS.Range("A1:A3").EntireRow.Delete With wshS.Cells(1, 1).CurrentRegion .Copy Destination:=wshT.Range("A1") End With wbkS.Close SaveChanges:=False Application.DisplayAlerts = False wshT.Parent.SaveAs Filename:=MyPath & "\BBB", FileFormat:=51, CreateBackup:=False wshT.Parent.Close SaveChanges:=False Application.DisplayAlerts = True End Sub 

另一种方法是使用VBA等同于“数据”►“获取外部数据”►“从文本”,但您应该事先知道使用CSV导入的字段的数量和types。 如果通过将CSV作为工作簿打开,您正在创build的临时工作表错误地解释了CSV数据,这当然是首选的方法。