Excel 如何在将单元格值从各种工作表导出到文本文件时避免运行时错误70
问题:VBA运行时错误70 当我从另一个子过程调用子过程“WriteText”时,我收到一条错误消息“Runtime error 70”,代码行是“Open strDatei1 For Output As#1” 当我用“F8”单步执行代码时,它工作正常,没有错误消息,所有变量都有正确的值。所有工作表的内容都打印到正确的*.txt文件中 有人知道如何避免错误消息吗Excel 如何在将单元格值从各种工作表导出到文本文件时避免运行时错误70,excel,vba,Excel,Vba,问题:VBA运行时错误70 当我从另一个子过程调用子过程“WriteText”时,我收到一条错误消息“Runtime error 70”,代码行是“Open strDatei1 For Output As#1” 当我用“F8”单步执行代码时,它工作正常,没有错误消息,所有变量都有正确的值。所有工作表的内容都打印到正确的*.txt文件中 有人知道如何避免错误消息吗 Sub writeTxt() Dim Rng As Range Dim i As Long Dim j As Long Dim x A
Sub writeTxt()
Dim Rng As Range
Dim i As Long
Dim j As Long
Dim x As Long
Dim cellValue As Variant
Dim nameSheet As String
Dim strDatei1 As String
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For x = 29 To 40
nameSheet = Sheets("CodeData").Cells(x, 1).Value
strDatei1 = Sheets("CodeData").Cells(x, 2).Value
Sheets(nameSheet).Select
Set Rng = Range("a1").CurrentRegion
Open strDatei1 For Output As #1
For i = 1 To Rng.Rows.Count
For j = 1 To Rng.columns.Count
cellValue = Rng.Cells(i, j).Value
If j = Rng.columns.Count Then
Print #1, cellValue
Else
Print #1, cellValue,
End If
Next j
Next i
Close #1
Next x
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
您不能总是将
用作#1
来访问文件。用于获取下一个可用的文件号:
Dim fileNumber As Integer
fileNumber = FreeFile
Open strDatei1 For Output As #fileNumber
除了您没有为
名称表
和标准日期1
赋值之外,我没有发现您的代码有任何错误。出于某种原因,我不得不在Open
语句中将文件路径作为字符串文本,否则出于某种原因,我会得到一个错误75。谢谢。nameSheet
和strDatei1
的值存储在同一工作簿的另一张表中。在调试模式下运行代码时,这两个变量的值会正确显示。在我看来,这可能是一个时间问题;也许前一个过程还没有释放文件?好吧,根据文档,在你打开一个文件之前,你必须用它的句柄关闭它,所以,如果没有发生这种情况,那么很可能是问题。我已经用“fileOpen”检查过了,所有文件的状态都是“closed”。我认为这是一个时间错误。另一个进程尚未发布这些文件,我无法找到有关如何检查并等待进程发布这些文件的任何答案。谢谢。我也试过了,但它并没有改变VBA的行为。我将子“WriteText”与其他子过程分开,并单独运行此子过程。那就没问题了。只有当另一个子过程调用此子过程时,才会出现问题。