ホルダーの新規作成No.06768
W.Hiroshi さん 11/10/15 13:06
 
訳あって、「A」のパソコンで編集しているファイルを保存する際、LANで繋がった
「B」のパソコンにも、同時に保存したいと思い、マクロを作ってみました。
完璧なマクロかどうかはともかく、とりあえず予想通りの動作はしていると思います。

ただ、「A」のパソコンで新たにホルダーを新規作成して、そこでファイルを作成した
場合
(「B」のパソコンには、まだそのホルダーが存在していない場合)
「カレントホルダーの移動に失敗しました」というようなエラーが出てしまいます。

これは、保存先のホルダーが見つからないと言う事では無いかと思うのですが、もし
そうだとすれば
秀丸マクロで、ファイルを保存するとき保存先のホルダーが見つからない場合、ホル
ダーを新規作成してそこに保存するという様なことは出来るのでしょうか。

出来るのでしたらその方法を教えて下さい。


$name1 = filename2 ;//現在のファイル名とパスを取得
$name2 = rightstr( filename2, strlen( filename ) -1 ) ;//ドライブ文字を抜い
たパスを取得
saveas "d"+ $name2;//Dドライブに保存
saveas "z"+ $name2;//Zドライブに保存
loadfile $name1;//元のパスのファイルに戻る
endmacro;

[ ]
RE:06768 ホルダーの新規作成No.06769
いいじま さん 11/10/15 15:50
 
秀丸愛用者のいいじまと申します。
サイトー企画の中の方々、いつもおつかれさまです。

さて、

> 訳あって、「A」のパソコンで編集しているファイルを保存する際、LANで繋が
>った
> 「B」のパソコンにも、同時に保存したいと思い、マクロを作ってみました。
> 完璧なマクロかどうかはともかく、とりあえず予想通りの動作はしていると思いま
>す。
>
> ただ、「A」のパソコンで新たにホルダーを新規作成して、そこでファイルを作成
>した
> 場合
> (「B」のパソコンには、まだそのホルダーが存在していない場合)
> 「カレントホルダーの移動に失敗しました」というようなエラーが出てしまいます。
>
> これは、保存先のホルダーが見つからないと言う事では無いかと思うのですが、もし
> そうだとすれば
> 秀丸マクロで、ファイルを保存するとき保存先のホルダーが見つからない場合、ホル
> ダーを新規作成してそこに保存するという様なことは出来るのでしょうか。

秀丸Ver8.00以降であれば、OCXを呼び出す機能がありますので、これで
"Scripting.FileSystemObject" というモジュールを呼び出せばできると
思います。

私はその辺はそんなに詳しくないので(いつもマニュアル類やサンプル
コードを検索して四苦八苦して書いています)実際のコードを提示できない
のが申し訳ないのですが、下記のサイトが参考になると思います。
http://officetanaka.net/excel/vba/filesystemobject/index.htm
Excelのマクロという形で書いてありますが、書式が違うだけで関数名
などは一緒です。

[ ]
RE:06768 ホルダーの新規作成No.06770
Iranoan さん 11/10/15 15:51
 
 W.Hiroshi さん今日は、Iranoan です。
> 秀丸マクロで、ファイルを保存するとき保存先のホルダーが見つからない場合、ホル
> ダーを新規作成してそこに保存するという様なことは出来るのでしょうか。
(1) existfile() でフォルダの存在確認も出来る
(2) run getenv( "COMSPEC" ) + " /c mkdir ......
    の要領でフォルダの作成が可能

[ ]
RE:06769 ホルダーの新規作成No.06771
W.Hiroshi さん 11/10/15 20:29
 
早速コメント有り難うございます。

秀丸Ver8.00以降では有るのですが、
ヘルプや他の人が作ったサンプルから、コードをコピーしてやっとこマクロを作って
いるレベルなので、中々難しいですね。
少しずつでも勉強していきたいと思います。

[ ]
RE:06771 ホルダーの新規作成No.06772
IKKI さん 11/10/15 22:02
 
こんにちは。ユーザの IKKI です。横から失礼します。

> 「A」のパソコンで編集しているファイルを保存する際、LANで繋がった
> 「B」のパソコンにも、同時に保存したい
これ、マクロでちまちま頑張ってもいいのですが、私だったら両方のマシンに
Dropbox か Windows Live Mesh を入れて同期させちゃいますね。

もしかしたら秀丸標準のバックアップ機能でも用が足りるかもしれません?
http://hide.maruo.co.jp/software/hidemaru8/new9.html#3

すみません、それだけ言いに来ました。

…というのもあんまりなので、Iranoan さんの案に沿って一応動くマクロを。

//----------------------------------------------------------
$original = filename2;
$folder1 = "d" + midstr(directory2, 1);
$folder2 = "z" + midstr(directory2, 1);
if (!existfile($folder1 + "\\*.*")) runsync2 "cmd /c mkdir \"" + $folder1 +
"\"";
if (!existfile($folder2 + "\\*.*")) runsync2 "cmd /c mkdir \"" + $folder2 +
"\"";
saveas $folder1 + "\\" + basename2;
saveas $folder2 + "\\" + basename2;
changename $original;
//----------------------------------------------------------

このマクロを実行するマシンは Windows XP 以降であると仮定しています。
Windows 2000 以前では mkdir コマンドがフォルダを再帰的に作成しないので
マシン B で作成すべきフォルダが 2 階層以上にわたる場合うまくいきません。

この手の話は秀丸のバージョンと OS のバージョンによって回答が大きく異なる
場合が多々ありますので、お手元の環境を明記されることをお勧めします。

当方の環境は 秀丸エディタ v8.11β10 + HMJRE.DLL v3.41 + Windows 7 です。

[ ]
RE:06769 ホルダーの新規作成No.06773
IKKI さん 11/10/15 22:08
 
いいじまさん、こんにちは。ユーザの IKKI です。

> 秀丸Ver8.00以降であれば、OCXを呼び出す機能がありますので、これで
> "Scripting.FileSystemObject" というモジュールを呼び出せばできると
> 思います。
これ書いてみようと思ったのですが、FSO の CreateFolder メソッドは
中間フォルダを再帰的に作ってくれないので、「1階層ずつ調べて
存在しなければ作る」的なことを自分で書かなきゃいけないと思われます。
今回の件に関して言えば cmd /c mkdir の方が手軽だったようで…。:-P

[ ]
RE:06772 ホルダーの新規作成No.06774
W.Hiroshi さん 11/10/16 17:57
 
IKKI さん、コメント有り難うございます。

> この手の話は秀丸のバージョンと OS のバージョンによって回答が大きく異なる
> 場合が多々ありますので、お手元の環境を明記されることをお勧めします。
>
秀丸マクロでホルダーを作成出来るのかどうかと言う事ばかり考えていたので、
環境を書き忘れてました。
結構シビアな問題のようですね。

パソコン「A」(個人使用パソコン)
Windows7
秀丸統合版 Version8.10


パソコン「B」(工場内、共同使用)
Windows XP
秀丸統合版 Version8.10
工場内の、NC工作機械の横に有り、工作機械と接続されています。

原則としては、
パソコン「A」でファイルを作成、編集して、パソコン「B」に転送して、更にパソコン
「B」を使って工作機械に転送しています。(この場合、編集しているホルダーは、D
ドライブで、Zドライブ(パソコン「A」から見たパソコン「B」のDドライブ)にも保存
したい)
時々、工作機械から、パソコン「B」に出力したファイルを、パソコン「A」から開いて
編集する事も有ります。(この場合、ZドライブのファイルをDドライブにも保存し
たい)

パソコン自体は一般的な構成ですけど、使用方法はあまり一般的な使い方とは思いま
せんので、何処まで説明すれば良いか。
全部説明するとかなり長くなり、それが今回のマクロに必要かどうか分かりませんの
で、省略しました。
必要であれば、その都度必要な部分を指摘頂きたいと思います。


実は、バックアップソフトによる定期的なバックアップはしています。
なので、数日後には、どちらか新しい方のファイルに統一されるようにはしています
が、今編集しているファイルを、今すぐ転送したいときは間に合いません。

秀丸のバックアップ機能は、どちらか一方への保存(例えば、Dドライブのファイル
をZドライブへバックアップ)であれば、一番手軽な方法かも知れませんが、そのま
までは逆方向の保存には対応出来ませんよね。(二カ所にバックアップ出来れば別で
すけど)

ホルダーをたどっていって保存すれば済む話なのですが、結構階層が深くなることも
あるので、マクロを使ったら二カ所同時に保存する事は出来無いかと思ったのが今回
のきっかけです。

今日は休みですので、明日提示頂いたマクロを試してみたいと思います。
ありがとうございました。


[ ]
RE:06770 ホルダーの新規作成No.06775
W.Hiroshi さん 11/10/16 18:01
 
Iranoanさん、早速コメント有り難うございます。

ヘルプや他の人が作ったサンプルマクロから、コードをコピーしてやっとこマクロを
作っているレベルなので、
提示頂いたサンプルコードをヘルプで調べても、
どのように自分のマクロに組み込めば良いのか、良く理解で来ませんでした。(^^ゞ

IKKI さんから、サンプルマクロを提示して頂きましたので、明日会社で試してみた
いと思います。

[ ]
RE:06772 ホルダーの新規作成No.06776
W.Hiroshi さん 11/10/17 22:21
 
IKKI さんこんにちは
昨日提示頂いた、サンプルマクロの動作を確認しました。

完璧です。

想定していた通りの動作でした。
有り難うございました。

[ ]