過去の桐井戸端BBS (桐ver.9)
26853 ファイル名入力コマンドでMyDocumentのフォルダ名やエクセルのファイル名を初期値で表示させたい 昼行燈 2004/06/29-19:10
Ver9 2004を使用しています。
ファイル名入力コマンドで初期表示されるファイル名入力画面の場所にはMy Documentsを
ファイル名には*.xlをファイルの種類にはExcelを表示させるにはどうすればよろしいか教えて下さい。
よろしくお願いします
26857 Re:ファイル名入力コマンドについて うにん 2004/06/29-20:49
記事番号26853へのコメント
>ファイル名入力コマンドで初期表示されるファイル名入力画面の場所には
>My Documentsを

環境変数は取れるんですが、windirとwinbootdirしかありませんねえ。
システムでWSHでも使うしかないのかな?

26860 Re:ファイル名入力コマンドについて 佐田 守弘 2004/06/29-22:02
記事番号26853へのコメント
昼行燈さん
1台の固定したパソコンでユーザーが固定されていれば簡単だと思います。
 ファイル名入力 初期値= "C:\Documents and Settings\<ユーザー名>
         \My Documents\*.lxs",プロンプト="<プロンプト>"
        ,&ファイル名
です。

問題は、マイドキュメントのパス名がユーザーによって(PCによっても)一定でない点でしょうね。
Windowsのバージョンによっても違います。
一人のユーザー、1台のマシンに固定されているならば、マイドキュメントのパス名を直接記述できます。

しかしどのマシンでも共通に使うとなると、マイドキュメントのパス名の取得をどうするかが課題になり、
難しい問題になりそうです。
(#26857のうにんさんのコメントはその事を言っているのだと思います)

佐田守弘(KS-00119)
26861 Re:ファイル名入力コマンドについて hidetake 2004/06/29-22:12
記事番号26857へのコメント
>環境変数は取れるんですが、windirとwinbootdirしかありませんねえ。
>システムでWSHでも使うしかないのかな?

WSH ですと Object.SpecialFolders("MyDocuments") でとれますんで

Set WS = WScript.CreateObject("WScript.Shell")
WScript.Echo WS.SpecialFolders("MyDocuments")

と言った感じで取得して加工することとなると思いますが


環境変数でも NT系列であれば (現在の 2000 や XP であれば)
%HOMEDRIVE% と %HOMEPATH% で取れましたよね!

だから

&STR=#getenv("HOMEDRIVE")+#getenv("HOMEPATH")+"\My Documents\"+"*.xl*"
ファイル名入力 初期値=&STR,プロンプト="ファイル名を選択してください",&選択ファイル名

と言うような処理でいけるのでは無いでしょうか?

9x 系だと、このような環境変数は無かったと思いますので、
決めうちとするか確実に取れるような方法まで取り込むか?
でしょうけど、手元には、もう 9x 系でまともな環境は無いし詳しいことは忘れました。 (^^;
26864 Re:ファイル名入力コマンドについて hidetake 2004/06/29-23:08
記事番号26861へのコメント
>My Documentsをファイル名には*.xlをファイルの種類にはExcelを表示させる
>にはどうすればよろしいか教えて下さい。よろしくお願いします

あと補足しておきますと、ファイルの種類まで制御したい場合は
フォームを使って「入力支援ボタン」(リストの種別:ファイル名選択)を使う必要があります。

&STR には初期値となるフォルダを代入したとして
----------------------------------------------------------------
手続き定義開始 入力支援ボタン::入力支援オープン()
&STR=#getenv("HOMEDRIVE")+#getenv("HOMEPATH")+"\My Documents\"
手続き定義終了
----------------------------------------------------------------
そして、選択値リストに

"Excelファイルの選択","xls","Microsoft Office Excel ブック (*.xls)|*.xls|すべてのファイル (*.*)|*.*",&STR,"選択(&S)"

と言うように指定します。
26865 Re:ファイル名入力コマンドについて うにん 2004/06/29-23:43
記事番号26860へのコメント
佐田 守弘さん
>1台の固定したパソコンでユーザーが固定されていれば簡単だと思います。

簡単すぎるので

>しかしどのマシンでも共通に使うとなると、マイドキュメントのパス名の取得
>をどうするかが課題になり、難しい問題になりそうです。
>(#26857のうにんさんのコメントはその事を言っているのだと思います)

そういうことだったのですが、hidetakeさんのをみて「NT系なら環境変数で取れるんかあ」と思ったものの、
うちのWin2kで見るとマイドキュメントを示す環境変数はありませんでした。
HOMEDRIVE=C: で HOMEPATH=\ だし。SETコマンドで見るとシステムのプロパティで見える
環境変数にリストされないのが出てくるのが不思議。使えそうなのはUSERPROFILEが
C:\Documents and Settings\username なのでこれにMy Documentsをつなげれば。。。

Win9xでは設定によってはc:\windows\profilesかなんかにあったような。。。

桐ってデータベースだからあんまり個人のフォルダを使うことは考えてないみたいですが、
XPでも制限ユーザで使ってると桐のインストールディレクトリの下などには保存できないですよね
(管理ユーザが設定してくれてればいいんですが)

26866 Re:ファイル名入力コマンドについて hidetake 2004/06/30-00:09
記事番号26865へのコメント
>そういうことだったのですが、hidetakeさんのをみて「NT系なら環境変数で取れるんかあ」と
>思ったものの、うちのWin2kで見るとマイドキュメントを示す環境変数はありませんでした。
>HOMEDRIVE=C: で HOMEPATH=\ だし。SETコマンドで見るとシステムのプロパティで
>見える環境変数にリストされないのが出てくるのが不思議。使えそうなのはUSERPROFILEが
>C:\Documents and Settings\username なのでこれにMy Documentsをつなげれば。。。

えっ? (@_@;

私の周りではいずれのパソコンも正しく得られますが?

もしかして、「マイコンピュータ」-->「右クリック」-->
「システムのプロパティ」-->「詳細設定」タブ-->「環境変数」
のところの「ユーザー環境変数」で、これらの環境変数を
上書きしまっていると言うことはありませんよね?

一応、先に出した HOMEDRIVE / HOMEPATH は環境変数の
領域のうち、"System" "User" "Volatile" "Process"
の中の Process に設定されている値のはずです。

ですので
WScript.Echo WScript.CreateObject("WScript.Shell").Environment("process").Item("HOMEPATH")
では表示されても

WScript.Echo WScript.CreateObject("WScript.Shell").Environment("user").Item("HOMEPATH")

WScript.Echo WScript.CreateObject("WScript.Shell").Environment("system").Item("HOMEPATH")
では表示されません。
26867 Re:ファイル名入力コマンドについて hidetake 2004/06/30-00:15
記事番号26866へのコメント
>>そういうことだったのですが、hidetakeさんのをみて「NT系なら環境変数で取れるんかあ」と
>>思ったものの、うちのWin2kで見るとマイドキュメントを示す環境変数はありませんでした。
>>HOMEDRIVE=C: で HOMEPATH=\ だし。SETコマンドで見るとシステムのプロパティで
>>見える環境変数にリストされないのが出てくるのが不思議。使えそうなのはUSERPROFILEが
>>C:\Documents and Settings\username なのでこれにMy Documentsをつなげれば。。。

あるいは Tweak UI などのツールを使って、マイドキュメントの場所を
デフォルトから変更してしまっていると言うことも無いのですよね? (?_?)
26868 Re:ファイル名入力コマンドについて hidetake 2004/06/30-00:41
記事番号26867へのコメント
>使えそうなのはUSERPROFILEが

TEMP や TMP をみても %USERPROFILE%\Local Settings\Temp となっているので、
こちらの方がいいかも知れませんね?

でも、どうして うにんさんのところの HOMEPATH は特別な値になったのでしょうかね?
%USERPROFILE% は正しくて、そちらだけ \ になったなんて!? (?_?)
26869 環境変数に設定されていますね 佐田 守弘 2004/06/30-00:45
記事番号26866へのコメント
hidetakeさん、うにんさん
setコマンドを実行してみると、環境変数のリストがずらずらっと表示されますね。
私のXpでも、HOMEDRIVE と HOMEPATH が設定されていました。

佐田守弘(KS-00119)
26870 Re:ファイル名入力コマンドについて hidetake 2004/06/30-01:02
記事番号26868へのコメント
>TEMP や TMP をみても %USERPROFILE%\Local Settings\Temp となって
>いるので、こちらの方がいいかも知れませんね?

インターネット調べてみましたけど、うにんさんと同じように
%HOMEPATH% は \ であったり、\home になっていたりプロファイル
フォルダとは異なる場所を示している場合があるようです。
何かツールでも入れた場合は、これが書き換わる場合があるのでしょうか?
この場合でも %USERPROFILE% は正しい位置を示しているようでしたので、
やはり %USERPROFILE% の方を使った方が良いようです。


それから一応下記も参考方!

Windows 2000 環境での、Windows XP ユーザー データと設定の管理
http://www.microsoft.com/japan/technet/prodtechnol/winxppro/maintain/XPUsrDat.asp


26872 Re:ファイル名入力コマンドについて うにん 2004/06/30-09:29
記事番号26868へのコメント

>TEMP や TMP をみても %USERPROFILE%\Local Settings\Temp となって
>いるので、こちらの方がいいかも知れませんね?

これは「ユーザー環境変数」で定義されてるのでマイドキュメントフォルダとは
あまり関係無いと思います。(たまたまデフォルト値がそうなってるだけで)

>でも、どうして うにんさんのところの HOMEPATH は特別な値になった
>のでしょうかね? %USERPROFILE% は正しくて、そちらだけ \ になった
>なんて!? (?_?)

手持ちのWin2kとXPのマシンで見てもHOMEPATHは\になっていました。
あんまり複雑な設定はしていないのですが。
OSのアップグレードもしていないし?_?

26874 Re:ファイル名入力コマンドについて hidetake 2004/06/30-09:49
記事番号26872へのコメント
>>TEMP や TMP をみても %USERPROFILE%\Local Settings\Temp となって
>>いるので、こちらの方がいいかも知れませんね?
>これは「ユーザー環境変数」で定義されてるのでマイドキュメントフォルダとは
>あまり関係無いと思います。(たまたまデフォルト値がそうなってるだけで)

先にあげたマイクロソフトサイトのドキュメントをみても
また、移動プロファイルの関係からも %USERPROFILE% の
方が良さそうです。

ただし、最終的にはこれを使用する方の用途や環境にも
関わってはきますよね。
いくらマイドキュメントを読むようにしていても、
そのユーザが Excel の設定でデフォルトで使用するフォルダ
を Excel のオプション設定で変更していたら、
折角マイドキュメントを開いても、そこには Excel のデータは
存在しないなんて言うこともあり得ますから?
26875 Re:ファイル名入力コマンドについて hidetake 2004/06/30-09:56
記事番号26872へのコメント
>>でも、どうして うにんさんのところの HOMEPATH は特別な値になった
>>のでしょうかね? %USERPROFILE% は正しくて、そちらだけ \ になった
>>なんて!? (?_?)
>手持ちのWin2kとXPのマシンで見てもHOMEPATHは\になっていました。
>あんまり複雑な設定はしていないのですが。
>OSのアップグレードもしていないし?_?

この環境変数は
HKEY_CURRENT_USER\Volatile Environment
に設定してあるようですが、ここをわざと誰か書き換えたものがいるのか?
あるいはログオンスクリプトのようなものでログオン時に書き換えるものがいるのか?

あるいは、うにんさんは Novell の NetWare クライアントソフトを入れていると前に書かれていましたっけ?

あるいは UNIXライクなツールを入れると、この辺を弄るものも出てきそうな気もします?
26877 Re:ファイル名入力コマンドについて うにん 2004/06/30-11:42
記事番号26875へのコメント

>この環境変数は
>HKEY_CURRENT_USER\Volatile Environment
>に設定してあるようですが、ここをわざと誰か書き換えた
>ものがいるのか? あるいはログオンスクリプトのような
>ものでログオン時に書き換えるものがいるのか?

なるほど、ここに設定されていません。
でもHOMEDRIVEとHOMEPATHは、VolatileでなくProcessのようですが?
レジストリの中には無いようで、プロセス起動時に自動的に設定されてるのかな。

>あるいは、うにんさんは Novell の NetWare クライアント

さすがに自宅のには入れてないのでこれは関係なさそうですが、

>あるいは UNIXライクなツールを入れると、この辺を弄る
>ものも出てきそうな気もします?

cygwinは全部に入っているので怪しいかも。

NT4.0Serverで(cygwin入れてるけど)\home\usernameなのがありました。


26893 Re:ファイル名入力コマンドについて 昼行燈 2004/06/30-18:54
記事番号26877へのコメント
うにんさん

皆さんいつも済みません。有難うございました。
私にはあまりむづかしいことはよく理解できませんがhidetake様のbQ6861号
どおりで希望通りゆきました。皆様大変有難うございました。
又よろしくお願い致します。
26895 Re:ファイル名入力コマンドについて hidetake 2004/06/30-19:37
記事番号26893へのコメント
>私にはあまりむづかしいことはよく理解できませんがhidetake様のbQ6861号
>どおりで希望通りゆきました。

昼行燈さん、今までの話からすると次の方がより問題が出る可能性が少なく好ましいみたいです。

&STR=#getenv("USERPROFILE")+"\My Documents\"+"*.xl*"
ファイル名入力 初期値=&STR,プロンプト="ファイル名を選択してください",&選択ファイル名


26907 Re:ファイル名入力コマンドについて 昼行燈 2004/07/01-09:50
記事番号26895へのコメント
>昼行燈さん、今までの話からすると次の方がより問題が出る可能性が
>少なく好ましいみたいです。
>
>&STR=#getenv("USERPROFILE")+"\My Documents\"+"*.xl*"
>ファイル名入力 初期値=&STR,プロンプト="ファイル名を選択してください",&選択
>ファイル名
>
>
hidetake様 いつも有難うございます。
早速実行しましたところなぜかこちらはうまくゆきませんでした。
先の方法ですとうまくいっております。
参考になりましたらと思い報告させて頂きます。有難うございました。
26909 Re:ファイル名入力コマンドについて hidetake 2004/07/01-10:09
記事番号26907へのコメント
>>&STR=#getenv("USERPROFILE")+"\My Documents\"+"*.xl*"
>>ファイル名入力 初期値=&STR,プロンプト="ファイル名を選択してください",&選択ファイル名

>早速実行しましたところなぜかこちらはうまくゆきませんでした。

えっ!? (@_@;

ダメだったのですか? どうしてでしょうかね? (?_?)

もしよろしければ、今後の参考のため、#getenv("USERPROFILE") の値の結果
あるいは、上記を実行した直後の &STR の値を教えてもらえませんか?

その時、ユーザ名も含まれる場合もありますので、ユーザ名だけは hogehogeに置き換えて頂いて結構ですので・・・
また、出したくないサーバ名などが出てきてしまった場合も仮名に置き換えていただいて結構です。


26911 Re:ファイル名入力コマンドについて うにん 2004/07/01-10:29
記事番号26909へのコメント

>>>&STR=#getenv("USERPROFILE")+"\My Documents\"+"*.xl*"
>>>ファイル名入力 初期値=&STR,プロンプト="ファイル名を選択してください",&選択ファイル名
>
>>早速実行しましたところなぜかこちらはうまくゆきませんでした。
>
>えっ!? (@_@;
>
>ダメだったのですか? どうしてでしょうかね? (?_?)

WinMEとか9x系で、複数ユーザーで使用する設定にしていない場合は
環境変数が存在しないのでうまくいかないでしょう。

26913 Re:ファイル名入力コマンドについて hidetake 2004/07/01-10:40
記事番号26911へのコメント
>WinMEとか9x系で、複数ユーザーで使用する設定にしていない場合は
>環境変数が存在しないのでうまくいかないでしょう。

その場合だと 9x 系ということで HOMEDRIVE も HOMEPATH も無いですよね?


26917 Re:ファイル名入力コマンドについて 昼行燈 2004/07/01-14:41
記事番号26909へのコメント
hidetakeさん
>>>&STR=#getenv("USERPROFILE")+"\My Documents\"+"*.xl*"
>>>ファイル名入力 初期値=&STR,プロンプト="ファイル名を選択してください",&選択ファイル名
>
>>早速実行しましたところなぜかこちらはうまくゆきませんでした。
>
>えっ!? (@_@;
>
>ダメだったのですか? どうしてでしょうかね? (?_?)
>
>もしよろしければ、今後の参考のため、#getenv("USERPROFILE") の値の結果
>あるいは、上記を実行した直後の &STR の値を教えてもらえませんか?
>
>
STR= C:\Documents and Settings\汎用\Documents and Settings\汎用\My Documents\*.xl*
以上のように設定されていました。一部重複設定されています。
ファイル名入力画面の場所はC:\k3\Dataをファイル名表示欄には「株式債券」、「名簿」の2つ(いずれもホルダー)が
表示されています。参考になりますかどうか、とりあえず状態を連絡致します。
26919 Re:ファイル名入力コマンドについて hidetake 2004/07/01-16:30
記事番号26917へのコメント
>STR= C:\Documents and Settings\汎用\Documents and Settings\汎用\My Documents\*.xl*
>以上のように設定されていました。一部重複設定されています。

昼行燈さん、
これって
&STR=#getenv("USERPROFILE")+#getenv("HOMEPATH")+"\My Documents\"+"*.xl*"
と、間違って書いているのでは無くって
&STR=#getenv("USERPROFILE")+"\My Documents\"+"*.xl*"
と、書いた結果ですよね? (@_@;

だとすると変です。
環境変数 %USERPROFILE% は、他でもいろんなところで使われているので
本当にこう(C:\Documents and Settings\汎用\Documents and Settings\汎用)
なっているとすると、おかしな事が起きそうな気もします。


>ファイル名入力画面の場所はC:\k3\Dataをファイル名表示欄には「株式債券」、「名簿」の2つ(いずれもホルダー)が
>表示されています。参考になりますかどうか、とりあえず状態を連絡致します。

「ファイル名入力」コマンドは間違ったフォルダ(存在しない)を与えると、
カレントフォルダを表示しますので、上記内容が表示されるのは正しい動作です。


26926 Re:ファイル名入力コマンドについて 昼行燈 2004/07/01-20:37
記事番号26919へのコメント
hidetakeさん

>>STR= C:\Documents and Settings\汎用\Documents and Settings\汎用\My Documents\*.xl*
>>以上のように設定されていました。一部重複設定されています。
>
>昼行燈さん、
>これって
>&STR=#getenv("USERPROFILE")+#getenv("HOMEPATH")+"\My Documents\"+"*.xl*"
>と、間違って書いているのでは無くって
>&STR=#getenv("USERPROFILE")+"\My Documents\"+"*.xl*"
>と、書いた結果ですよね? (@_@;
>
>
hidetake様 誠に申し訳有りません。少々コマンドに誤りがありました。
修正し実行しましたところ&STRに下記のように設定されファイル名入力画面は前と同じでした。
STR= C:\Documents and Settings\汎用My Documents\*.xl*
汎用の後の「\」が設定されていないようです。今度はコマンドは何度も確認しました。
お詫びとご報告申し上げます。

26928 Re:ファイル名入力コマンドについて hidetake 2004/07/01-21:34
記事番号26926へのコメント
>修正し実行しましたところ&STRに下記のように設定されファイル名入力画面は前と同じでした。
>STR= C:\Documents and Settings\汎用My Documents\*.xl*
>汎用の後の「\」が設定されていないようです。今度はコマンドは何度も確認しました。

これは、
&STR=#getenv("USERPROFILE")+"\My Documents\"+"*.xl*"
と "\My Documents\" を文字列として付加しているわけですので、最初の \ が抜けて
&STR=#getenv("USERPROFILE")+"My Documents\"+"*.xl*"
となっているものと思われます。

&STR=#getenv("USERPROFILE")+"\My Documents\"+"*.xl*"
              ^^^^
と My Documents\ の前に \ をつけて下さい。
26930 Re:ファイル名入力コマンドについて 昼行燈 2004/07/01-22:19
記事番号26928へのコメント
hidetakeさん
>>修正し実行しましたところ&STRに下記のように設定されファイル名入力画面は前と同じでした。
>>STR= C:\Documents and Settings\汎用My Documents\*.xl*
>>汎用の後の「\」が設定されていないようです。今度はコマンドは何度も確認しました。
>
>これは、
>&STR=#getenv("USERPROFILE")+"\My Documents\"+"*.xl*"
>と "\My Documents\" を文字列として付加しているわけですので、最初の \ が抜けて
>&STR=#getenv("USERPROFILE")+"My Documents\"+"*.xl*"
>となっているものと思われます。
>
>&STR=#getenv("USERPROFILE")+"\My Documents\"+"*.xl*"
>              ^^^^
>と My Documents\ の前に \ をつけて下さい。

ご指摘通り実行するとうまくゆきました。お手数を煩わせ申し訳有りません。
有難うございました。

戻る