このコード(Source)は、複数のテキストファイルをすべて同じフォルダに入れ、それぞれ個別のワークシートを作成します。これは1つのファイルに対して機能しますが、2番目のファイルで実行するときに、タイトルにエラーメッセージが表示されます。Excel VBA - ワークシートを分離するためのテキストファイル:オブジェクト変数またはブロック変数が設定されていない
私はすべての変数が設定されていると思いますし、ループ内で変数を設定して、インクリメンタを動かしてxTempWb.Sheets(1).Copy
をxTempWb.Sheets(1).Add
に変更してみました。私はまた、Stack Overflowに関する多くの質問とMSDNのドキュメントを参考にしました。
それはラインでのエラーハンドラにジャンプ:xTempWb.Sheets(1).Copy
Sub CombineTextFiles()
'update by ExtendOffice 20151015
Dim xFilesToOpen As Variant
Dim I As Integer
Dim xWb As Workbook
Dim xTempWb As Workbook
Dim xDelimiter As String
Dim xScreen As Boolean
On Error GoTo ErrHandler
xScreen = Application.ScreenUpdating
Application.ScreenUpdating = False
xDelimiter = "|"
xFilesToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt", , "Kutools for Excel",, True)
If TypeName(xFilesToOpen) = "Boolean" Then
MsgBox "No files were selected", . "KuTools for Excel"
GoTo ExitHandler
End If
I = 1
Set xTembWb = Workbooks.Open(xFilesToOpen(I))
xTempWb.Sheets(1).Copy
Set xWb = Application.ActiveWorkbook
xTempWb.Close False
xWb.Worksheets(I).Columns("A:A").TextToColumns _
Destination:=Range("A1"), DataType = xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=False, SemiColon:=False, _
Comma:=False, Space:=False, _
Other:=True, OtherChar:="|"
Do While I < UBound(xFilesToOpen)
I = I + 1
Set xTembWb = Workbooks.Open(xFilestoOpen(I))
With xWb
xTempWb.Sheets(1).Move after:=.Sheets(.Sheets.Count)
.Worksheets(I).Columns("A:A").TextToColumns _
Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=False, Semicolon:=False, _
Comma:=False, Space:=False, _
Other:=True, OtherChar:=xDelimiter
End With
Loop
ExitHandler:
Application.ScreenUpdating = xScreen
Set xWb = Nothing
Set xTempWb = Nothing
Exit Sub
ErrHandler
MsgBox Err.Description, , "KuTools For Excel"
Resume ExitHandler
End Sub
End Sub
enter code here
これでも失敗します。 :)コードは大丈夫、ちょうど入力ミスです。 'Option Explicit'を使わない古典的なケース – cyboashu
' xTembWb' right @cyboashu? –
はい。そのとおり。 – cyboashu