我正在尝试编写一个VBA例程来打开一个csv文件复制并粘贴到另一个工作簿的值,但似乎继续倒下

我正在尝试编写一个VBA例程来打开一个csv文件复制并粘贴到另一个工作簿的值,但似乎继续倒下

 Sub GetWorkFlowMaxData() Dim DataSheet As Object Dim InpDataBook As Object Dim InpDataSheet As Object Dim WorkFlowMaxFileName As String Dim vResponse As Variant Dim sCurrSheet As String Dim main As String Application.ScreenUpdating = False sCurrSheet = ActiveSheet.Name ActiveSheet.Calculate vResponse = MsgBox("This action can not be undone. Are you sure you want to clear Historic WorkFlowMax Data ?", vbYesNo, "Clear Data") If vResponse = vbYes Then main = ActiveWorkbook.Name Workbooks(main).Sheets("WFM_Detail").Range("A1:G10000").ClearContents WorkFlowMaxFileName = Range("WorkFlowMaxFile") Workbooks.Open Filename:=WorkFlowMaxFileName Set InpDataBook = ActiveWorkbook Set InpDataSheet = ActiveSheet InpDataBook.Activate ' other = ActiveWorkbook.Name ' Workbooks(InpDataBook).Sheets("InpDataSheet").Range("A1:G10000").Copy ' ActiveWorkbook.Close SaveChanges:=False End If ' Application.Calculate End Sub 

一旦你在代码中正确设置工作簿和表格variables,你可以像下面一样直接使用它们…

 InpDataSheet.Range("A1:G10000").Copy 

按照您的要求修改以下代码…

 Sub GetWorkFlowMaxData() Dim wbDest As Workbook, wbSource As Workbook Dim wsDest As Worksheet, wsSource As Worksheet Dim WorkFlowMaxFileName As String Dim vResponse As String Application.ScreenUpdating = False vResponse = MsgBox("This action can not be undone. Are you sure you want to clear Historic WorkFlowMax Data ?", vbYesNo, "Clear Data?") If vResponse = vbNo Then Exit Sub Set wbDest = ThisWorkbook Set wsDest = wbDest.Sheets("WFM_Detail") WorkFlowMaxFileName = Range("WorkFlowMaxFile").Value wsDest.Range("A1").ClearContents Workbooks.Open Filename:=WorkFlowMaxFileName Set wbSource = ActiveWorkbook Set wsSource = ActiveSheet wsSource.Range("A1").CurrentRegion.Copy wsDest.Range("A1") wbSource.Close False Application.ScreenUpdating = ture End Sub 

在将所提供的variables设置为适当的值后,应该这样做。

 Sub GetWorkFlowMaxData() Dim copyFrom, copyTo As Workbook Dim copyFromPath, copyToPath As String Dim copyFromSheet, copyToSheet As String Dim copyFromRange, copyToRange As Range Set copyFrom = Workbooks.Open(copyFromPath) Set copyTo = Workbooks.Open(copyToPath) copyFrom.Sheets(copyFromSheet).Range(copyFromRange).Copy copyTo.Sheets(copyToSheet).Range(copyToRange).PasteSpecial copyFrom.Close End Sub