初めて自分の家と他人の家が違う、と意識した時

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 の環境で、以前と同様、[名前を付けて保存] ダイアログを表示した際、変数で取得した値をファイル名ボックスに自動的に挿入するコードを教えてください。

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

A 回答 (1件)

こんにちは。



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

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

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

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

お礼日時:2014/03/11 09:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報