我试图创建一个循环来处理多个excel文件并为每个excel文件创建文本文件。我走了很长的路,但我遇到了一个错误。
我有三段代码:1)循环,2)一些计算3)创建文本文件。彼此分开,它们像魅力一样工作,但是当我把它们放在一个子集中时(如下面的循环中所示),我得到了#34;错误的文件模式(错误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
答案 0 :(得分:1)
你的代码有点不一致,你使用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)