でらてーげー(^_^)/

沖縄病名古屋人の趣味的日常

wsfを使った小ワザ

WebDBからデータを大量にぶっこ抜く作業をiMacrosでできるだけ楽に行いたいので、
検索文字列だけ変えたマクロを必要な数だけ生成したい。
また、ぶっこ抜いたデータはExcelブックなのでExcelマクロで整形したい。
ついでに、ドラッグ&ドロップでファイルを落としてやると必要な処理を始められるようにしたい。
と、いうようなことを考えて試行錯誤した結果、
wsfを使ったスクリプトで解決できたので覚書にする。
まずは雛形から大量のiimを生成するスクリプト
操作相手が海外のWebDBでレスポンスが不安定。
1ジョブ=1ファイルで様子を見ながらマクロを実行したかったので
マクロのファイル名に整理用の項番を入れるようにした。
<br /> <?xml version="1.0" encoding="Shift_JIS" standalone="yes" ?><br /> <package><br /> <job id="MakeMacroScripts" ><br /> <?job error="True" debug="True" ?><br /> <object id="objFs" progid="Scripting.FileSystemObject" /><br /> <script language="JavaScript"><br /> &lt;![CDATA[<br /> //----------------------------------------------------------------------<br /> // iMacros for Firefox マクロ生成スクリプト<br /> // 雛形のiimを元にDrag&Dropで渡したリストの文字列を組み込んで、<br /> // 個別のiimをそれぞれ生成する。<br /> // このコードの元ネタは<br /> // 「@IT:Windows TIPS -- Tips:複数ファイルの文字列置換をワンクリックで行なう」<br /> // <a href="http://www.atmarkit.co.jp/fwin2k/win2ktips/308strrpl/strrpl.html">http://www.atmarkit.co.jp/fwin2k/win2ktips/308strrpl/strrpl.html</a><br /> // 文字化け対策のため、雛形の1行目は必ず空行にする。<br /> //----------------------------------------------------------------------<br /> strRepl="SITAAAAAAAAAA"; /* 置換対象文字列 */<br /> var objArg= WScript.Arguments; /* D&Dで渡したファイルを覚えておく */<br /> for(i=0;i<objArg.length;i++){<br /> var objTs =objFs.OpenTextFile(objArg(i),1,false); /* D&Dで渡したファイルをひとつづつ開く */<br /> strTemp=objFs.BuildPath(objFs.GetParentFolderName(WScript.ScriptFullName),"_GetAIB-Template.iim"); /* 雛形の指定 */<br /> Count=0 /* 生成するマクロのファイル名に順番を入れるためのカウント */<br /> do{<br /> Count += 1<br /> strLne=objTs.ReadLine(); /* リストから1行読み込み */<br /> strLne1=Count+"_"+strLne+".iim"<br /> strTmp=objFs.BuildPath(objFs.GetParentFolderName(WScript.ScriptFullName),strLne1);<br /> /* 以上2行でマクロのファイル名を絶対パスで生成 wsfスクリプトのある場所に生成される */<br /> var objTs2=objFs.OpenTextFile(strTmp,2,true,true); /* 保存先を開く */<br /> var objTs3=objFs.OpenTextFile(strTemp,1,false); /* 雛形を開く*/<br /> strLne3=""<br /> strLne3=objTs3.ReadLine(); /* 文字化け対策 */<br /> do{<br /> strLne3=objTs3.ReadLine(); /* 雛形を1行づつ読む */<br /> strLne3=strLne3.replace(strRepl,strLne); /* 文字列置換 */<br /> strLne3=strLne3.replace("ZZ",Count); /* カウント文字列を置換 */<br /> objTs2.WriteLine(strLne3); /* 1行づつ出力 */<br /> }while(!objTs3.AtEndOfStream);<br /> objTs3.Close();<br /> objTs2.Close();<br /> }while(!objTs.AtEndOfStream);<br /> objTs.Close();<br /> }<br /> ]]><br /> </script><br /> </job><br /> </package><br />

次にExcelマクロ起動スクリプト
先のスクリプトでも使ったD&Dでファイルを渡す小ワザとExcel操作を組み合わせた単純なもの。
めんどくさかったのでパスは相対化していない。
<br /> <?xml version="1.0" encoding="Shift_JIS" standalone="yes" ?><br /> <package><br /> <job id="CallExcelMacro"><br /> <?job error="True" debug="True" ?><br /> <object id="objFs" progid="Scripting.FileSystemObject" /><br /> <script language="JavaScript"><br /> &lt;![CDATA[<br /> //----------------------------------------------------------------------<br /> // Excelマクロ起動スクリプト<br /> // Drag&Dropで渡した複数の.xlsファイルに対して、<br /> // それぞれマクロ処理をかける。<br /> // このコードの元ネタは<br /> // 「@IT:Windows TIPS -- Tips:複数ファイルの文字列置換をワンクリックで行なう」<br /> // <a href="http://www.atmarkit.co.jp/fwin2k/win2ktips/308strrpl/strrpl.html">http://www.atmarkit.co.jp/fwin2k/win2ktips/308strrpl/strrpl.html</a><br /> // 「WSH JScriptを使いこなそう ~Excel操作~」<br /> // <a href="http://3rd.geocities.jp/kaito_extra/Source/ExcelCtrl.html">http://3rd.geocities.jp/kaito_extra/Source/ExcelCtrl.html</a><br /> //----------------------------------------------------------------------<br /> var objArg=WScript.Arguments;<br /> var ExcelApp = new ActiveXObject( "Excel.Application" ); /* Excelオブジェクトを取得(Excelの起動) */<br /> ExcelApp.Visible = true; /* Excelアプリケーションを表示 */<br /> var book1 = ExcelApp.Workbooks.Open( "C:\\downloads\\_test.xls" ); /* マクロを読み込み */<br /> for(i=0;i<objArg.length;i++){<br /> var book = ExcelApp.Workbooks.Open( objArg(i) ); /* 指定したExcelファイルを開く */<br /> ExcelApp.Run( "_test.xls!Macro1" ); /* マクロを起動 */<br /> // 終了したら保存して閉じる<br /> book.Save<br /> book.Close();<br /> }<br /> book1.Close(); /* マクロを閉じる */<br /> // オブジェクトを解放(Excelの終了)<br /> ExcelApp.Quit();<br /> ExcelApp = null;<br /> ]]><br /> </script><br /> </job><br /> </package><br />



同じカテゴリー(仕事の小ネタ/覚書)の記事
PDFからTIFFに変換する
PDFからTIFFに変換する(2011-11-30 02:10)

iMacros は使える。
iMacros は使える。(2011-11-17 00:34)

ロボット展なう。
ロボット展なう。(2011-11-09 12:20)


 
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。