こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel2010VBAで名前を付けて保存

Windows XP + Excel 2010 の際、社内の定型ドキュメントを保存する際、以下のようにして [名前を付けて保存] ダイアログを表示し、ファイル名ボックスに FileName 変数の値を入れておりました。

Dim FileName As String
(中略)

FileName = xxxx & yyyy & zzzz (<--- xxxx、yyyy、zzzz は毎回値が変化するので、別の変数を使用して値を取得しています)

SaveFileName=Application.GetSaveAsFilename(InitialFileName:=FileName)

If SaveFileName <> "False" Then
ActiveWorkbook.SaveAs Filename:=SaveFileName, FileFormat:=xlOpenXMLWorkbook
MsgBox "このブックを保存しました。"
Else
MsgBox "保存がキャンセルされました。"
End If

End Sub

しかし、Win7Pro+Excel2010 のマシンにリプレイスし、同一の vba を動かしますと [名前を付けて保存] ダイアログでファイル名が空白になり、FileName 変数の値を取得してくれなくなってしまいました。

なお、SaveFileName 以降の文字列をコメントアウトし、SaveFileName の直前で Msgbox FileName を
実行すると、意図したとおり FileName 変数が働き、ファイル名を取得してくれています。

また、InitialFileName 以降の文字列を固定値にする ("" で囲む) と、InitialFileName で指定した文字列を取得して [名前を付けて保存] ダイアログを表示します。

OS の変更に伴うこのような動作の変更の差異が何にあるのかわかりません。
Win7+Excel2010 の環境で、以前と同様、[名前を付けて保存] ダイアログを表示した際、変数で取得した値をファイル名ボックスに自動的に挿入するコードを教えてください。

よろしくお願いいたします。

投稿日時 - 2014-03-11 00:34:31

QNo.8508702

困ってます

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

こんにちは。

SaveFileName = Application.GetSaveAsFilename(InitialFileName:=FileName, FileFilter:="Excel ブック, *.xlsx")

Win7/Xl2010では、こんな風にすればいけるかと。
互換の問題は私には解り兼ねますが、最悪でもApplication.Version等で分岐は可能かと。

投稿日時 - 2014-03-11 01:31:26

お礼

cj_moverさん、早速のコメントをくださりありがとうございました!
おかげさまで解決しました。

今後ともよろしくお願いします。

投稿日時 - 2014-03-11 09:35:34

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問