※ 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コードを使用しているため、なぜこのような違いが生じるのか分かりません。初心者ですので、教えていただけると助かります。
VBAでわからなくなってしまったので質問します。
初心者なのですが、下記の問題にあたってしまい困っています。
製品Aと製品B~xまでEXCEL2007で表を作ってあります。
A~xまで同じVBA構文を使っていますが、
Aは名前を付けて保存すると 製品名A2456【0506】と製品名+コード番号+年月になります。
しかし、B~xは製品名B~Xのみがファイル名になってしまいます。
構文A~xともRangeの参照以外共通で下記です。
Sub 最終保存()
Dim wSeq As String
Dim wStr As String
Dim Flnm As String
Dim wFlnm As String
'
Flnm = "C:\Documents and Settings\user\My Documents\受検ファイル\受検済み\" '←保存先フォルダ
Flnm = Flnm & Range("B11") & Range("G20") & Format(Range("B6"), "【mmdd】") '←保存ファイル名
Flnm = Application.GetSaveAsFilename(InitialFileName:=Flnm, _
filefilter:="Excel ファイル (*.xlsx), *.xlsx", Title:="名前を付けて保存")
If Flnm = "False" Then
Exit Sub
End If
'
wSeq = 0
ExitFlg = False
wFlnm = Flnm
Do While ExitFlg = False
If Dir(Flnm) <> "" Then
'存在したら、連番を加算
wSeq = wSeq + 1
wStr = "(" & wSeq & ")"
Flnm = Left(wFlnm, Len(wFlnm) - 4) & wStr & ".xlsx"
Else
'存在しない時、保存
ActiveWorkbook.SaveAs Filename:=Flnm, FileFormat:=xlOpenXMLWorkbook
ExitFlg = True
End If
Loop
End Sub
Rangeの「B11」が製品名、「G20」がコード番号、「B6」が2010年5月○日という日付になっています。
なお、最初のRange("B11")を取り除くとコード+日付がファイル名になります。
なぜ、製品Aは出来てB~xが出来ないのか分かりません。
アドバイスお願いします。
お礼
デバックしてみたら見えてきました。すごく単純なミスでした。 VBAの問題ではなくて、セルへの製品名入力時に製品名の後ろに大量のスペースが有りました。 製品名だけで切れてしまっていたのはそのせいでした。製品B以下のファイルがコピペだったので全部outになったのもそのせいでした。 -4も確かに-5の間違いです。 もともと.xlsだったものを.xlsxに変更したときに直し忘れていたものでした。 質問(3)でおかしなことにはたと気づきました(;^ω^) ホント、ごくごく単純なミスでした。 ありがとうございました。