CSV Files我在打开CSV文件时遇到了一个奇怪的问题。我编写了一个代码来打开CSV文件并使用vba在excel中处理它。我只能打开一个特定的CSV文件,但任何其他CSV文件我无法打开它或在excel中处理它我不知道为什么。为什么excel VBA只读取一个特定文件。代码下方
Sub lithium()
Dim ws As Worksheet
Dim MyData As String, strData() As String
Dim PathInit As String
Dim i As Integer
Dim z As Long, filecount As Long
Dim l As Long
Dim LR As Long
k = 2
LR = Range("A" & Rows.Count).End(xlUp).Row
' Opening the txt file
Dim myTxt
myTxt = Application.GetOpenFilename(filefilter:="CSV Files (*.csv), *.csv", MultiSelect:=False)
Open myTxt For Binary As #1
MyData = Space$(LOF(1))
Get #1, , MyData
Close #1
strData() = Split(MyData, vbCrLf) ' Saving the entire value of the text file into the array. every element in the array in the entire row of the txt file
Dim strRow1() As String
Dim strRow2() As String
Dim strRow3() As String
Dim strRow4() As String
Dim strRow5() As String
Dim strRow6() As String
Dim nCount As Integer
nCount = 1
Dim nRowLenth As Integer
nRowLenth = UBound(strData) - LBound(strData) ' Length of the total data array
j = 3
For i = 18 To nRowLenth
strRow1() = Split(strData(i), ";")
Cells(j, 15).value = strRow1(0)
Cells(j, 16).value = strRow1(1)
If Cells(j, 16).value = "c0" Then Cells(j, 17).value = strRow1(2)
If Cells(j, 16).value = "c1" Then Cells(j, 18).value = strRow1(2)
If Cells(j, 16).value = "c4" Then Cells(j, 19).value = strRow1(2)
Cells(j, 21).value = Left(Cells(j, 17).value, 2)
Cells(j, 22).value = Left(Cells(j, 18).value, 2)
Cells(j, 23).value = Right(Left(Cells(j, 18).value, 6), 2) & Right(Left(Cells(j, 18).value, 4), 2)
Cells(j, 23).NumberFormat = "0000"
Cells(j, 24).value = Left(Cells(j, 19).value, 2)
Cells(j, 26).value = Right(Left(Cells(j, 19).value, 12), 2) & Right(Left(Cells(j, 19).value, 10), 2)
Cells(j, 27).value = Right(Left(Cells(j, 19).value, 16), 2) & Right(Left(Cells(j, 19).value, 14), 2)
If Cells(j, 16).value = "c0" Then Cells(j, 1).value = Cells(j, 15).value Else _
If Cells(j, 16).value = "c1" Then Cells(j, 1).value = Cells(j, 15).value Else _
If Cells(j, 16).value = "c4" Then Cells(j, 1).value = Cells(j, 15).value Else _
If Cells(j, 21).value = "" Then Cells(j, 2).value = "#N/A" Else Cells(j, 2).value = CLng("&H" & Cells(j, 21).value)
If Cells(j, 22).value = "" Then Cells(j, 3).value = "#N/A" Else Cells(j, 3).value = CLng("&H" & Cells(j, 22).value)
If Cells(j, 24).value = "" Then Cells(j, 4).value = "#N/A" Else Cells(j, 4).value = CLng("&H" & Cells(j, 24).value) - 40
Cells(j, 5).value = CLng("&H" & Cells(j, 25).value) - 40
If Cells(j, 23).value = "" Then Cells(j, 5).value = "#N/A" Else Cells(j, 5).value = CLng("&H" & Cells(j, 23).value) - 32768
If Cells(j, 26).value = "" Then Cells(j, 6).value = "#N/A" Else Cells(j, 6).value = CLng("&H" & Cells(j, 26).value)
If Cells(j, 27).value = "" Then Cells(j, 7).value = "#N/A" Else Cells(j, 7).value = CLng("&H" & Cells(j, 27).value)
If Cells(j, 27).value = "" Then Cells(j, 8).value = "#N/A" Else Cells(j, 8).value = Cells(j, 6).value - Cells(j, 7).value
j = j +1
Next
End Sub
并且对于那个特定的文件,它工作正常,但我得到一个错误索引超出范围,我不知道为什么。如果有人可以提供帮助
答案 0 :(得分:0)
也许你可以从这两种解决方案中获得一些想法。
{{1}}