• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAでわからなくなってしまったので質問します。)

VBAでわからなくなってしまったので質問します

このQ&Aのポイント
  • 初心者なのですが、EXCEL2007で製品Aと製品B~xまでの表を作成しました。製品名Aの表は名前を付けて保存すると「製品名A2456【0506】」となりますが、製品名B~Xの表はファイル名に製品名が反映されません。VBAのコードを共通して使用していますが、なぜこのような現象が起きるのか分かりません。アドバイスをお願いします。
  • VBAで製品名Aの表を作成しています。名前を付けて保存すると、「製品名A2456【0506】」となるようにしたいです。しかし、同じVBAコードを使用して製品名B~Xの表を作成しても、ファイル名に製品名が反映されません。なぜこのような違いが生じるのか分かりません。初心者ですので、アドバイスをお願いします。
  • EXCEL2007で製品Aと製品B~xまでの表を作成しました。製品名Aの表は名前を付けて保存すると「製品名A2456【0506】」となりますが、製品名B~Xの表はファイル名に製品名が反映されません。同じVBAコードを使用しているため、なぜこのような違いが生じるのか分かりません。初心者ですので、教えていただけると助かります。

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

  • ベストアンサー
  • mimeu
  • ベストアンサー率49% (39/79)
回答No.4

No.2 です 少し確認させてください 質問(1) 『Sub 最終保存()』はブックごとに作られているのですか? 質問(2) もし (1) がYesなら、それぞれのVBAコードの中で "B11","G20","B6" はそれぞれ別のセル指定になっているのですか? 質問(3) > なお、最初のRange("B11")を取り除くとコード+日付がファイル名になります。 とは、製品B~x についての事ですか? 質問(4) > Flnm = Left(wFlnm, Len(wFlnm) - 4) & wStr & ".xlsx" は、-4 ではなく -5 (".xlsx" の文字数)ではありませんか? まぁ、ゴク単純な勘違いかチョンボのような気がいたしますが ・・・ (^-^) 私の場合わからないときは、放り出して一晩寝ることにしています。 翌朝おちついてプログラムを眺めると、すぐ原因に気づくことが多くて ・・・

karacom
質問者

お礼

デバックしてみたら見えてきました。すごく単純なミスでした。 VBAの問題ではなくて、セルへの製品名入力時に製品名の後ろに大量のスペースが有りました。 製品名だけで切れてしまっていたのはそのせいでした。製品B以下のファイルがコピペだったので全部outになったのもそのせいでした。 -4も確かに-5の間違いです。 もともと.xlsだったものを.xlsxに変更したときに直し忘れていたものでした。 質問(3)でおかしなことにはたと気づきました(;^ω^) ホント、ごくごく単純なミスでした。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.3

まずはどこでコードと日付が消えたのかを調べたらどうですか。 ブレークポイントを設定して、 Flnm = Flnm & Range("B11") & Range("G20") & Format(Range("B6"), "【mmdd】") '←保存ファイル名 と Flnm = Application.GetSaveAsFilename(InitialFileName:=Flnm, _ filefilter:="Excel ファイル (*.xlsx), *.xlsx", Title:="名前を付けて保存") の各ステップの実行後のFlnmの内容を見れば原因が分かるのではないですか。 デバッグの仕方を覚えることもプログラムを作る上で重要なことですよ。 ところで、 Flnm = Left(wFlnm, Len(wFlnm) - 4) & wStr & ".xlsx" は、 Flnm = Left(wFlnm, Len(wFlnm) - 5) & wStr & ".xlsx" の間違いでは?

karacom
質問者

お礼

デバックしてみたら見えてきました。すごく単純なミスでした。 VBAの問題ではなくて、セルへの製品名入力時に製品名の後ろに大量のスペースが有りました。 製品名だけで切れてしまっていたのはそのせいでした。 -4も確かに-5の間違いです。 もともと.xlsだったものを.xlsxに変更したときに直し忘れていたものでした。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • mimeu
  • ベストアンサー率49% (39/79)
回答No.2

No1.さんと同じことを指摘したいのですが、 > Flnm = Flnm & Range("B11") & Range("G20") & Format(Range("B6"), "【mmdd】") '←保存ファイル名 ということは、製品コードはセルG20、月日はセルB6に書いてあるという前提ですよね。 それがファイル名に反映されないというのは、 製品B~xについては、セルG20、B6に製品コードと月日が 書いてないからではないでしょうか? この関係を確認すればうまくいきますよ。 余談ですが、変数の宣言はきちんとやった方がいいですよ。 面倒でも Option Explicit を使った方が結局早く目的を実現できます。 wSeq は『Dim wSeq As String』じゃなくて、『Dim wSeq As Integer』 ExitFlg も 『Dim ExitFlg As Boolean』と宣言しましょう。

karacom
質問者

補足

アドバイスありがとうございます。 変数宣言は直しました。 製品コードと日付は入力されています。 また、最初に書きましたが、製品名参照の& Range("B11")を削るとコード+日付で保存ファイル名が出てきます。 製品Aのブックではちゃんと製品名+コード+日付でファイル名が出てくるのに なぜB~xは製品名のみになるのかが分かりません。 Range参照先は各ブックで違いますが、コードと日付は参照しています。 (製品名参照先を削ることでコード+日付が出ることからも分かります)

すると、全ての回答が全文表示されます。
  • chuchuo
  • ベストアンサー率45% (99/217)
回答No.1

>>構文A~xともRangeの参照以外共通で下記です。 Rangeの参照はそれぞれ違うということですか?

karacom
質問者

補足

早速ありがとうございます。 それぞれ違うブックなので、若干ですが参照セルの位置が違います。 ただ、参照内容は同じです。

すると、全ての回答が全文表示されます。