- 締切済み
GetOpenFileNameでファイル名でのフィルタ
こんにちは, EXCEL2007 VBAを用いて ワークブックオープン時にファイル選択ダイアログを表示しています。 GetOpenFileName("日報ファイル(*.CSV),*.CSV",false) 上記は拡張子*.CSVでフィルタを掛けていますが、 ファイル名を絡めてフィルタを掛けることはできないのでしょうか? 日報ファイルなら*day.CSV,月報なら*month.CSVといった様に・・・ GetOpenFileName("日報ファイル(*day.CSV),*day.CSV",false) 上の様にすると*.*となりフィルタがかかりません。 ファイル選択ダイアログのファイル名のところに*day.CSVと手入力すれば フィルタがかかります。これをVBAから行えないでしょうか? よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 私は、今の段階で、Excel 2007 をインストールすることできない(併用すると誤動作の恐れがあるから)ので、はっきりしたことは言えません。もう、これ以上は、実際に、2007 のVBA上で、やってみないとわかりません。 最終的にできるかどうかは、ファイルオープンダイアログで、手動で可能なのかどうか、ということに係っていると思うのです。これは、あくまでも、ファイルオープンダイアログだけの問題で、できなければ、UserForm など、他のものを使ったりして、それはそれで手段はあるのですが。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 ひとつだけ気になるのは、 Application.Dialogs(xlDialogOpen).Show("*day.csv") 一体、どのような、エラーが返るのでしょうか? Dim Ret As Variant Ret = Application.Dialogs(xlDialogOpen).Show("*day.csv") ではダメでしょうか? Dialogs Object (2007) ↓
補足
おつきあい&URLありがとうございます。 エラーが出るのではなく、オープンダイアログは表示されますがフィルターがセットされません。 "*day.csv"どころか"*.CSV","*.XLSなど通常のフィルタすらかかりませんでした。 (ダイアログのファイル種別はデフォルトで、ファイル名はブランクです) 戻り値を返す様にしても同様です。ちなみに実行時の戻り値は正常でした。(選択でTrue、キャンセルでFalse) もう少し悩んでみます。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 フィルタを掛けるだけでよいなら、以下のようにすればよいです。 With Application.Dialogs(xlDialogOpen) .Show "*day.csv" End With
お礼
ご回答ありがとうございます。 Application.Dialogs(xlDialogOpen).Show("*day.csv") ためしてみましたがだめでした。 ちなみにExcel2000で試すとちゃんとファイル名のところにセットされました。 普通に Application.Dialogs(xlDialogOpen).Show("*.csv") でやってもうまくいかないので2007固有の問題かな?
- bonaron
- ベストアンサー率64% (482/745)
> GetOpenFileName("日報ファイル(*.CSV),*.CSV",false) GetOpenFileName("日報ファイル(*.CSV),*.CSV",,,,false) ではないでしょうか。
お礼
ご返答ありがとうございます。 この関数のパラメータは省略しても大丈夫な様です。 Application.GetOpenFileName("日報ファイル(*day.CSV),*day.CSV",,,,false) (Applocationが抜けてました。すみません。) 念のため試してみましたがやはりだめでした。
お礼
お世話になります。 結局、上手くいきませんでしたのでファイル種別ごとにフォルダを 分けました。 メニュー(リボン)の操作なども変わっているので悪戦苦闘です。 長々とお付き合い有難うございました。