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のクラッシュとちょうどいくつかの歓迎のテキストは非常に最初のシートをエクスポートするときと全く必要ありません。
ありがとう、これは本当にそれを行うには素晴らしい方法です、私は本当にアイデアが好きです!しかし、私はあなたのコードを実装し、スクリプトを実行する場合、これはまだ起こります: "どこかに保存する"ボックスが来る、私は大丈夫、VBAプロジェクトを閉じ、すべてのシートが閉じられ、 VBAのウィンドウは私の前にとどまっています...そして、忘れてしまいます。最初の情報シートがエクスポートされます。非常に最初のシートのように。 –
別のフォーラムの別の専門家が、問題の内容を指摘しました。 SaveAsメソッドが原因でした。 'NewSheet = Sheets.Add シート( "ときWork1")範囲( "X:Y")が設定してください。。コピー先:= NewSheet.Range( "A1") NewSheet.Move が、WB = ActiveWorkbook' を設定します。これはトリックでした。 –