HMEXマクロNo.25414
emc827 さん 08/09/13 18:10
 
winxp he sp3, hm707, hmex402f, excel2003

使い勝手の観点から、HMEXマクロにしたいのです。
現状、excelマクロでやっていますが、重いのです。
銘柄.txtを読み込んで、下記マクロ結果を出したいのです。
実は、この続きがあります。このマクロの後処理です。

手順:
銘柄.txtから各銘柄コードを足して、注aの様にします。
yahoo制限 一度に50個までです。約2000個の場合、50個毎に分割処理します。
注aを起動しますと、一覧表が出ます。
この一覧表をHMEXでdownloadします。
その後、マクロ結果の様にデータを整理します。

銘柄.txt:約2000個
1844,大盛工業
8840,大京
5934,日本アルミ
8928,穴吹興産
8426,ニッシン債権回収
2318,ビービーネット
3242,アーバネットコーポレーション

マクロ結果:
1844,大盛工業 ,東証2部
8840,大京 ,東証1部
5934,日本アルミ ,大証2部
8928,穴吹興産 ,大証1部
8426,ニッシン債権回収 ,マザーズ
2318,ビービーネット ,ヘラクレス
3242,アーバネットコーポレーション ,JASDAQ

参考マクロ:
setcompatiblemode 0x200;
newfile;
disabledraw;
openfile "http://quote.yahoo.co.jp/q?s=1844+8840+5934+8928+8426+2318+3242&d=
v1"; --------注a
//if( readonly ) readonlyswitch;
gofiletop;
setclipboard "";
while(1){
  searchdown "([0-9][0-9][0-9][0-9])\\n *\\n(.+)\\n", regular;
  if(result==false)break;
  appendcopy;
}
closenew;
paste;
replaceallfast "([0-9][0-9][0-9][0-9])\\n *\\n(.+)\\n", "\\1,\\2\\n",regular;

よろしくお願いします。


[ ]
RE:25414 HMEXマクロNo.25415
emc827 さん 08/09/14 11:18
 
50個毎にdownloadするのが、大変であれば、1個ずつdownloadする方法はどうでしょ
うか。

よろしくお願いします。


[ ]
RE:25415 HMEXマクロNo.25419
秀丸担当 さん 08/09/16 10:25
 

とりあえず、今回もまた、難しいと思うので、作ってみました。
銘柄.txtを開いた状態で実行します。
「Hidemarnet Explorer を使い場合の詳細」設定は、「リンク先を番号で表示し
て下のほうにまとめる」でないといけないです。

大変申し訳ありませんが、今回も難しいと思うのでそのままご希望と思われる通
りのことを作ってみましたが、できるだけご自身でチャレンジしてみて、どのよ
うにしてみて、どの点が具体的に分からない、というご質問にしていただけると
助かります。



setcompatiblemode 0x0200;
#hOrg=hidemaruhandle(0);
#cPack=40;
gofiletop;
while(1){
    $url="http://quote.yahoo.co.jp/q?s=";
    #c=0;
    #lineno=lineno;
    while(#c<#cPack){
        searchdown2 "^[0-9][0-9][0-9][0-9]",regular
        if(result==false)break;
        $code[#c]=gettext(foundtopx,foundtopy,foundendx,foundendy);
        $url=$url+$code[#c]+"+";
        #c=#c+1;
        golineend2;
    }
    if(#c>0){
        $url=leftstr($url,strlen($url)-1)+"&d=v1";
        openfile $url;
        #hHmnetex=hidemaruhandle(0);
        #cMarket=0;
        gofiletop;
        while(#cMarket<#c){
            searchdown $code[#cMarket]+"\\.\\] *([^ ]+) *\\[(?\\1)",
            regular;
            if(result==false)break;
            $market[#cMarket] = gettext(foundtopx,foundtopy,foundendx,
            foundendy);
            #cMarket=#cMarket+1;
        }
        setactivehidemaru #hOrg;
        closehidemaruforced #hHmnetex;
        movetolineno 1,#lineno;
        #i=0;
        while(#i<#cMarket){
            searchdown2 "^[0-9][0-9][0-9][0-9]",regular
            if(result==false)break;
            golineend2;
            insert ","+$market[#i];
            #i=#i+1;
        }
        movetolineno 1,lineno+1;
    }
    if(#c<#cPack)break;
}

[ ]
RE:25419 HMEXマクロNo.25420
emc827 さん 08/09/16 12:17
 
親切に教えて頂きありがとう御座います。
ご指摘の通り努力します。
教えていただいた通り、銘柄.txtを開いて、マクロを実行しましたが、銘柄.txtしか
表示されませんでした。上記sampleでも同じでした。
やり方が悪いのでしょうか。

よろしくお願いします。



[ ]
RE:25420 HMEXマクロNo.25421
秀丸担当 さん 08/09/16 15:46
 

「Hidemarnet Explorer を使う場合の詳細」の「HTTPを開くときWebブラウズ
モードで開く」がOFFの場合は動かないです。

ONにするか、または、以下の行を
    $url="http://quote.yahoo.co.jp/q?s=";
以下のように
    $url="/wb http://quote.yahoo.co.jp/q?s=";
するといいかもしれません。

[ ]
RE:25421 HMEXマクロNo.25422
emc827 さん 08/09/16 20:21
 
ありがとう御座います。
ご指摘の2つのケースをやってみました。2つとも、HMEXは動作しています。ただ、
東証2部、東証1部 大証2部等 市場名が表示されないのです。

マクロ結果:
1844,大盛工業 ,東証2部
8840,大京 ,東証1部
5934,日本アルミ ,大証2部
8928,穴吹興産 ,大証1部
8426,ニッシン債権回収 ,マザーズ
2318,ビービーネット ,ヘラクレス
3242,アーバネットコーポレーション ,JASDAQ

よろしくお願いします。


[ ]
RE:25422 HMEXマクロNo.25423
秀丸担当 さん 08/09/17 09:07
 

あと、「Hidemarnet Explorer を使い場合の詳細」設定のイメージの展開方法は、
「リンクとALTを表示」または「リンクを表示」でないといけませんでした。

またはマクロの以下の部分を、

    searchdown $code[#cMarket]+"\\.\\] *([^ ]+) *\\[(?\\1)",

以下のようにするとイメージの展開方法はどれでも動きました。

    searchdown $code[#cMarket]+"\\.\\] *([^ ]+)(?\\1)",

[ ]
RE:25423 希望通りできましたNo.25424
emc827 さん 08/09/17 10:54
 
2000個 約20分掛かりました。
HMEXで、downloadできて良かったです。
この後のデータ整理マクロを検討しています。
私には難しいです。

親切に教えて頂き、ありがとう御座いました。

[ ]
RE:25424 追加質問ですNo.25432
emc827 さん 08/09/18 12:12
 
秀丸担当様 ありがとう御座います。

後処理マクロの検討をしています。
上場廃止銘柄1331,ニチロの場合、市場名が表示されません。当然ですが。
この銘柄を削除したいのです。
注cをこのマクロの最後に追加しましたが、削除できませんでした。

銘柄.txt:
1844,大盛工業
8840,大京
5934,日本アルミ
8426,ニッシン債権回収
3242,アーバネットコーポレーション
1331,ニチロ      --------------------------上場廃止銘柄 注a

マクロ結果:
1844,大盛工業,東証2部
8840,大京,東証1部
5934,日本アルミ,大証2部
8426,ニッシン債権回収,マザーズ
3242,アーバネットコーポレーション,JASDAQ
1331,ニチロ      ------------市場名が表示されません。これを削除したいの
です。注b

削除するため、このマクロを最後に追加しました。
replaceallfast "^(.*?),(.*?),\n","",regular;  -------------注c

よろしくお願いします。

[ ]
RE:25432 追加質問ですNo.25433
秀丸担当 さん 08/09/18 14:27
 

>削除するため、このマクロを最後に追加しました。
>replaceallfast "^(.*?),(.*?),\n","",regular;  -------------注c

「.」だと任意の一文字で「,」も含まれてしまうので、
「.」の代わりに「[^,]」として、「,」を除く任意の一文字というようにすると
いいと思います。
あと、マクロの文字列中の正規表現の \ は、 \\ と書いたほうがいいです。

replaceallfast "^([^,]*?),([^,]*?)\\n", "", regular;

[ ]
RE:25433 コメントNo.25434
emc827 さん 08/09/18 15:49
 
ありがとう御座います。
マクロを追加しました。
その結果、下記の様な場合、ニチロ以下が削除されます。

1844,大盛工業
1331,ニチロ
8840,大京
5934,日本アルミ
8426,ニッシン債権回収
3242,アーバネットコーポレーション

よろしくお願いします。

[ ]
RE:25434 コメントNo.25435
秀丸担当 さん 08/09/18 16:51
 

最初のマクロは、存在しないコードがあると中断するようにしていためでした。
マクロを下部に書いておきます。

参考までに、以下のの会議室で質問されても、マクロ作者様がもしかしたらアド
バイスをくれるかもしれません。

 秀丸エディタ マクロ作者会議室
 http://www.maruo.co.jp/hidesoft/4/indexg.html


-------------

setcompatiblemode 0x0200;
#hOrg=hidemaruhandle(0);
#cPack=40;
gofiletop;
while(1){
  $url="/wb http://quote.yahoo.co.jp/q?s=";
  #c=0;
  #lineno=lineno;
  while(#c<#cPack){
    searchdown2 "^[0-9][0-9][0-9][0-9]",regular;
    if(result==false)break;
    $code[#c]=gettext(foundtopx,foundtopy,foundendx,foundendy);
    $url=$url+$code[#c]+"+";
    #c=#c+1;
    golineend2;
  }
  if(#c>0){
    $url=leftstr($url,strlen($url)-1)+"&d=v1";
    openfile $url;
    #hHmnetex=hidemaruhandle(0);
    gofiletop;
    #i=0;
    while(#i<#c){
      searchdown $code[#i]+"\\.\\] *([^ ]+)(?\\1)",regular;
      if(result!=false){
        #f[#i]=true;
        $market[#i] = gettext(foundtopx,foundtopy,foundendx,foundendy);
      } else {
        #f[#i]=false;
      }
      #i=#i+1;
    }
    setactivehidemaru #hOrg;
    closehidemaruforced #hHmnetex;
    movetolineno 1,#lineno;
    #i=0;
    while(#i<#c){
      searchdown2 "^[0-9][0-9][0-9][0-9]",regular;
      if(result==false)break;
      golineend2;
      if(#f[#i]!=false){
        insert ","+$market[#i];
      }
      #i=#i+1;
    }
    movetolineno 1,lineno+1;
  }
  if(#c<#cPack)break;
}

[ ]
RE:25435 コメントNo.25436
emc827 さん 08/09/18 17:55
 
お蔭様でうまくいきました。

>参考までに、以下のの会議室で質問されても、マクロ作者様がもしかしたらアドバ
>イスをくれるかもしれません。
> 秀丸エディタ マクロ作者会議室
> http://www.maruo.co.jp/hidesoft/4/indexg.html

分かりました。紹介して頂いた上記会議室で、質問させていただきます。
ありがとう御座いました。





[ ]