ページ:[ ] [1] [2] [3] [4] [5] [6] [7] [8] [ ]
485
2010/3/17 (水) 10:58:57  
[485] これはマクロでできる?

皆様
はじめまして。
固定長レコードをCSVに変換するのにマクロでしようしていましたが。
躓いてしまいました。教えて下さい。

ある10文字の文字列を下記のように処理できますか?

"1234567890"→"1234567890"
"12345     "→"12345" として後ろの空白をTrimすることって出来ますか?

できない場合はPPAマクロを使うことになると思いますが、
このときはカーソル移動(S_Right)などが使えないという理解でいいのでしょうか?

2点よろしくお願いします。
マクロスマクロ
Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)


2010/4/15 (木) 09:17:00  
[486] Re:これはマクロでできる?

マクロに詳しくないのですが、
置換で正規表現を使って
\s*"

"
に置換すればいけるので、
これをマクロ化できればよいのかと思います。

ダブルクォートで囲まれているといのうのが前提ですが。

▼ マクロスマクロさん
> 皆様
> はじめまして。
> 固定長レコードをCSVに変換するのにマクロでしようしていましたが。
> 躓いてしまいました。教えて下さい。
>
> ある10文字の文字列を下記のように処理できますか?
>
> "1234567890"→"1234567890"
> "12345     "→"12345" として後ろの空白をTrimすることって出来ますか?

もか
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6.4; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)


2010/4/16 (金) 00:42:23  
[487] Re2:これはマクロでできる?(オフトピ)

あれ、投稿した記憶が無いんだけど?
ちがう同名の方かな。
もか
Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 (.NET CLR 3.5.30729)


2010/7/29 (木) 09:13:20  
[502] Re2:これはマクロでできる?

正規表現で置換するなら
「(\d+) *」で検索して、「$1」に置換したほうがスマートかとおもいます。

▼ もかさん
> マクロに詳しくないのですが、
> 置換で正規表現を使って
> \s*"
> を
> "
> に置換すればいけるので、
> これをマクロ化できればよいのかと思います。
>
> ダブルクォートで囲まれているといのうのが前提ですが。
>
> ▼ マクロスマクロさん
> > 皆様
> > はじめまして。
> > 固定長レコードをCSVに変換するのにマクロでしようしていましたが。
> > 躓いてしまいました。教えて下さい。
> >
> > ある10文字の文字列を下記のように処理できますか?
> >
> > "1234567890"→"1234567890"
> > "12345     "→"12345" として後ろの空白をTrimすることって出来ますか?
Ethmeld
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MathPlayer 2.10d; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; Sleipnir/2.9.4)


2011/11/21 (月) 14:10:44  
[543] -

-
管理者削除
Mozilla/5.0 (Windows NT 5.1; rv:6.0.1) Gecko/20100101 Firefox/6.0.1

391
2007/9/2 (日) 22:57:25  
[391] カーソル桁位置を知るには?

 はじめまして。だだ星人と申します。

表題の件ですが、マクロ中で現在のキャレット(カーソル)位置
を知るにはどうしたらよいのか?わからないので投稿させていた
だきます。

 ExpandParameter( '$x' )を使用すればキャレット物理桁位置
が取得できることはわかりました。しかし、以下のような文面で
は私が期待した内容のものが取得できないのです。

例)TABサイズ = 4:TAB = '^'
^   ^   i = 1;

上記行のセミコロンの後ろにキャレットがある場合、私としては
"15"が帰ってきてほしいのですが(※1)、
ExpandParameter( '$x' )だと"9"が帰ってきます。
要は、TABサイズが考慮されていないので、TABサイズを考慮した、
エディタのルーラーに表示されている位置が取得したいのです。

 どうやったらこの位置が取得できますでしょうか?ご存じの方
がいらっしゃいましたら、是非ご教示ください。

 みなさま、よろしくお願いいたします。

※1)"15"は1起算の場合。ゼロ起算の場合は"14"が帰ってきてほ
     しい。
だだ星人
Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6


2007/9/3 (月) 01:03:52  
[392] RE: カーソル桁位置を知るには?

S_ExpandParameter('$x'); は「現在の物理桁位置(先頭からのバイト数 1開始)」ですからね。
バイト数だからタブ文字があると桁位置とは剥離します。

で、現状、タブ幅も考慮した桁位置取得機能はありません。

ただ、選択状態をいじっても良いなら「選択開始桁の取得」でできます。

-----
// 実行には PPA.DLL が必須です。sakura.exe と同じフォルダに ppa.dll を入れておいてください。
// マクロファイルの拡張子は .PPA でなくてはなりません。

var        // 変数確保
        x,y:Integer;        // 整数数値変数 x,y 確保
begin        //{

        S_CancelMode(0);                // 各種モードの取り消し - 選択解除
        // ↑マクロ開始時に選択状態だった場合のため

        S_BeginSelect(0);                // 範囲選択開始
        x := S_GetSelectColmFrom();        // 選択開始桁の取得
        y := S_GetSelectLineFrom();        // 選択開始行の取得
        S_CancelMode(0);                // 各種モードの取り消し - 選択解除

        MessageBox( IntToStr(x) + ',' + IntToStr(y)  , '(x,y)' , 0 );        // 表示

end;        //}
-----
すい
INCM1.23c


2007/9/3 (月) 11:36:57  
[393] Re2: カーソル桁位置を知るには?

すいさん さん こんにちは

ご回答ありがとうございます。
そんな方法があったとは!思いつきませんでした。本当に、ありがとうございます。

 それにしてもサクラエディタのマクロって、エディタ上でできるほとんど全ての操作が行える点はスゴイ!と思うんですが、
現在のエディタ内情報の状態取得が弱いですね。ExpandParameter('$x')にしても「何故文字列で取得?数値は?」と思ったりします。
 なんらかの開発ポリシーがあるんでしょうか?
だだ星人
Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6

446
2008/10/16 (木) 13:21:12  
[446] タブ区切りテキストの桁そろえ

タブ区切り(TSV)テキストを桁そろえするマクロです。
JavaScriptで書いていますので拡張子 .js で保存してください。

ごく単純な方法でやっていますので速度は期待できませんし、
コメントにも記載しているようにエスケープされたフィールドは正しく処理できません。

右詰めにしたい場合は桁そろえ部分の出力順を入れ替えればOKです

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
// TSVで記載されたテキストの桁そろえを行います。
// 対象となる文字列を選択してマクロを実行してください
//
// 注意
// ・ダブルクォートなどで囲んでタブをエスケープしたフィールドには対応していません。
// ・同様に改行を含むフィールドにも対応していません。


// 設定ぽいもの
var        FIELD_SPLITTER        = "\t";                        // 行内のフィールドを区切る文字列
//var        FIELD_SPLITTER        = new RegExp( "\s+", "g" );                        // もしくは正規表現オブジェクト(こちらの形式を使うと、空のフィールドは詰められます)
var        FIELD_SEPARATOR        = " ";                        // 整形する際に、フィールド間に入れる文字列
var        EOL                                = "\r\n";                // 改行コード

// C言語風に。。。
Main();

function Main()
{
        // 選択状態をチェック
        if( !Editor.IsTextSelected() ){
                // 未選択なら何もしない
                return;
        }
 
        // 選択文字列の取得
        var        selectedStr                = Editor.GetSelectedString( 0 );
 
        // 選択文字列を改行で分割
        var        splitedLines        = selectedStr.split( /[\r\n]+/g );
 
        // 各行のフィールド分割とフィールド毎の最大文字数算出
        var        lineFields = new Array();
        var        fieldSize  = new Array();
        var lineCnt;
        var fldCnt;
        for( lineCnt = 0; lineCnt < splitedLines.length; lineCnt++ ){
                // 行をフィールドに分割
                // ※ Microsoft JScriptの仕様により、正規表現オブジェクトを利用して分割した場合は空のフィールドが削除された分割結果となるようです
                lineFields[lineCnt] = splitedLines[lineCnt].split( FIELD_SPLITTER );

                // 各フィールドの最大文字数算出
                for( fldCnt = 0; fldCnt < lineFields[lineCnt].length; fldCnt++ ){
                        var        fieldWidth = GetStrWidth( lineFields[lineCnt][fldCnt] );
                        if( !fieldSize[fldCnt]                                        // このフィールドの最大幅がまだ保持されてない
                         || (fieldSize[fldCnt] < fieldWidth) ){        // 保持している最大幅より大きい今回のフィールド幅が大きい
                                fieldSize[fldCnt]  = fieldWidth;
                        }
                }
        }
        // 桁をそろえた文字列として結合する
        var        formattedStr = "";
        for( lineCnt = 0; lineCnt < splitedLines.length; lineCnt++ ){
                for( fldCnt = 0; fldCnt < lineFields[lineCnt].length; fldCnt++ ){
 
                        // 右詰めとするには、フィールド追加とスペース埋めの順を逆にすればOK
 
                        // フィールド文字列結合
                        formattedStr += lineFields[lineCnt][fldCnt];
 
                        // 最大フィールドサイズとの差数分の半角空白を追加
                        var spaceNum = fieldSize[fldCnt] - GetStrWidth( lineFields[lineCnt][fldCnt] );
                        for( var cnt = 0; cnt < spaceNum; cnt++ ){
                                formattedStr += " ";
                        }
 
                        // フィールドを区切り文字列の追加
                        formattedStr += FIELD_SEPARATOR;
                }
                formattedStr += EOL;
        }
 
        // エディタに書き戻す
        Editor.InsText( formattedStr );
}

// 半角を 1 ,全角を 2 とカウントした文字列の幅を取得する
function GetStrWidth( str )
{
        // 半角文字を削除
        var        delHalfWidth = str.replace( /[\u0001-\u00FF]/g, "" );
 
        // 文字列の幅(?) = (残った全角文字の数 * 2) + (消えた半角文字の数)
        var        strWidth = (delHalfWidth.length * 2) + (str.length - delHalfWidth.length);
 
        return strWidth;
}
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

ぜっと
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)

475
2009/8/20 (木) 23:25:54  
[475] 最近使ったファイルを開く

2chのスレで話題になっていたので
私も書いてみました。

/*
    openMRU.js:  最近使ったファイルを開く
    (Unicode 版専用)

    使い方:
        最初にスクリプトを実行すると、最近使ったファイルがリストされます。
        リストされたファイル名のうち、
        開きたいものの「行頭」に何か「1文字」を「挿入」してください。
        それがチェックマークになります。
        そしてこのスクリプトをもう一度実行すると、
        チェックしたファイルを一度に開きます。

    ☆タスクバーにサクラを常駐していると、
     最近使ったファイルのリストが古いことがあります。
*/


//____________________________________________________________________________
function ListMRU()
{
    // MRU をリストして表示

    // 改行文字を取得
    var lc = Editor.GetLineCode();
    if(lc == 0)      lc = '\r\n';
    else if(lc == 1) lc = '\r';
    else             lc = '\n';

    // MRU を取得して
    var asMRU = GetMRU(Editor.ExpandParameter('$I'));

    // リストを書き出す
    Editor.InsText('\t' + asMRU.join('\t*' + lc + '\t') + '\t*' + lc);
}


//____________________________________________________________________________
function GetMRU(sIniPath)
{
    // sakuraW.ini から MRU リストを取り出す

    var asMatch = LoadUTF8File(sIniPath).match(/^MRU\[\d+\]\.szPath=.*?$/gm);

    var asMRU = [];
    if(asMatch){
        for(var i = 0; i < asMatch.length; ++i){
            asMatch[i].search(/^MRU\[\d+\]\.szPath=(.*)/);
            asMRU[i] = RegExp.$1;
        }
    }

    return asMRU;
}


//____________________________________________________________________________
function LoadUTF8File(sFilePath)
{
    // UTF8 のファイルを読み込む

    return DecodeUTF8(LoadBinaryFile(sFilePath));
}


//____________________________________________________________________________
function LoadBinaryFile(sFilePath)
{
    // バイナリデータを読み込む

    fso = new ActiveXObject('Scripting.FileSystemObject');

    // バイナリモードがないのでUNICODEで開く
    var s = fso.OpenTextFile
    (   sFilePath
    ,   1     /*generic_read*/
    ,   false /*open_existing*/
    ,   true  /*utf-16 le*/
    ).ReadAll();

    // wchar_t[] -> byte[]
    var a = [];
    for(var i = 0; i < s.length; ++i){
        var c  = s.charCodeAt(i);
        var k  = 2 * i;
        a[k]   = c & 0xff;
        a[k+1] = (c >> 8) & 0xff;
    }

    return a;
}


//____________________________________________________________________________
function DecodeUTF8(aUTF8)
{
    // UTF8 のバイナリデータを、デコードする

    var as = []; // デコードされた文字の配列
    var iS = 0;  // as のインデクス

    var iA = 0; // aUTF8 のインデクス
    while(iA < aUTF8.length){
        var bytes;
        var c = aUTF8[iA++];
        if((c & 0x80) == 0){
            bytes = 1; // 1バイト文字
        }
        else if((c & 0xe0) == 0xc0){
            bytes = 2; // 2バイト文字
            c &= 0x1f;
        }
        else if((c & 0xf0) == 0xe0){
            bytes = 3; // 3バイト文字
            c &= 0x0f;
        }
        else if((c & 0xf8) == 0xf0){
            bytes = 4; // 4バイト文字
            c &= 0x07;
        }
        else if((c & 0xfc) == 0xf8){
            bytes = 5; // 5バイト文字
            c &= 0x03;
        }
        else if((c & 0xfe) == 0xfc){
            bytes = 6; // 6バイト文字
            c &= 0x01;
        }
        else { // エラー
            bytes = 1;
            c = '?';
        }

        // 多バイト文字をデコード
        for(var i = 1; i < bytes; ++i){
            var t = aUTF8[iA++];
            if((t & 0xc0) == 0x80){
                c = (c << 6) + (t & 0x3f);
            }
            else{ // エラー
                c = '?';
                --iA;
            }
        }

        as[iS++] = String.fromCharCode(c);
    }

    return as.join('');
}


//____________________________________________________________________________
// スタートアップ

// 初回起動か調べつつ、ファイルを開く
var isVirgin = true;
for(var i = 1; /*forever*/ ; ++i){
    var s = Editor.GetLineStr(i);
    if(s == '') break;

    // ファイル名を取得
    if(s.search(/^([^\t]?)\t(.*)\t\*$/m) < 0) continue
    var sCheck = RegExp.$1;
    var sFile  = RegExp.$2;

    // ファイル名の行があるなら、初回でない
    isVirgin = false;

    // チェックされていれば開く
    if(sCheck != ''){
        Editor.FileOpen(sFile);
    }
}


// 初回起動なら、ファイルをリスト
if(isVirgin){
    ListMRU();
}

// eof
ななし
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)

529
2011/9/18 (日) 14:24:59  
[529] マクロで操作する行の状態取得

マクロ(jscript)で、カーソルがある行の状態(例えば、ブックマーク
されている行か)を取得する方法が分かりません。

また、重ねての質問ですが、カーソルがある行の行数を知る方法も
教えて下さい。
S1orN1
Mozilla/5.0 (Windows NT 5.1; rv:6.0.2) Gecko/20100101 Firefox/6.0.2

413
2008/3/16 (日) 12:33:42  
[413] サクラ上でファイル名検索

JScriptの勉強で作ってみました。
-------------------------------------------ここから
// サクラ上でファイル名検索
// FileFind.js
//
// カーソル位置の単語、又は選択中の文字のファイル名を検索します。
// 検索パスは予め指定されたフォルダ以下のファイルを全て検索します。
// 結果はアウトプットウィンドウで表示します。

// 検索パス名の \ は \\ か / で記述
var g_SerchPath = new Array();
g_SerchPath[0] = "D:/Subversion/MyProject/trunk/Src";
g_SerchPath[1] = "C:/Program Files/Microsoft Visual Studio 8/VC/include";
g_SerchPath[2] = "C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Include";
g_SerchPath[3] = "";
g_SerchPath[4] = "";
// 隠しフォルダは検索しない設定 ( 0 で隠しフォルダも検索)
var g_NotFindHiddenFolder = 1;

FileFindMain();
g_SerchPath = null;

function FileFindMain()
{
    // 選択中の単語、又は、カーソル位置の単語を取得
    var word = Editor.GetSelectedString(0);
    if (!word) {
        Editor.SelectWord(0);
        word = Editor.GetSelectedString(0);
    }
 
    Editor.TraceOut("検索条件:" + word);
    var fso = new ActiveXObject("Scripting.FileSystemObject");
    for (var i = 0; i < g_SerchPath.length; i++) {
        FileFindDir(g_SerchPath[i], word, fso);
    }
    fso = null;
    Editor.TraceOut( "" );
}

function FileFindDir(curDir, word, fso)
{
    if (word == "") {
        return;
    }
    // 存在しないフォルダは戻る
    if (!fso.FolderExists(curDir)) {
        return;
    }
    // 隠しフォルダは戻る
    if (g_NotFindHiddenFolder != 0) {
        if (fso.GetFolder(curDir).Attributes & 0x02) {
            return;
        }
    }
 
    // サブフォルダを列挙して、再帰的に処理
    var subDirs = new Enumerator(fso.GetFolder(curDir).SubFolders);
    for (; !subDirs.atEnd(); subDirs.moveNext()) {
        FileFindDir(subDirs.item(), word, fso);
    }
    subDirs = null;
    // 検索
    var reg = new RegExp(word, "ig");
    reg.compile(word, "ig");
    // ファイル名を列挙して、マッチしたファイル名を出力
    var files = new Enumerator(fso.GetFolder(curDir).Files);
    for (; !files.atEnd(); files.moveNext()) {
        if (null != reg.exec(files.item().Name)) {
            Editor.TraceOut(curDir + "\\" + files.item().Name);
        }
    }
    files = null;
    reg = null;
}
-------------------------------------------ここまで
石鹸
Mozilla/4.0 (compatible; MSIE 4.0; Windows 95)

488
2010/4/16 (金) 22:01:00  
[488] マクロの移植について

いつもありがたく使用させていただいております。
下記のマクロ(削除)は秀丸エディタで辞書引きソフトのLogophile
を検索するファイルの内容なのですが、マクロについての
知識がないために、サクラエディタにマクロの移植ができ
なくて困っています。どなたかご教示願えないでしょうか?
Ki
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6.4; YTB730; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)


2010/4/17 (土) 01:33:42  
[489] Re: マクロの移植について

// execlogophile.js みたいな名前でマクロフォルダへ

word_to_logophile();
function word_to_logophile()
{
        // カーソル位置の「検索キーワード」的なものを取得
        var str = Editor.ExpandParameter('$C');
        // 前後の空白類を置換で削除
        str = str.replace(/^[\s\u3000]+/, '').replace(/[\s\u3000]+$/, '');
        // 選択文字がない場合終了
        if( str.length == 0 ) return;
        // 文字をUnicode,16進数4桁にして+をつける
        str = str.replace(/./g, function(s){
                var hexstr = '000'+(s.charCodeAt(0).toString(16));
                return '+' + hexstr.match(/.{2,4}$/)[0];
        });
        var cmdLine = "\"C:\\Program Files\\Logophile\\Logophile.exe\" -f -u" + str;
        // 外部コマンドを実行(入出力なし)
        Editor.ExecCommand(cmdLine,0);
}

秀丸とLogophileの仕様が分からないので16進数4桁小文字にして送りつけます。
うまく動かないときは下記のように調整してください。
英語は2桁:'000'→'0'
大文字でないとだめ:-u" + str → -u" + str.toUpperCase()

Editor.がついてない部分は普通のJavaScriptです。
短いのがいいならまとめてこんな感じで
str=ExpandParameter('$C').replace(/^[\s\u3000]+/,'').replace(/[\s\u3000]+$/,'');
if(str.length){
        str=str.replace(/./g,function(s){return '+'+('000'+(s.charCodeAt(0).toString(16))).match(/.{2,4}$/)[0];});
        ExecCommand("\"C:\\Program Files\\Logophile\\Logophile.exe\" -f -u"+str.toUpperCase(),1);
}
もか
INCM1.23c


2010/4/17 (土) 11:07:20  
[490] Re2: マクロの移植についてー大成功

もかさん
 2つのマクロをありがとうございました。前者で早速試して
みました。英語でも日本語でもうまくいきました。ほんとうに
ありがとうございました。
Ki
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6.4; YTB730; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)


2010/4/17 (土) 12:32:04  
[491] Re2: マクロの移植について

もかさん
スレッドを別に立ち上げた方がよかったのですが、もうひと
つ秀丸から辞書引きソフトのEBWinを呼び出して単語を引く
ソフト(削除)があります。
これもサクラエディタに移植していただけないでしょうか?
サクラエディタで利用できますと便利なのですが、いかがで
しょうか。お願いばかりで恐縮です。
Ki
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6.4; YTB730; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)


2010/4/18 (日) 17:32:08  
[492] Re3: マクロの移植について

▼ Kiさん

もかさんはひとつひとつ説明を加えながらコードを提示しています。
少なくとも下の二行に相当するコードがどの部分か、わかるのでは
ないですか。

 $word = gettext(seltopx, seltopy, selendx, selendy);
 run "C:\\Program Files\\EBWin\\EBWin.exe /S=" + $word;

gettextの 5番目の引数(1)が今度はありませんが、この説明は
秀丸ユーザーだった Kiさんに出してもらいたいものです。
(無視できるものかもしれませんが)

ここのサイトの構造はわかりにくいのですがマクロの一覧はここにあります。
  http://sakura.qp.land.to/SakuraMacro/
S_IsTextSelectedと S_SelectWordが、残った部分に相当するものではあ
りませんか。先頭の S_については文字通り「※先頭の'S_'について」という
項目が左のフレームの一番上にあります。最初のマクロより簡単
ですから自分でもできそうに思えてきたんじゃないですか。

言葉を尽くしても丸投げ連投では回答のハードルを上げます。
答えはもらいにくくなりますよ。
わざわざ何を……
Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)


2010/4/18 (日) 20:29:55  
[493] Re4: マクロの移植について

最初に訂正
見直してみると短い版がデバック用になってます。
誤:+str.toUpperCase(),1);
正:+str,0);

>ここのサイトの構造はわかりにくいのですがマクロの一覧はここにあります。
>  http://sakura.qp.land.to/SakuraMacro/

フォローありがとう。
マクロなら今は普通のヘルプにも...と思ったけど一覧がどこにもないです。どこに載せるべきか。
>言葉を尽くしても丸投げ連投では回答のハードルを上げます。
>答えはもらいにくくなりますよ。

そうですね。これ位なら15分程度でマクロを作てテストして投稿(解説を除く)までできますが、回答するのが面倒になりますね。
EDWinとかのコマンドをネットで検索する時間が必要なので。

あと重要な点として、「秀丸マクロの転載は著作権者の許可orライセンスにしたがっているか」確認してください。
問題があれば、秀丸マクロの転載部分は削除します。

実はEBWinのほうは、細かいことを考慮しないなら
・キーマクロの記録開始
・外部コマンド実行:"C:\Program Files\EBWin\EBWin.exe" /S=$C
標準出力・標準入力のチェックをはずして実行
・キーマクロの記録終了&保存で名前をつける(.mac)
これで、マクロができます。お試しください。

// 前回のを応用した少し賢い版
var str = Editor.ExpandParameter('$C');
// 選択文字列のコピーの前後の空白をなくす(トリム)
str = str.replace(/^[\s\u3000]+/, '').replace(/[\s\u3000]+$/, '');
if( str.length ){
        // 保険 strを全置換「$」→「$$」$4つなのはJavaScriptのreplaceの仕様
        str = str.replace(/\$/g, "$$$$");
        Editor.ExecCommand("\"C:\\Program Files\\EBWin\\EBWin.exe\" /S="+str,0);
}

・googleしたもの
EBWin(辞書引きソフト/フリーソフト)
http://www31.ocn.ne.jp/~h_ishida/EBPocket.html#download_win
コマンドラインはここです。
http://www31.ocn.ne.jp/~h_ishida/EBPocket/0_0_3_5.html
もか
INCM1.23c


2010/4/18 (日) 20:55:06  
[494] Re5: マクロの移植についてーお詫びと御礼と

 もかさんはじめ皆様の言うとおりです。ご指摘等ありがと
うございます。
 もかさん、今回もほんとうにありがとうございます。長年
できたら便利と思っておりましただけにありがたく利用させ
ていただきます。これを機会にマクロの勉強をしなくてはい
けません。
 「秀丸マクロの転載部分」ですがこれはとっても大切なご
指摘だと思いました。削除させていただきました。
Ki
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GTB6.4; YTB730; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)

366
2007/4/2 (月) 15:07:38  
[366] サクラエディタのマクロでこういうことしたいのですが教えてください。

メールの返信のときに引用したい文章の各行の頭に”> ”を追加しようとしています。メーラーにその機能がないので、一旦サクラエディタを起動し、引用したい文章を貼り付け、以下のPPAマクロを実行して、できあがった文字列をコピーしてメーラーで貼り付け使用してます。

//PPAマクロ
begin
  S_ReplaceAll('^.', '> $&', 148); // 選択範囲の行頭を > に置換する。
  S_CancelMode(0); // 各種モードの取り消し 選択状態を解除する。[Esc]キーと一緒。
  S_SearchClearMark(0); // 検索マークの切替え
  S_MoveHistPrev(0); // 移動履歴: 前へ
  S_ReDraw(0); // 再描画
end;

やりたいのは、引用したい文章をコピーして、右クリックして”サクラエディタで開く”を実行します。サクラエディタではエディタオープン時の自動実行マクロか何かでクリップボード内の文字列に上記マクロを実行して、マクロの中でクリップボードにコピーしてすぐに終了してしまうというものです。そうしますと”> ”が追加された文字列をメーラーですぐに貼り付けることができるのではないかと思いました。
いまいちサクラエディタとPPAマクロに詳しくないので可能かどうかさえ分かりません。
こういうことしたいのですがどうすればできるのか教えてください。よろしくお願いします。
もし、別のサイトでこういう問い合わせを受けているというのがありましたらそれでもですのでよろしくお願いします。また、申し訳ありませんが質問されても夜にしか返信できませんのでご了承ください。
マクロ初心者
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; (R1 1.3); (R1 1.5); InfoPath.1)


2007/4/3 (火) 03:19:11  
[367] RE: サクラエディタのマクロでこういうことしたいのですが教えてください。

> メーラーにその機能がないので、一旦サクラエディタを起動し、引用したい文章を貼り付け、以下のPPAマクロを実行して、できあがった文字列をコピーしてメーラーで貼り付け使用してます。

その程度なら PPA でなくキーボードマクロで十分だと思う。
というか、変数も何も無いし、わざわざ PPA 使う意味無いんじゃ。

どうせなら、マクロの先頭で貼り付けして、
最後で全文を範囲選択してコピーするあたりまでやっちゃえば?

1.メーラーとやらで処理対象のテキストを範囲選択してコピー
2.新規サクラエディタのウィンドウを開く。
3.下記マクロを実行する。(勝手にテキスト処理されて最後にエディタウィンドウが閉じる)
4.メーラーとやらで貼り付け実行

----- なんとか.mac -----
//キーボードマクロのファイル
S_Paste(0);        // 貼り付け

S_ReplaceAll('^', '> ', 148); // 選択範囲の行頭を > に置換する。何も選択されていない場合、全テキストが処理される。

S_SelectAll(0);        // すべて選択
S_Copy(0);        // コピー

S_Undo(0);        // 元に戻す
S_Undo(0);        // 元に戻す
S_WinClose();        // ウィンドウを閉じる
--------------------

> サクラエディタではエディタオープン時の自動実行マクロか何かで
これは無理だから。自動実行の類は無いから。

でも、一番楽なのはサクラエディタじゃなくて perl か何かを使用する事だと思う。

Active Perl でもインストールしておいて、下記(実質内容4行)の
スクリプトを用意しておけば、後はそのファイルをクリックして
実行するだけです。

1.メーラーとやらで処理対象のテキストを範囲選択してコピー
2.下記、スクリプトファイルをマウスで突くだけ。
 # あるいはコマンド「perl C:\〜〜\test.pl」を実行する。
3.メーラーとやらで貼り付け実行

----- test.pl -----
#!perl

use Win32::Clipboard;               # Win32::Clipboard を使うわよ、の宣言
$data = Win32::Clipboard::Get();    # $data にクリップボードの内容を格納
$data =~ s/^/> /mgo;                # $data の各行の行頭に "> " を付ける
Win32::Clipboard::Set($data);       # $data の内容ををクリップボードにセット
--------------------
すい
INCM1.23c


2007/4/3 (火) 05:35:56  
[368] Re2: サクラエディタのマクロでこういうことしたいのですが教えてください。

> でも、一番楽なのはサクラエディタじゃなくて perl か何かを使用する事だと思う。
> Active Perl でもインストールしておいて、下記(実質内容4行)の
> スクリプトを用意しておけば、後はそのファイルをクリックして
> 実行するだけです。


さっそくの回答ありがとうござました。
Active Perlをインストールして殆どやりたいことができました。
もしかしてWSHでも同じことができるのかな・・・?
とにかくありがとうござました。感謝です。
マクロ初心者
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)


2007/4/3 (火) 09:47:56  
[369] Re3: サクラエディタのマクロでこういうことしたいのですが教えてください。

> もしかしてWSHでも同じことができるのかな・・・?

WSHでもやれないことは無いですが、直接クリップボードを触れないので
下みたいな回りくどい感じになりますね。

var oIExp = WScript.CreateObject("InternetExplorer.Application");
oIExp.Navigate("about:blank");
while(oIExp.Busy){ WScript.Sleep(10); }
var oClip = oIExp.Document.parentWindow.clipboardData;
var sText = oClip.getData("TEXT");
sText = sText.replace(/([^\r\n]+\r?\n?)/g,"> $1");
oClip.setData("TEXT", sText);
oIExp.Quit();
di
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727) Sleipnir/2.5.9


2007/4/3 (火) 18:20:32  
[370] Re3: サクラエディタのマクロでこういうことしたいのですが教えてください。

▼ マクロ初心者さん

> Active Perlをインストールして殆どやりたいことができました。
> もしかしてWSHでも同じことができるのかな・・・?


Active Perl て WSH だろとかいうつあfひえsdkj
AC
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)


2007/4/4 (水) 00:27:03  
[371] Re4: サクラエディタのマクロでこういうことしたいのですが教えてください。

▼ ACさん
> ▼ マクロ初心者さん
>
> > Active Perlをインストールして殆どやりたいことができました。
> > もしかしてWSHでも同じことができるのかな・・・?
>
> Active Perl て WSH だろとかいうつあfひえsdkj


私、スレ主とは別人です 笑

ってか、">"をつけるだけなら、サクラエディタにありますが?
右クリックで引用符つきコピーをすればよいのでは???

まくろ初心者
Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3


2007/4/4 (水) 15:31:25  
[372] Re5: サクラエディタのマクロでこういうことしたいのですが教えてください。

まくろ初心者さんへ

> ってか、">"をつけるだけなら、サクラエディタにありますが?
> 右クリックで引用符つきコピーをすればよいのでは???


 げっ、あったぁ〜。
 何してたんだろう・・・。
 でも、ActivePerl方式が使い勝手がいいのでこちらにさせて
 もらいます。

  ※このBBSには初めて質問したのですが、本当にマクロ
   初心者だったので同じ名前になってしまいました。
   おそらくもう質問することはないかと思いますので。
   失礼しました。
マクロ初心者
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; (R1 1.3); (R1 1.5); InfoPath.1)


2007/4/5 (木) 04:26:10  
[373] Re6: サクラエディタのマクロでこういうことしたいのですが教えてください。

> でも、ActivePerl方式が使い勝手がいいのでこちらにさせて
> もらいます。


あぅ、ごめんなさい、Active Perl、ちっとも使い勝手良くないです。
というか「他のツール使って良し」なら、「クリップボード拡張ツール」
の類を使用すればもっとずっと使い勝手が良くなりますね。
# ド忘れしてました。

例えば CLCL (クルクル) なんか。
http://www.nakka.com/soft/clcl/

クリップボードの履歴を取るツールですが、プラグインで
色々なテキスト編集機能を付加する事が出来ます。
用意されている tool_text を登録すれば、ツールとして
「引用(&Q)」が使えるようになります。

デフォルトの設定だと [Alt]+[T] で、登録したツールを利用する事が
出来ます。(キーは「オプション」→[動作]タブ にて自由に変えられます。)


1.メーラーとやらで処理対象のテキストを範囲選択する。(選択だけ)

2.CLCLのツールメニューを出して [引用(&Q)] を実行する。
 具体的には [Alt]+[T] → [Q] とキー入力するだけ。
 すると、引用記号を聞いて来るので「> 」と入力して [Enter]。

3.メーラーの編集画面で選択範囲の文字列が引用記号付きの
 状態に変わり果てたさまを呆然と眺める。

のような感じで、そのメーラーとやらの編集画面から一度も
外へ出る事なく、引用記号付けられますな。

類似のソフトは他にもあるんじゃないかなぁと。
探してみそ。
すい
INCM1.23c

ページ:[ ] [1] [2] [3] [4] [5] [6] [7] [8] [ ]
INCM/CMT
Cyclamen v3.81