2017-05-01 11 views
0

私はCSV形式で(区切り記号としてカンマを使用して)、この場合は最初の7枚のExcelファイルをエクスポートできます。私は次のような問題があります:VBA - 複数のシートCSVを同じフォルダにエクスポート

  1. 最初の1 - nシートをエクスポートすることができますが、コードを名前で選択することができます。この場合、「MILANO」というシート1と「ROME」というシート5をエクスポートすることもできます。

  2. ソースエクセルファイルの同じフォルダにCSVファイルを自動的に保存する方法が見つかりません。私は数百行を参照してくださいCSVのように私は、空でない各シートの行のみをエクスポートすることはできません何か

  3. を私はActiveWorkbook.PathまたはThisWorkbook.Pathを使用しますが、私は私が間違っていると思います,,,,,,,,ここで、マクロ

Sub CreateCSV() 
Application.ScreenUpdating = False 
Application.DisplayAlerts = False 
'----------------------------- 
'DECLARE AND SET VARIABLES 
Dim wb1 As Workbook, ws1 As Worksheet 
Dim wbname As String, I As Integer 
Set wb1 = ThisWorkbook 
'----------------------------- 
'CYCLE THROUGH SHEETS AND MATCH UPLOAD 
For I = 1 To 7 
wbname = Worksheets(I).Name 

'----------------------------- 
'COPY SHEET INTO NEW CSV FILE 
    Worksheets(I).Copy 
    ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "/" & wbname &  "/.csv", _ 
    FileFormat:=xlCSV, CreateBackup:=False 
    ActiveWorkbook.Close 
    wb1.Activate 
Next I 
'----------------------------- 
'CLEANUP 
Application.DisplayAlerts = True 
Application.ScreenUpdating = True 
End Sub 

ありがとう!

答えて

0

あなたのポイント2

ActiveWorkbook.SaveAsファイル名のためにこれを試してください:あなたができる名前であなたのシートへのアクセスに関しては

+0

申し訳ありませんが、私はすでに試しましたが、エラーが発生します。他の解決策? – Echecivuole

0

_、= wb1.Path & "\" & wbname & ".CSV"これを行うには、

set sh = ThisWorkBook.Sheets("MILANO") 

いますが、とにかくあなたのシートをループにしたいであろうから、あなたはとても好きシート名の配列を持っている必要がある、

Dim mySheets as Variant 
Dim sh as WorkSheet 
Dim I as Long 

mySheets=Array("MILANO" , "MONACO", "ROME") 

For I = 0 to UBound(mySheets) 
    Set sh = ThisWorkBook.Sheets(mySheets(I)) 
    sh.SaveAs FileName:=ThisWorkBook.Path & "\" & mySheets(I), _ 
       FileFormat:=xlCSV 
Next I 

だから、私の知る限りで数百行を参照してくださいCSVのように、私は各シート非空の行のみをエクスポートすることはできません」とWorkSheet.SaveAsなくWorkBook.SaveAsに

を使用する必要があります,,,,,,,, "最初にワークシートをクリーンアップする必要があるかもしれません。

+0

ありがとう、gr8tech!申し訳ありませんが、私はあまりVBAに精通していません、あなたの貢献を含むコード全体を投稿できますか? :) – Echecivuole

+0

私はこのコードを適用しました: 'Sub CreateCSV() Application.ScreenUpdating = False Application.DisplayAlerts = False '----------------------- UBound関数にI = 0 I限り mySheets =アレイ( "ダッシュボード"、 "製品"、 "施設") (mySheets)ワークシート 暗いとしてバリアント として------薄暗いmySheets薄暗いSH セットSH = ThisWorkbook.Sheets(mySheets(I)) H& "\" &mySheets(I)、_ なFileFormat:= xlCSV 次のI 「------------- ---------------- 'CLEANUP Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub'ですが、私はsaveasでエラーが発生します – Echecivuole

関連する問題