fc2ブログ

(元)社内SEの徒然なる日記

Excel2010のGetSaveAsFilenameメソッドでファイル名が消えた

ファイル名が消えた!

Excelのマクロで、ファイルを保存する処理を実装しているものがあるのですが、ある日、ユーザーから「保存できなくなった」という問合せを受けました。

実際に画面を見せてもらうと、GetSaveAsFilenameメソッドの動作が何やら変です。
ファイル名をシステム側で自動設定させているのですが、なぜかファイル名が空白になっています。

ソースはこんな感じです。

'ワーク変数
Dim myFile
Dim myName As String

'適当に名前を付ける
myName = "金剛.csv"

'GetSaveAsFilenameメソッドを実行
myFile = Application.GetSaveAsFilename(myName, "CSVファイル,*.CSV", 0)


結構、多くのユーザーが使用しているExcelマクロなのですが、こんな事象は初めてです。
ためしに、私のパソコン(WindowsXP & Excel2010)で同じ処理を動かしたら、問題なく動作しました。

環境問題か?

実は、心当たりはありました。
ちょうど、OSがWindowsXPからWindows7に切り替えている時期でして、もしかして、その絡みかと想定してみます。

同じ時期に、Excelのバージョンも2000から2010に切替中でもあったのですが、私のXP&2010で問題が再現しないので、Windows7の問題と判断しました。

...まぁ、7&2010の組合せで発生するって可能性もあるのですが、それは手詰まりになってから考えるってことで。

GetSaveAsFilenameってどこの処理?

Application.GetSaveAsFilenameってメソッドは、ファイルの保存画面を表示するのですが、どう考えても、Excelではなく、OS側の機能を呼出しているとしか思えません。

実際に、XPと7では表示される画面も違いますしね。

もしかして、7で仕様が変わったのか?

試行錯誤しました

いろいろ、試行錯誤したのですが、最終的にはこれで解決しました。

修正前

myFile = Application.GetSaveAsFilename(myName, "CSVファイル,*.CSV", 0)


修正後

myFile = Application.GetSaveAsFilename(myName, "CSVファイル,*.csv", 0)


第二引数のFileFilterで指定している拡張子を、大文字から小文字に変えただけです。
どうやら、7では拡張子の判定が厳しくなったようですね。

他にもいろいろ試したので紹介します。

まず、第一引数のファイル名の規定値で拡張子を除くこと。拡張子の設定は、第二引数「FileFilter」で設定した拡張子が自動的に追加されるので、そちらを使用する。
拡張子を指定したい場合は、FileFilterに合致する拡張子にする。拡張子は大文字と小文字も一致させること。

こんな感じのルールで運用したところ、きちんと動作するようになりました。

後書き

私の会社は、ユーザーの利便性を高めるためにEUCの活用は、結構積極的に行っています。
私たちも、基幹システムと連動するためのExcelとかを提供していたりします。

そんな中で、OSのバージョンアップ(XP→7)と、Officeのバージョンアップ(2000→2010)が行われたものですから、結構ビビっていたのですが、思ったほどの問題にはなりませんでした。

もちろん、ユーザーからかなりの問い合わせがあったのですが、大体は使用方法の確認であって、今回のような問題に発展するケースは少数、案ずるより産むがやすしですね。

まぁ、その少数の中にはOfficeベースのソフトを購入していて、バージョンアップが必要(つまり買い直し)とか言うのもあったりして、大変は大変だったんですけどね。

スポンサードリンク

PageTop

コメント


管理者にだけ表示を許可する
 

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

| | 2014-12-11(Thu)12:29 [編集]


めちゃくちゃ参考になりました

めちゃくちゃ参考になりました
"まず、第一引数のファイル名の規定値で拡張子を除くこと。拡張子の設定は、第二引数「FileFilter」で設定した拡張子が自動的に追加されるので、そちらを使用する。"
上記説明がストライクに入り無事解決しました!
ありがとうございました

小川 | URL | 2016-11-24(Thu)20:44 [編集]


Re: めちゃくちゃ参考になりました

> めちゃくちゃ参考になりました
ありがとうございます。
参考になったようで書いた甲斐がありました!

ハリコフ | URL | 2016-11-26(Sat)00:25 [編集]