• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAで新規ファイル名)

VBAで新規ファイル名を指定して保存する方法

このQ&Aのポイント
  • VBAを使用して、あるテンプレートのファイルを開いて指定された名前で保存する方法について解説します。
  • 具体的には、自動的にファイルの保存先を設定し、ファイル名には指定されたセルの値を使用します。
  • また、保存されるファイル名の形式は「日付 - 名前 - 試作」となります。

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

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

ThisWorkbook.Sheet1.Range("B3").Value ↓ ThisWorkbook.Worksheets("Sheet1").Range("B3").Value こうするとどないだ。 これだけではなんなのでちょっと解説を。 ThisWorkbook.Sheet1 この書き方だと、ThisWorkbook(自分自身のブックを指すExcel.Workbookクラスのインスタンスを返す)にSheet1というメソッドないしはプロパティがあるというプログラムになる。Excel.Workbookクラスのメソッドにはシート一覧(Excel.Worksheetsクラスのインスタンス)を返すWorksheetsメソッドがあり、さらにExcel.Worksheetsクラスには個々のシートを返すItems(key)というメソッドがある。なので、上のコードはより正確に書くと ThisWorkbook.Worksheets.Items("Sheet1").Range("B3").Value となるが、Excel.WorksheetsクラスのItemsメソッドはメソッド名を省略する事ができる(これを規定のプロパティ、規定のメソッドなどと呼ぶ)のでWorksheets("Sheet1")と書いてもOKなのよん。

shintoshin258
質問者

お礼

ご回答ありがとうございます。仰るとおりにすると、うまくいきました。書き方によってはメソッドとして処理してしまう場合があるのですね。 Itemsは知らなかったです! ファイルだけでなく、シートの参照もかなり奥が深いのですね。

その他の回答 (1)

  • jcctaira
  • ベストアンサー率58% (119/204)
回答No.3

shintoshin258さん こんにちは。 多分、皆さん誰も何が問題かわからないと思います。 失礼ですが、VBAは初心者ですか? 問題点が絞られているのなら、ご自身でセルB3の内容を確かめれば良いことだけです。 回答者はセルB3に何が入っているのか分かりませんので… 【一応質問に対しての回答ですが】 「ThisWorkbook.Sheet1.Range("B3").Value」が正しいですか?とのことだと思います。 完璧に正しいです。 Sheet1が初期のままで、修正していなければOKのはずです。 確認するとしたら、VBE画面の左にツリーでVBAProject--Sheet1(Sheet1)になっていると思います。 括弧の中がシートタブの名前で、左側のSheet1がオブジェクト名です。 【問題があればデバッグすれば良いです】 イミディエイト(ウィンドウ)があるかと思います。…表示されていなければctrl+Gで表示して下さい。 そこで ? ThisWorkbook.Sheet1.Range("B3").Value と入力して Enterを押せばセルB3の 値が表示されると思います。 その値を確認して下さい。 注)? は Print と同じです。 ちなみに「ChDir "C:\Users\H1250-201\Desktop"」の命令を実行していますが、意味がないです。 Workbooks.Open Filename:="C:\Users…とフルパスを指定していますので、Chdirは必要ありません。 またまた「ちなみに」となりますが、 「ChDir "D: …」も意味がありません。 ChDirを行う前に【ChDrive "D" 】をしないと意味がありません。 申し訳ありませんが、もし初心者の方なら一つずつ命令の意味や作用を丁寧に理解しないと、無駄で雑で分かりにくいプログラムになってしまいます。 頑張って勉強して下さい。 

shintoshin258
質問者

お礼

ご回答ありがとうございます。私は、VBA初心者です。今まではマクロの記録を主な手段として使っていたため、どうしても無駄なコードが多くなりがちでした。これからもっと勉強して適切にプログラムできたらと思います。