VBA在工作表的循环中创建文本文件

时间:2015-01-20 16:51:53

标签: excel vba loops export text-files

我试图创建一个循环来处理多个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

1 个答案:

答案 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)