Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(その他 : Access 2021)
WizHook.GetFileNameのパス指定が効かなくなった
投稿日時: 23/05/01 16:38:21
投稿者: 滝沢

WizHook.Key = 51488399
Res = WizHook.GetFileName(0, "", "ファイルを選択", "", Fn, Nz([パス]), "すべてのファイル (*.*)|*.*", 0, 0, 4, True)
 
csvファイルを取込むための仕組みで上記コードを使用しています。
4種類取り込む内容があり[パス]にはそれぞれcsvファイルが置いてあるパスが固定で指定されています。
 
この内容で今まで(access2010:windows2012:access)は正しく動作していましたが、
サーバーを新しく(windows2019:access2021)したところ、パス指定が下記の通りおかしくなってしまいました。
・起動後1つ目は[パス]で指定通りのフォルダが初期表示される。
・2つ目は[パス]通りではなく、初回に指定したフォルダが初期表示されてしまう。
・3つ目は2つ目で指定し直したフォルダが初期表示されてしまう。
 
何か設定が漏れているかもしれません。
指定通りに動かす方法はありませんでしょうか。
よろしくお願い致します。

回答
投稿日時: 23/05/02 09:26:24
投稿者: Suzu

引用:
・起動後1つ目は[パス]で指定通りのフォルダが初期表示される。
・2つ目は[パス]通りではなく、初回に指定したフォルダが初期表示されてしまう。
・3つ目は2つ目で指定し直したフォルダが初期表示されてしまう。

 
これは、デフォルトファイルパスを指定しない場合の動作です。
 
 
調べてみるとデフォルトファイルのパスは 第五引数 であり
滝沢 さんの引用:
WizHook.GetFileName(0, "", "ファイルを選択", "", Fn, Nz([パス]), "すべてのファイル (*.*)|*.*", 0, 0, 4, True)

今回のコードで言うならば Fn の 部分。
 
Fn が パスとして認識できていないので、ご質問の様な動作になるのでしょう。
 
 
引用:
今まで(access2010:windows2012:access)は正しく動作していましたが、
サーバーを新しく(windows2019:access2021)したところ

 
今まで動いていたとの事ですが、
・コード転記の際に間違えた
・WizHook自体が非公式のオブジェクトであり、Accessのバージョンが変わった事で
 引数の内容が変わった
のかは判りません。
 
少なくとも、非公式は使えなくなったりしても文句は言えません。
 
 
少なくとも公式で扱っている GetOpenFileName の方が 良いかもしれませんね。
https://www.moug.net/tech/acvba/0020007.html
https://learn.microsoft.com/ja-jp/office/troubleshoot/access/use-common-dialog-api

投稿日時: 23/05/08 17:47:39
投稿者: 滝沢

Suzu様
コメントありがとうございます。
 
引数の位置を色々と変えてみましたが変わらずでした。
 
>少なくとも公式で扱っている GetOpenFileName の方が 良いかもしれませんね。
こちらを使ってチャレンジしてみます。
 
ありがとうございます。