[[20210821221319]] 『機種依存文字があるとChDirできない』(あん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『機種依存文字があるとChDirできない』(あん)

やりたいことは、機種依存文字を含むパスでダイアログボックスを開くことです。

ChDir Cells(1, 1).Value
Target = Application.GetOpenFilename("Excel ブック,*.xls?")

※cells(1 ,1)には、
「C:\Users\%username%\--\--\--\--\?@報告書\2021年\8月」が入っています。
(--は実際には別のフォルダ名です)

このマクロを実行すると、「パスが見つかりません」のエラーになってしまいます。
どうやら「?@」が機種依存文字で「?」になって認識されないようです。
同じ機種依存文字でも丸17だとなぜか普通にカレントフォルダに指定できます。

どうやったら、ダイアログボックスが開けるでしょうか?

< 使用 Excel:Excel2019、使用 OS:Windows10 >


補足:パスの「報告書」の前には丸1を記入したつもりでしたが、更新したらなぜか「?@」と表示されています。。。やっぱり機種依存文字は厳しいでしょうか??@
(あん) 2021/08/21(土) 22:51

ChDriveが必要なだけでは?
(γ) 2021/08/21(土) 23:05

同じ階層にある、丸囲み文字17を含むフォルダ名だとエラーが出ずに、ちゃんとChDirできています。違いは何なんでしょうか?
(あん) 2021/08/21(土) 23:13

イミディエイトウインドウに ?CurDir と入力すると何が返りますか?
Cドライブ以外のドライブではないですか?
 
もしそうなら、
ChDrive Cells(1, 1).Value
とドライブを変更してから、
ChDir Cells(1, 1).Value とすれば良いのでは?
 
ということを短縮形で申し上げました。

(γ) 2021/08/21(土) 23:23


イミディエイトウインドウには、「C:\Users\〜」が返ってきました。
PCにはドライブはCしかないですが、念のためご教示の通りにドライブを変更しましたが、同様のエラーがでます。
ChDirの前に、msgboxでカレントドライブを調べてもCでした。
(あん) 2021/08/21(土) 23:31

また、cells(1,1)を、
C:\Users\%username%\--\--\--\--
にすると、ちゃんと開きました。
ただ、これだと「(囲み文字1)報告書」の上のフォルダになってしまいます。
開きたいのは、このフォルダの下の下なのですが、
機種依存文字がVBAで文字化けしてるんでしょうか?
(あん) 2021/08/21(土) 23:44

丸付き数字でも問題ないことを私は確認しています。
Cells(1, 1).Valueが正しいパスであることは、確認ずみですか?
その下に存在するブック名をつけて、Workbooks.Open(.....略...)で開きますか?

(γ) 2021/08/21(土) 23:53


私も、デスクトップにあるフォルダなら丸付きでも問題ないのは確認しているので、
正しいパスかどうか再度注意深く確認してみます。

問題のパスの下にブック名をつけても開きませんでした。

ちなみに、開きたいフォルダはドロップボックス内にあるのですが、この挙動に関係あるでしょうか?
(あん) 2021/08/22(日) 00:04


盛大な「情報の後出し」ですね。やめてください、そういうことは。
私はこれで終了です。時間の無駄使いでした。

(γ) 2021/08/22(日) 00:16


それは、大変失礼いたしました。
ご教示いただきありがとうございました。
(あん) 2021/08/22(日) 00:27

パス(256文字)制限かなと思いましたが?
(あい) 2021/08/22(日) 16:32


 丸数字は複数種あるので、どの丸数字使ってるのかによって変わってきますが、
 とりあえずChDirではunicode文字を含んだパスはダメっぽいですよ。

 CreateObject("WScript.Shell").CurrentDirectory = Cells(1, 1).Value

 とかならイケるかも知れません。(実証はしてませんけど)

(白茶) 2021/08/23(月) 19:55


 一応動作確認してみました。

 仮に
 [A1]が C:\xxx\①\   (C:\xxx\①\)
 [A2]が C:\xxx\➀\   (C:\xxx\➀\)

 として、実際↑のフォルダを2つ作った状態だとしたら、

 ?Dir([A1])  ←エラーなし
 ?Dir([A2])  ←実行時エラー'52': ファイル名または番号が不正です。

 ChDir([A1]) ←エラーなし
 ChDir([A2]) ←実行時エラー'76': パスが見つかりません。

 CreateObject("WScript.Shell").CurrentDirectory = [A2]   '←エラーなし
 ?CreateObject("WScript.Shell").CurrentDirectory         '←正常(但しイミディエイト上の表記は[C:\xxx\?])

 という結果でした。

(白茶) 2021/08/24(火) 09:58


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.