tul*_*osh 5 csv excel vba excel-vba
朋友们,我正在尝试每天打开一个CSV文件(每天从其他程序生成),并将CSV工作表中的数据复制到我当前工作簿中的某个工作表中.我已经对这段代码工作了一段时间,我认为它非常接近正确,但我在复制/粘贴行上一直遇到运行时错误438.有帮助吗?
谢谢!
这是我的代码:
Sub GetCSV()
Dim thatWB As Workbook, thisWB As Workbook
Dim thisWS As Worksheet, thatWS As Worksheet
Dim zOpenFileName As String
Dim inputData As String
'get name of sheet to open
inputData = InputBox("Enter name of file")
'open CSV file
zOpenFileName = Application.GetOpenFilename
'error handling
If zOpenFileName = "" Then Exit Sub
Application.ScreenUpdating = False
Set thisWB = ThisWorkbook 'destination workbook
Set thisWS = Sheets("f_dump") 'destination worksheet
Set thatWB = Workbooks.Open(zOpenFileName) 'source CSV
Set thatWS = thatWB.Sheets(inputData) 'source worksheet
Application.CutCopyMode = False
thatWB.thatWS.Range("A1:G150").Copy Destination:=thisWB.thisWS.Range("A1")
thatWB.Close
End Sub
尝试看看这个。我从您的复制和粘贴部分代码中删除了 thisWB 和 ThatWB,因为它是第一期的来源(并且我将工作簿规范移至工作表声明)。
接下来的问题是粘贴。我不知道为什么,但是当调用范围时,您需要使用 PasteSpecial (Excel 中的 VBA 有点神奇,而不是编程/脚本)
Sub GetCSV()
Dim thatWB As Workbook, thisWB As Workbook
Dim thisWS As Worksheet, thatWS As Worksheet
Dim zOpenFileName As String
Dim inputData As String
'get name of sheet to open
inputData = InputBox("Enter name of file")
'open CSV file
zOpenFileName = Application.GetOpenFilename
'error handling
If zOpenFileName = "" Then Exit Sub
Application.ScreenUpdating = False
Set thisWB = ThisWorkbook 'destination workbook
Set thisWS = ThisWorkbook.Sheets("Sheet1") 'destination worksheet
Set thatWB = Workbooks.Open(zOpenFileName) 'source CSV
Set thatWS = thatWB.Sheets(inputData) 'source worksheet
Application.CutCopyMode = False
thatWS.Range("A1:G150").Copy
thisWS.Range("A1:G150").PasteSpecial xlPasteAll
thatWB.Close
End Sub
| 归档时间: | 
 | 
| 查看次数: | 4428 次 | 
| 最近记录: |