• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBAでのCSV出力方法について)

エクセルVBAでのCSV出力方法について

このQ&Aのポイント
  • エクセルVBAを使ってCSVを出力する方法についての質問です。
  • シート1の内容をCSV化するためのVBAコードについて、修正のアドバイスを求めています。
  • シート2のコマンドボタンを押すことで、シート1の内容をCSVに出力したいと思っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.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か所でシートを指定していないのが、直接の敗因です。 シートモジュールに記載したマクロでは、明示的にシートを修飾してない場合はアクティブシートじゃなく自シートを参照します。

Hiroron12
質問者

お礼

いつもご回答下さり、ありがとうございます。 シートをアクティブにしていれば、そちらを参照するものだと勘違いしていました。 ありがとうございました。 無事実行することが出来ました。

その他の回答 (4)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.4

> Worksheets("シート1").Activate Worksheets("シート1").Select としたらどうなります?

Hiroron12
質問者

お礼

ご回答ありがとうございます。 すみません、見逃してしまっていました。 早速試して見たいと思います。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.3

STEP実行中にクリックして切替る等、ご自身でActiveSheetを変更してませんか? 書き間違いとは「どこが」「どう」間違い?

Hiroron12
質問者

お礼

書き間違いはVBAそのものではなく、説明文の方です。 すみません。 シート1をCSV化したいのにシート2をCSV化したいと書いていました。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

> '対象のシートをアクティブにする > Worksheets("シート1").Activate コードのはじめで、シート1を指定してるじゃないですか。 そのままでデータ本体を出力し始めるから、シート1のまま。 ヘッダー処理が済んだら、シート2をActivateして下さい。 ファイルオープンの後かな

Hiroron12
質問者

お礼

すみません。 書き間違えてしまいました。 先ほどのVBAで実行しても、【シート2】の内容を持って来てしまう、の誤りです。 本当は【シート1】の内容を持って来ようと思っています。 失礼しました。 改めて教えて頂ければ嬉しいです。 宜しくお願い致します。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

はて?? ご相談の状況説明: >シート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 以上です。

Hiroron12
質問者

お礼

すみません。 書き間違えてしまいました。 先ほどのVBAで実行しても、【シート2】の内容を持って来てしまう、の誤りです。 本当は【シート1】の内容を持って来ようと思っています。 失礼しました。 改めて教えて頂ければ嬉しいです。 宜しくお願い致します。

関連するQ&A