• 締切済み

GetOpenFileNameでファイル名でのフィルタ

こんにちは, EXCEL2007 VBAを用いて ワークブックオープン時にファイル選択ダイアログを表示しています。  GetOpenFileName("日報ファイル(*.CSV),*.CSV",false) 上記は拡張子*.CSVでフィルタを掛けていますが、 ファイル名を絡めてフィルタを掛けることはできないのでしょうか? 日報ファイルなら*day.CSV,月報なら*month.CSVといった様に・・・  GetOpenFileName("日報ファイル(*day.CSV),*day.CSV",false) 上の様にすると*.*となりフィルタがかかりません。 ファイル選択ダイアログのファイル名のところに*day.CSVと手入力すれば フィルタがかかります。これをVBAから行えないでしょうか? よろしくお願いいたします。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 私は、今の段階で、Excel 2007 をインストールすることできない(併用すると誤動作の恐れがあるから)ので、はっきりしたことは言えません。もう、これ以上は、実際に、2007 のVBA上で、やってみないとわかりません。 最終的にできるかどうかは、ファイルオープンダイアログで、手動で可能なのかどうか、ということに係っていると思うのです。これは、あくまでも、ファイルオープンダイアログだけの問題で、できなければ、UserForm など、他のものを使ったりして、それはそれで手段はあるのですが。

a1b2c3d4e5f6g7h8
質問者

お礼

お世話になります。 結局、上手くいきませんでしたのでファイル種別ごとにフォルダを 分けました。 メニュー(リボン)の操作なども変わっているので悪戦苦闘です。 長々とお付き合い有難うございました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 ひとつだけ気になるのは、 Application.Dialogs(xlDialogOpen).Show("*day.csv") 一体、どのような、エラーが返るのでしょうか? Dim Ret As Variant Ret = Application.Dialogs(xlDialogOpen).Show("*day.csv") ではダメでしょうか? Dialogs Object (2007) ↓

参考URL:
http://msdn2.microsoft.com/en-us/library/bb223747.aspx
a1b2c3d4e5f6g7h8
質問者

補足

おつきあい&URLありがとうございます。 エラーが出るのではなく、オープンダイアログは表示されますがフィルターがセットされません。 "*day.csv"どころか"*.CSV","*.XLSなど通常のフィルタすらかかりませんでした。 (ダイアログのファイル種別はデフォルトで、ファイル名はブランクです) 戻り値を返す様にしても同様です。ちなみに実行時の戻り値は正常でした。(選択でTrue、キャンセルでFalse) もう少し悩んでみます。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 フィルタを掛けるだけでよいなら、以下のようにすればよいです。  With Application.Dialogs(xlDialogOpen)    .Show "*day.csv"  End With

a1b2c3d4e5f6g7h8
質問者

お礼

ご回答ありがとうございます。 Application.Dialogs(xlDialogOpen).Show("*day.csv") ためしてみましたがだめでした。 ちなみにExcel2000で試すとちゃんとファイル名のところにセットされました。 普通に Application.Dialogs(xlDialogOpen).Show("*.csv") でやってもうまくいかないので2007固有の問題かな?

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.1

> GetOpenFileName("日報ファイル(*.CSV),*.CSV",false)  GetOpenFileName("日報ファイル(*.CSV),*.CSV",,,,false) ではないでしょうか。

a1b2c3d4e5f6g7h8
質問者

お礼

ご返答ありがとうございます。 この関数のパラメータは省略しても大丈夫な様です。 Application.GetOpenFileName("日報ファイル(*day.CSV),*day.CSV",,,,false) (Applocationが抜けてました。すみません。) 念のため試してみましたがやはりだめでした。