Excel 如何在将单元格值从各种工作表导出到文本文件时避免运行时错误70

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

问题: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 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”与其他子过程分开,并单独运行此子过程。那就没问题了。只有当另一个子过程调用此子过程时,才会出现问题。