2016-04-28 16 views
-1

VBAを初めて使用しました。私は、別の場所から既存のファイルを開き、ワークシート名(タブ名)の名前で各ワークシートを異なるCSVファイルに保存するという要件があります。私はこのようなことを試みました。Excelファイルを開き、別のCSVファイルにワークシートを保存するVBAマクロ

Sub SplitFile() 
Dim vPath As String 
vPath = Application.ActiveWorkbook.Path 
Application.ScreenUpdating = False 
Application.DisplayAlerts = False 
For Each xWs In ThisWorkbook.Sheets 
    xWs.Copy 
    Application.ActiveWorkbook.SaveAs Filename:=vPath & "\" & xWs.Name & ".csv", FileFormat:=xlCSV, CreateBackup:=False 
    Application.ActiveWorkbook.Close False 
Next 
Application.DisplayAlerts = True 
Application.ScreenUpdating = True 
End Sub 

これは現在アクティブなワークシートで機能しますが、別のワークシートを別のパスで処理したいと考えています。

ファイルパスを保持する変数を割り当てようとしましたが、エラーがスローされました。

私を助けてください。前もって感謝します。

+0

「別のパスの別のワークシート」とはどういう意味ですか?コードを実行したいワークブックがもっとあるということですか?これは非常に不明です。 –

+0

@MacroMan、それが不明な場合は申し訳ありません。上記のコードは開いているワークブックで動作します。このマクロを実行すると、特定のパスでブックを開くことができます。 – arunpandiyarajhen

答えて

1

ブックの変数を作成して、ブックオブジェクトを割り当てる必要があります:

Sub SplitFile() 

Dim vPath As String 
Dim wb As Workbook 
Dim wbPath As Variant 

wbPath = Application.GetOpenFileName("Excel Files (*.xls*), *.xls*") 

If wbPath = False Then Exit Sub 

Set wb = Workbooks.Open(wbPath) 

vPath = wb.Path 
Application.ScreenUpdating = False 
Application.DisplayAlerts = False 
For Each xWs In wb.Sheets 
    xWs.Copy 
    Application.ActiveWorkbook.SaveAs Filename:=vPath & "\" & xWs.Name & ".csv", FileFormat:=xlCSV, CreateBackup:=False 
    Application.ActiveWorkbook.Close False 
Next 
Application.DisplayAlerts = True 
Application.ScreenUpdating = True 
End Sub 

あなたが見ることができるように、あなたはあなたのワークブックを割り当てた後、必要に応じてどこにあなたは自分のコード内でそれに参照してください。

+0

情報ありがとうございます。コードを実行すると、実行時エラー438であるというエラーが発生します。オブジェクトはこのプロパティをサポートしていません。それにはどんな理由がありますか? – arunpandiyarajhen

+0

タイプミスがありました - 更新されたコードを見てください –

関連する問題