■ 質問はここへ ■

97 にジャンプ
No. 95投稿者: 葉月日付: 2001/07/09 19:50:12
題名 : 「 L_DirLst.mac」について

はじめまして。最近、他のエディタから乗り換えて、使い始めました。
行間罫線が見えるのが、とても見やすいし、マクロもたくさんあるので、使いやすいですね。
ただ、少し困ったことがあるので、ご存知のかたは教えていただけると、嬉しいのですが。

現在、Cドライブ内に作業用のフォルダを作って、その中に文書を保存するようにして作業しています、

こんな感じです。
c:\作業用\xxxxx.txt

で、この文書を、FD(Aドライブ)にバックアップしたり、
別のDドライブにある D\backup\に、同じ名前でバックアップしたりしたいので、
かぶねこさんの「フォルダリストから開く・保存 / L_DirLst.mac」を利用させていただいてます。
でも、これで保存すると、それまで表示されていた「c:\作業用\xxxxx.txt」が、
「D\backup\xxxxxx.txt」になってしまいますよね。
タイトルバーを見れば、フルパスで表示されているので、気がつくのですが、
最初は気づかずに、「D\backup\xxxxxx.txt」のほうで作業を続けたりしていまいました。
で、この場合、
1.別のフォルダに保存した場合、その文書を表示しない(あるいは、すぐに閉じる)
2.元の文書を継続して表示する

ように、なんとかマクロを改造できないものかと、考えたのですが、いかんせん、
マクロの中を見ても、ちんぷんかんぷんでして……。
どなたか、方法をご存知ないでしょうか?

No. 97 (95へのコメント)投稿者: かぶねこ HP日付: 2001/07/09 23:10:18
題名 : Re:「 L_DirLst.mac」について

どうも、わたしのローテクマクロを使っていただいてるそうで恐縮です。

ファイルを保存すると、最後に保存した名前が「編集しているファイル」になる
のは、パソコン全般で共通のことだと思います。

ですから、エディタの中から保存する、という動作はバックアップには向いてい
ません。

対応策としてひとつの案にすぎませんが、下のマクロを使うと編集中のファイル
のあるフォルダでエクスプローラが起動しますので、エクスプローラで手動でコ
ピーするのがちょっと楽になります。

proc main 'エクスプローラ起動
if @hwnd = 0 then
call shell("explorer /e, " ,1)
exit proc
end if
dim path$
path$ = left$(@Pathname$, inrstr(@Pathname$, "\"))
call shell("explorer /e, " + path$, 1)
end proc

>1.別のフォルダに保存した場合、その文書を表示しない(あるいは、すぐに閉じる)
>2.元の文書を継続して表示する

のほうですが、マクロの最初のほうで(dim なんたらかんたらの周辺)、

dim oldfile$
oldfile$ = @Pathname$

と現在編集中のファイルのパス+ファイル名を保存しておき、ファイルの別フォ
ルダへ保存が終わった直後のところに、

@FileClose
call @@OpenFile(oldfile$)

と追加すると、そのようになります。もとのファイルが「無題ファイル」だとま
ずいので、

if oldfile$ = "(無題)" then exit proc
@FileClose
call @@OpenFile(oldfile$)

のほうがいいですね。こういうふうにつけ加えると「バックアップ専用」の使い
かたしかできなくなりますが。

No. 100 (97へのコメント)投稿者: 葉月日付: 2001/07/10 02:50:47
題名 : Re^2:「 L_DirLst.mac」について

さっそくお答えいただきまして、ありがとうございました。
マクロのほうを、教えていただいたとおり(コピー&ペーストで)
直しまして、なんとか希望通りに動くようになりました。

ちなみに、直した部分(★印が追加行)ですが──
3〜7行目-----------------------------------
proc main
dim i, n, r, sel, sel2, f$, s$, path$, key$, line$
dim item$[30], item2$[10], list$[20], message$[10]
dim oldfile$        ★
oldfile$ = @Pathname$   ★

80〜91行----------------------------------------
'選択したフォルダにこのファイルを保存
elseif sel2 = 4 then
if @hwnd = 0 then exit proc
s$ = inputbox$("《ファイル保存》" + chr$(10) + \
path$ + " に保存します", \
" ◆ フォルダ指定で保存", @FileName$)
if s$ = chr$(&H1B) then exit proc
r = @SaveAs(path$ + s$)
if oldfile$ = "(無題)" then exit proc   ★
@FileClose     ★
call @@OpenFile(oldfile$)    ★
if r = -1 then call msgbox(path$ + s$ + " を保存しました。")

にしました。

あと、エクスプローラを呼び出すマクロですが、
個人的にエクスプローラーは嫌いなので(我が儘なもので。(^^ゞ)
ふだんは、キーボードだけで動かせるDOS風のファイラーを利用してまして、
そちらも引数でフォルダ指定で呼び出せるので、応用させていただきますね。
勝手なお願いに、ご親切に対応していただきまして、どうもありがとうございました。

No. 101 (100へのコメント)投稿者: かぶねこ HP日付: 2001/07/10 05:33:13
題名 : Re^3:「 L_DirLst.mac」について

>マクロのほうを、教えていただいたとおり(コピー&ペーストで)
>直しまして、なんとか希望通りに動くようになりました。

うまくいってよかったです。長くなるので説明が最低限でしたから。えっと、
1か所、後のほうの修正で、無題ファイルだと「保存しました」という
メッセージが出なくなりますね。それで問題なければいいんですが。

>ふだんは、キーボードだけで動かせるDOS風のファイラーを利用してまして、
>そちらも引数でフォルダ指定で呼び出せるので、応用させていただきますね。

応用でもなんでも、役に立てばうれしいです。

No. 102 (100へのコメント)投稿者: かぶねこ HP日付: 2001/07/10 14:14:04
題名 : Re^3:「 L_DirLst.mac」について

気がついたんですが、コピーを保存の直前にファイル保存をしていないと、前の
ファイルを開き直したときにその前に保存したときの状態まで戻ってしまいます
ね。

マクロのなかでファイル保存の直前に @FileSave を実行すると、まず現在のフ
ァイルを保存してから別名で保存するようになります。これも、無題ファイルの
ときはうまくいかないのが問題ですが。

No. 103 (102へのコメント)投稿者: 葉月日付: 2001/07/10 17:40:02
題名 : Re^4:「 L_DirLst.mac」について

>気がついたんですが、コピーを保存の直前にファイル保存をしていないと、前の
>ファイルを開き直したときにその前に保存したときの状態まで戻ってしまいます
>ね。
>マクロのなかでファイル保存の直前に @FileSave を実行すると、まず現在のフ
>ァイルを保存してから別名で保存するようになります。

あ、なるほど、そうですね。
ご指摘のとおり、
if s$ = chr$(&H1B) then exit proc
@FileSave    ★
r = @SaveAs(path$ + s$)

といったふうに追加してみました。
で、元の文書を、少し書き換えてから、保存する前にこのマクロを実行してみたら、
元の文書も保存され、かつ、別フォルダの文書のほうも、きちんと反映されて保存できました。

> これも、無題ファイルのときはうまくいかないのが問題ですが。

これについては、私が個人的に使うぶんには、さほど支障がないですが、
(別フォルダに同時保存したいような特別な文書は、限られているので)
いちおう頭の隅っこのほうで覚えておいたほうがいいですね。(鳥頭ですけど。(^^ゞ)

細かい点までフォローしていただきまして、ありがとうございました。


ヘッダのみ表示
順番に表示(No. 97 から)


メールアドレスを表示するにはURLの後ろに &m=89d55a7a をつけてください。
ユーザー フォーラム一覧

http://www2k.biglobe.ne.jp/~araken/
http://0ban.com/araken/