我正在使用excel-vba访问由其他程序创建的已关闭.csv file
。
.formula
行与 .xls 文件一起使用,引用 .csv 文件的注释掉的.formula
行不会 - 我在每个单元格中获取"#REF!"
。 我认为我得到的错误是因为我没有声明它不是“标准”.xls
文件?
.csv
文件中读取
经常因此必须保持关闭。.csv
文件的软件无法输出到.xls
文件。它将被编码,以便我的宏将从它停止的地方恢复,而不是每次都完成整个工作表。非常感谢任何帮助。
Sub GetData()
Dim RowNumber As Integer
Dim ColNumber As Integer
For RowNumber = 1 To 100
For ColNumber = 1 To 104
With Cells(RowNumber, ColNumber)
.Formula = "='C:\Documents and Settings\admin\Desktop\[data.xls]Sheet1'!" & Cells(RowNumber, ColNumber).Address
'.Formula = "='C:\Documents and Settings\admin\Desktop\[data1.csv]Sheet1'!" & Cells(RowNumber, ColNumber).Address
.Value = .Value
End With
Next
Next
End Sub
答案 0 :(得分:3)
您可以直接打开文件并一次性复制范围
将下面的文件路径更改为适合。
此行以ReadOnly方式打开文件,因此可以将其附加到其他地方
Set Wb2 = Workbooks.Open("C:\temp\data.csv", False, True)
Sub WhyNotOpen()
Dim Wb1 As Workbook
Dim Wb2 As Workbook
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Set Wb1 = ThisWorkbook
Set Wb2 = Workbooks.Open("C:\temp\data.csv", False, True)
Wb1.Sheets(1).Range("A1:CV104").Value = Wb2.Sheets(1).Range("A1:CV104").Value
Wb2.Close False
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
答案 1 :(得分:0)
您可以在应用之前打开csv并将其作为工作簿对象引用,因为csv文件已打开,您可以将文件名和工作表名称放在引用中。
Sub GetData()
Dim wb as workbook
Dim RowNumber As Integer
Dim ColNumber As Integer
set wb = application.workbooks.open("C:\Documents and Settings\admin\Desktop\data1.csv")
For RowNumber = 1 To 100
For ColNumber = 1 To 104
With Cells(RowNumber, ColNumber)
.Formula = "='[data1.csv]Sheet1'!" & Cells(RowNumber, ColNumber).Address
.Value = .Value
End With
Next
Next
End Sub
或用更通用的语法替换公式,如之前的
.Formula = "='" &"[" & wb.Name & "]" & wb.Sheets(1).Name &"'!" & Cells(RowNumber, ColNumber).Address