2017-03-24 4 views
0

クエリテーブルを更新した後で、単一シートを.txtファイルとしてエクスポートしようとしました。 Workbooks.Addまたは.Copy and .PasteSpecialメソッドを使用しません。これは素晴らしい作品が、2番目に、私はエラーを取得する最初のループでQueryTableを更新し、結果をtxtファイルとしてエクスポートする(Excel VBA)

Do Until i = 5 
    With Sheets(2).QueryTables(1) 
    .Refresh BackgroundQuery:=False 
    End With 

    Sheets(2).SaveAs ThisWorkbook.path & filename & i & ".txt", _ 
    FileFormat:=xlTextMSDOS, CreateBackup:=False 

i = i + 1 
Loop 

: これまでのところ、私はこれを作りました。

+1

*私はエラーが*うまく、あなたの心やあなたの画面を読むことができません。どのようなエラーがあり、どの行がそれを発生させますか? –

+0

エラーは次のようなものです。ファイルへのアクセスがありません。ファイルが破損しているか、応答していないサーバー上にあるか、読み取り専用です。私は最初のループの後、ファイルはtxtとして保存され、xlsmはもはや存在しないのでコードの使用は不合理になると思います( 'ThisWorkbook.path')。 – H3ll0

+0

パス区切りが不足しています。これはおそらく問題です。試してみてください... SaveAs ThisWorkbook.Path&Application.PathSeparator&filename&i& ".txt" ... ' –

答えて

0

[OK]を、私は何が悪かったのかを知っています。ここに私の元のコードは次のとおりです。

Sub test() 
Dim filename As String 
Dim i As Integer 
filename = "test_txt" 
i = 0 
Do Until i = 5 
    With Sheets(2).QueryTables(1) 
    .Refresh BackgroundQuery:=False 
    End With 

    Sheets(3).SaveAs ThisWorkbook.Path & "\FOLDER\" & filename & i & ".txt", _ 
    FileFormat:=xlTextMSDOS, CreateBackup:=False 

i = i + 1 
Loop 
End Sub 

私はループでThisWorkbook.Pathを持っているので、それは私がそれを実行するたびに変化します。解決策は単純です - このように、ループoutsite ThisWorkbook.Pathを置く:

Sub test() 
Dim filename As String 
Dim saveloc as String 
Dim i As Integer 
filename = "test_txt" 
saveloc = ThisWorkbook.Path & "\FOLDER\" 
i = 0 
Do Until i = 5 
    With Sheets(2).QueryTables(1) 
    .Refresh BackgroundQuery:=False 
    End With 

    Sheets(3).SaveAs saveloc & filename & i & ".txt", _ 
    FileFormat:=xlTextMSDOS, CreateBackup:=False 

i = i + 1 
Loop 
End Sub 

おかげ@デビッドZemensの助けを!

0

Sheets(2)ThisWorkbookの一部であると仮定すると、以下試してください。

Dim sep As String 
sep = Application.PathSeparator 

With ThisWorkbook 
    Do Until i = 5 
     .Sheets(2).QueryTables(1).Refresh BackgroundQuery:=False 
     .Sheets(2).SaveAs .path & sep & filename & i & ".txt", _ 
      FileFormat:=xlTextMSDOS, CreateBackup:=False 

     i = i + 1 
    Loop 
End With 
関連する問題