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

我试图创build一个循环来处理多个Excel文件,并为每个Excel文件文本文件创build。 我走了很长的路,但我遇到了一个错误。

我有三块代码:1)一个循环,2)一些计算3)创build文本文件。 分离彼此,他们的工作就像一个魅力,但是当我把它们放在一个单一的子(如下面的循环显示),我得到“错误的文件模式(错误54)”的命令[打印#1,左$(strOutput ,Len(strOutput) – 1)'strString]创build文本文件时。 我不明白为什么不同的代码之间有冲突。

循环是

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 

文本文件的创build就像

 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创build文件,#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)