- ベストアンサー
エクセルVBAでのCSV出力方法について
- エクセルVBAを使ってCSVを出力する方法についての質問です。
- シート1の内容をCSV化するためのVBAコードについて、修正のアドバイスを求めています。
- シート2のコマンドボタンを押すことで、シート1の内容をCSVに出力したいと思っています。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
ご相談の書き間違いまで全部想定して「ご相談に書かれてることが全部正しければこう、ここが間違いてる場合はこう、あっちが間違いならこう」と回答しなきゃダメですかね。 まぁでも、こちらの回答1にもマクロの読み違いがあったので、一応チャラということで。 改めて。 でもふつーに各部で「ここはシート1から持ってくる」「こっちはシート2から持ってくる」と、丁寧に作成してみればよいだけでは。 : 'ファイル名の取得 MyFile = worksheets("sheet1").Range("A1") & ".csv" ’★ : '使用しているセルの取得 Set UsedCell = worksheets("Sheet1").UsedRange ’★ : Write #ch1, worksheets("Sheet1").Cells(Rowcnt, Colcnt); ; Write #ch1, worksheets("Sheet1").Cells(Rowcnt, EndCol) 結局最後の2か所でシートを指定していないのが、直接の敗因です。 シートモジュールに記載したマクロでは、明示的にシートを修飾してない場合はアクティブシートじゃなく自シートを参照します。
その他の回答 (4)
- bin-chan
- ベストアンサー率33% (1403/4213)
> Worksheets("シート1").Activate Worksheets("シート1").Select としたらどうなります?
お礼
ご回答ありがとうございます。 すみません、見逃してしまっていました。 早速試して見たいと思います。
- bin-chan
- ベストアンサー率33% (1403/4213)
STEP実行中にクリックして切替る等、ご自身でActiveSheetを変更してませんか? 書き間違いとは「どこが」「どう」間違い?
お礼
書き間違いはVBAそのものではなく、説明文の方です。 すみません。 シート1をCSV化したいのにシート2をCSV化したいと書いていました。
- bin-chan
- ベストアンサー率33% (1403/4213)
> '対象のシートをアクティブにする > Worksheets("シート1").Activate コードのはじめで、シート1を指定してるじゃないですか。 そのままでデータ本体を出力し始めるから、シート1のまま。 ヘッダー処理が済んだら、シート2をActivateして下さい。 ファイルオープンの後かな
お礼
すみません。 書き間違えてしまいました。 先ほどのVBAで実行しても、【シート2】の内容を持って来てしまう、の誤りです。 本当は【シート1】の内容を持って来ようと思っています。 失礼しました。 改めて教えて頂ければ嬉しいです。 宜しくお願い致します。
- keithin
- ベストアンサー率66% (5278/7941)
はて?? ご相談の状況説明: >シート2のコマンドボタンを押すことでシート1の内容をCSV化したいと考えています。 : >どうしてもシート1の内容を持ってきてしまいます。 >どのように改修したらシート2の内容を持ってこれるでしょうか。 実際のマクロ: >'対象のシートをアクティブにする >Worksheets("シート1").Activate : >'使用しているセルの取得 >Set UsedCell = ActiveSheet.UsedRange : あと、 >シート1のA1に入力した内容がCSVのタイトルになります。 このご説明も実際のマクロとは食い違っています。 -------------------------- それで結局。 ヤリタイ事: 1.CSVのファイル名はシート1記載の内容じゃなくて、マクロ動作中にインプットしたい 2.シート2のデータを書き出したい 現在のマクロの修正箇所 変更前: '対象のシートをアクティブにする Worksheets("シート1").Activate 変更後: '対象のシートをアクティブにする Worksheets("シート2").Activate 以上です。
お礼
すみません。 書き間違えてしまいました。 先ほどのVBAで実行しても、【シート2】の内容を持って来てしまう、の誤りです。 本当は【シート1】の内容を持って来ようと思っています。 失礼しました。 改めて教えて頂ければ嬉しいです。 宜しくお願い致します。
お礼
いつもご回答下さり、ありがとうございます。 シートをアクティブにしていれば、そちらを参照するものだと勘違いしていました。 ありがとうございました。 無事実行することが出来ました。