ファイル保存時のパス指定についてNo.04598
櫻井章一 さん 05/03/15 18:58
 
現在、秀丸マクロで編集したファイルをcsvで出力するときに
下記のように実現しています。

$filename = input("保存ファイル名を入力してください。\n※保存先はCドライブ直
下です!!");
$filename = "c:\\ "+ $filename + ".csv ";

この方法で、デスクトップを保存先に替える時に
$filename = "C:\\Documents and Settings\\ユーザ名\\デスクトップ "+ $filename
 + ".csv ";
のようにするとデスクトップに保存できるのですがこの方法ですと
ログインユーザ名が変るごとに、マクロのパスをユーザ名に合わせて変えないといけ
ないのですが
誰がログインしていても、win2000やwinXPのデスクトップを保存先とできるような
いい方法は何かありませんでしょうか?よろしくお願いいたします。

[ ]
RE:04598 ファイル保存時のパス指定についNo.04599
たけのこ さん 05/03/15 20:15
 
一般ユーザのたけのこです。

> 誰がログインしていても、win2000やwinXPのデスクトップを保存先とできるような
> いい方法は何かありませんでしょうか?よろしくお願いいたします。

ずばりデスクトップのディレクトリは得られませんが、
    getenv("HOMEDRIVE") + getenv("HOMEPATH")
とすることで、ホームパスは得られます。デスクトップのディレクトリ位置を変
更していなければ、通常はこの下にデスクトップディレクトリがいます。

(^^)/”

[ ]
RE:04599 ファイル保存時のパス指定についNo.04600
Iranoan さん 05/03/15 20:58
 
 今日は、Iranoan です。
> ずばりデスクトップのディレクトリは得られませんが、
>     getenv("HOMEDRIVE") + getenv("HOMEPATH")
> とすることで、ホームパスは得られます。
 質問の回答にはなりませんが、95 系でもやるとなると、次のような方法し
かないかなあ〜。
 全く自信なし(~~;。
openreg "LOCALMACHINE", "System\\CurrentControlSet\\Control";
$d = getregstr( "Current User" );
openreg "LOCALMACHINE",
  "Software\\Microsoft\\Windows\\CurrentVersion\\ProfileList\\" + $d;
$d = getregstr( "ProfileImagePath" );
closereg;
//↑ NT 系でも有効なのだろうか?
if( existfile( $d + "\\desktop" ) )$d = $d + "\\desktop";
else if( existfile( $d + "\\デスクトップ" ) )$d = $d + "\\デスクトップ";
                //下線部半角^^^^^^^^^^^^                ^^^^^^^^^^^^^^
else if( existfile( $d + "\\デスクトップ" ) )$d = $d + "\\デスクトップ";
$f = filename2;
changename $d + "\\";
SAVEAS;
if( !result ){
  changename $f;
}

[ ]
RE:04598 ファイル保存時のパス指定についNo.04601
櫻井章一 さん 05/03/15 21:13
 
お世話になります。櫻井章一です。

たけのこさん、Iranoanさん早速の回答ありがとうございます。

今回はwin2000・XP環境での動作を想定していますので
たけのこさんが教えてくださった方法で、
無事実現することができました。
ありがとうございます。

Iranoanさんが教えてくださった方法も今後95等を使用する局面
ありましたときに、使わせていただきたいと思います。
たいへん勉強になりました。ありがとうございました。

[ ]