VBA 从工作表循环创建文本文件

VBA creating textfiles in a loop from a worksheet

我正在尝试创建一个循环来处理多个 excel 文件并为每个 excel 文件创建文本文件。我已经走了很长一段路,但我 运行 遇到了一个错误。

我有三段代码:1) 一个循环,2) 一些计算 3) 创建文本文件。它们彼此分开,就像一个魅力,但是当我把它们放在一个单独的子中时(如下面的循环所示)我得到 "Bad file mode (Error 54)" 命令 [Print #1, Left$(strOutput, Len(strOutput ) - 1) ' strString] 在创建文本文件时。我不明白为什么不同的代码之间会发生冲突。

循环如

Sub GEF_Processor()
Dim i As Integer
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
    .AllowMultiSelect = True
    .Show
End With

For i = 1 To fd.SelectedItems.Count
    addNewWorkBook (fd.SelectedItems.Item(i))
    Call macro3
Next i

Set fd = Nothing
End Sub

文本文件的创建过程如下

Sub macro3()

Dim hndFile                                           As Long
Dim intColumn                                         As Integer
Dim intLast_Column                                    As Integer
Dim lngLast_Row                                       As Long
Dim lngRow                                            As Long
Dim strOutput                                         As String


intLast_Column = Worksheets("CPT_DEL_AFT").UsedRange.Column - 1 +     Worksheets("CPT_DEL_AFT").UsedRange.Columns.Count
lngLast_Row =  Worksheets("CPT_DEL_AFT").UsedRange.Rows(Worksheets("CPT_DEL_AFT").UsedRange.Row s.Count).Row

hndFile = FreeFile

Open "-DEL_AFT.gef" For Output As hndFile

For lngRow = 1& To lngLast_Row

  strOutput = ""

  For intColumn = 1 To intLast_Column
      strOutput = strOutput & Worksheets("CPT_DEL_AFT").Cells(lngRow, intColumn).Value & "  "
  Next intColumn

  If Len(Trim$(Replace(strOutput, ";", ""))) > 0 Then
     Print hndFile, Left$(strOutput, Len(strOutput) - 1) ' strString
  End If

Next lngRow

Close #hndFile
End Sub

您的代码有点不一致,您正在使用 hndFile 创建文件并使用 #1 打印到它:

Open strName & "-DEL_AFT.gef" For Output As hndFile

并且:

Print #1, Left$(strOutput, Len(strOutput) - 1)

将 Print 语句更改为以下内容以保持一致性:

Print #hndFile, Left$(strOutput, Len(strOutput) - 1)