2016-12-13 11 views
0

私はVBAプログラミングにはかなり新しいですが、ExcelシートをCSVファイルにエクスポートする小さなコードを作成しています。これはできるだけユーザーフレンドリーでなければならないので、私はこれを考え出しました。Excel VBA特定の列をCSVにエクスポート

Sub export_first() 

    Application.DisplayAlerts = False 

    Dim wb As Workbook, InitFileName As String, fileSaveName As String 

    InitFileName = ThisWorkbook.Path & "\Export nr1_" & Format(Date, "yyyymmdd") 

    Sheets("MySheetNameToExport").Copy 

    Set wb = ActiveWorkbook 

    fileSaveName = Application.GetSaveAsFilename(InitialFileName:=InitFileName, _ 
    fileFilter:="Semicolon separated CSV (*.csv), *.csv") 

    With wb 
     If fileSaveName <> "False" Then 

      .SaveAs fileSaveName, FileFormat:=xlCSV, Local:=True 
      .Close 
     Else 
      .Close False 
      Exit Sub 
     End If 
    End With 

End Sub 

これはうまくいきます。ボタンに追加され、ボタンが押されると、コードはすべてのジョブを実行します。さて、私の同僚は、ユーザーの一部の値をチェックする列を使用する必要があります(C、Dと呼ぶことができます)が、ワークシートをエクスポートするときには、これらの列を無視してエクスポートする必要があります。私は何をしようとしたことのようなシートラインを拡張することです:

Sheets("MySheetNameToExport").Range("A:B, E:G").Copy 

しかし、私は私のマクロにこの変更されたラインを追加し、コードを実行して、Excelのクラッシュとちょうどいくつかの歓迎のテキストは非常に最初のシートをエクスポートするときと全く必要ありません。

答えて

1

最初に列CとDを非表示にして、表示範囲のセルのみを範囲からコピーすることをお勧めします。

Columns("C:D").EntireColumn.Hidden = True 
Sheets("MySheetNameToExport").Range("A:G").SpecialCells(xlCellTypeVisible).Copy 
+0

ありがとう、これは本当にそれを行うには素晴らしい方法です、私は本当にアイデアが好きです!しかし、私はあなたのコードを実装し、スクリプトを実行する場合、これはまだ起こります: "どこかに保存する"ボックスが来る、私は大丈夫、VBAプロジェクトを閉じ、すべてのシートが閉じられ、 VBAのウィンドウは私の前にとどまっています...そして、忘れてしまいます。最初の情報シートがエクスポートされます。非常に最初のシートのように。 –

+0

別のフォーラムの別の専門家が、問題の内容を指摘しました。 SaveAsメソッドが原因でした。 'NewSheet = Sheets.Add シート( "ときWork1")範囲( "X:Y")が設定してください。。コピー先:= NewSheet.Range( "A1") NewSheet.Move が、WB = ActiveWorkbook' を設定します。これはトリックでした。 –

関連する問題