创建文本文件时Excel VBA运行时错误5
我正在将大量数据(10万行)从excel导出到单独的文本文件中。每个文本文件应包含200行数据(仅从一列复制值)。它在前14个文件中运行良好,然后在第15个文件执行到一半时阻塞。我得到:“运行时错误“5”:过程调用或参数无效”。行中发生故障的数据没有什么特别之处 代码如下:创建文本文件时Excel VBA运行时错误5,vba,excel,Vba,Excel,我正在将大量数据(10万行)从excel导出到单独的文本文件中。每个文本文件应包含200行数据(仅从一列复制值)。它在前14个文件中运行良好,然后在第15个文件执行到一半时阻塞。我得到:“运行时错误“5”:过程调用或参数无效”。行中发生故障的数据没有什么特别之处 代码如下: Sub Create_Text_Files() Dim row As Long, lastRow As Long, increment As Long, j As Long Dim fso As Object Dim str
Sub Create_Text_Files()
Dim row As Long, lastRow As Long, increment As Long, j As Long
Dim fso As Object
Dim strPath
Dim oFile As Object
increment = 199
j = 1
lastRow = Cells(Rows.Count, "A").End(xlUp).row
For row = 2 To lastRow
Set fso = CreateObject("Scripting.FileSystemObject")
strPath = "C:\data\" & Cells(row, "A").Value & j & ".txt"
Set oFile = fso.CreateTextFile(strPath)
For i = row To row + increment
oFile.WriteLine Cells(i, "F").Value
Next
oFile.Close
Set fso = Nothing
Set oFile = Nothing
row = i + 1
j = j + 1
Next
End Sub
任何见解都将不胜感激
编辑:数据看起来很普通,但是删除行后,它在脚本上出错了。在再次出错之前,脚本继续运行了一段时间。似乎脚本在非标准字符上失败了
我想这是一个不同的问题了。是否有一个编码标志或类似的东西,我可以设置它来平滑电子表格数据到.txt格式的转换?我希望避免遍历所有100k记录并逐个删除非标准字符
编辑2:原来只有十几行数据需要修改,所以我可以手工修改。我一直认为这是导致错误的原因,但多亏了Tim提供了一个简化的代码版本。在循环中修改循环计数器不是一个好主意-它可能会导致难以跟踪的错误
Sub Create_Text_Files()
Const ROWS_PER_FILE As Long = 200
Dim row As Long, lastRow As Long, j As Long, i As Long
Dim fso As Object, oFile As Object
Dim strPath
Set fso = CreateObject("Scripting.FileSystemObject")
lastRow = Cells(Rows.Count, "A").End(xlUp).row
i = 0
j = 1
For row = 2 To lastRow
If i Mod ROWS_PER_FILE = 0 Then
If Not oFile Is Nothing Then oFile.Close
strPath = "C:\data\" & Cells(row, "A").Value & j & ".txt"
Set oFile = fso.CreateTextFile(strPath)
j = j + 1
End If
oFile.WriteLine Cells(row, "F").Value
i = i + 1
Next
If Not oFile Is Nothing Then oFile.Close
End Sub
我怀疑A2919包含一个被禁止的文件名字符,如/\?%*:|“<>你知道,我原以为这会奏效,但实际上它给了我同样的错误。在同一点上失败-2919行中。还有其他想法吗?@TwoHundredOK如果你接受了它,我假设你得到了这项工作?是的,请参阅原始帖子中的编辑1和2。注意,{dim I as Long}被添加。你应该使用{Option Explicit}module.erl值列在module.erl的顶部,显示为0Close,但不完全是0Close。文件名不是问题所在。应归咎于复制到文件中的单元格中翻译错误的UTF-8字符。