指定したidの中を取得する

指定したidの中を取得する


obj = IE.document.getElementById(ID名)
obj.innerText
obj.innerHTML

指定したidの中を取得する

例えば以下の様な構造のWebページがあったとします。idを指定されたいくつかのタグで構成されています。

<p id="res1">The Capital is in Tokyo</p>
<p id="res2">Gold is just a Gold</p>
<p id="res3">You are fine!</p>
<ul id="fruit">
 <li>Banana</li>
 <li>Fig</li>
 <li>Apple</li>
</ul>
<ul id="fruit">
 <li>Kaki</li>
 <li>Lemon</li>
 <li>Cherry</li>
</ul>

getElementByIdでIDを指定することで該当のオブジェクトを取得できますので、それに対してinnerTextやinnerHTMLを実行することでIDの中が取得できます。

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate("http://canal22.org/sample0014/")
REPEAT
  SLEEP(0.1)
UNTIL !IE.busy AND IE.readyState = 4

objId = IE.document.getElementById("res1")
PRINT "res1:" + objId.innerText
objId = IE.document.getElementById("res2")
PRINT "res2:" + objId.innerText
objId = IE.document.getElementById("res3")
PRINT "res3:" + objId.innerText

同名IDが複数ある場合は

上記のWebページではid=”fruit”と指定されている箇所が複数あります。
idは1ページに内に1つ(一意)であることが望ましいため、理想的な状況ではありませんが、
この場合にgetElementById(“fruit”)を指定するとどうなるでしょうか。
スクリプトは以下のようになります。

ちなみにgetElementByIdは単数取得を前提としており、複数取得できるgetElementsByTagNameと異なり、複数形のsが無い点に注意です。

この投稿の続きを読む »

タグ

2013年1月30日 | コメントは受け付けていません。 |

カテゴリー:UWSCとInternetExplorer

UWSCの設定をエクスポートしたい

新しいパソコンにuwscをダウンロード&インストールしたのですが、
以前設定していたランチメニューやスケジュール機能を再設定するのが面倒です。 これら設定のエクスポートとインポートは出来ないでしょうか?
出来ます。

これらの設定は、UWSC.INIファイルに書き込まれています。
UWSC.INIファイルそのものをコピー&上書きするか、対象部分を上書きすることで、 以前設定した時と同様にランチメニューやスケジュール機能を利用することが出来るようになります。

ということで、UWSC.INIファイルについてご説明致します。

UWSC.INI

場所:UWSCのプログラムが入っているフォルダの第一階層。
HELPによると、OSによって以下のような場合があるようです。

Vista以上にて Pragram files下にインストールした場合に VirtualStoreリダイレクト機能により以下のフォルダに作られます C:\Users\ユーザ名\AppData\Local\VirtualStore\Program Files\UWSC (AppDataフォルダは非表示フォルダ) また、カレントに作成できない場合には Application Data\UWSC ディレクトリに作成

構成[SET] [LUNCHMENU] [SCHEDULE] セクションから成り立っています。

SETセクションは、UWSC運用の設定が書き込まれています。

LogLines :PRINT文でのロギングの最大行数を指定 (デフォルトは2000行)
DefaultFont: フォント名, サイズ (MSGBOX, FUKIDASI, ログ等でのフォント、デフォルトは’MS Pゴシック’)
NotMultiplex : スクリプト実行の多重起動を制限します (ファイルの関連付等からの実行)
0:制限なし、 1:一つのみ、 2:二つまで(数はUWSC本体も含む)
-9:制限なし、-1:一つのみ、-2:二つまで(マイナス値の場合 ‘多重起動禁止’のダイアログは出ない)
NotTaskBar = 1  関連付け実行時にアイコンをタスクバーに出さない
その他、Positionやホットキーの設定などがあります。

LUNCHMENUセクションは、ランチメニューの設定が記載されています。
この範囲をコピペすれば、新しいUWSCでランチメニューを引き継ぐことが出来ます。

SCHEDULEセクションは、スケジュール機能の設定が記載されています。
この範囲をコピペすれば、新しいUWSCでスケジュール設定を引き継ぐことが出来ます。

ちなみに、スケジュールの最大設定は、MaxNumberで変更が出来ます。
MaxNumber = スケジュールの最大設定数 (デフォルトは40、最大400まで)

INIファイルに関係する関数は、

  • READINI(INIファイル 読み込み)
  • WRITEINI(INIファイル 書き込み)
  • DELETEINI(INIファイル キーの削除)
などがあります。

※バージョンの異なるUWSC間で、この方法が可能かは、確認がとれていません。
将来的にiniファイルの設定が変更された場合、エラーを起こす可能性もあります。
さらに深く確認をとりたい場合は、本家ウミウミさんのページよりお調べください。

タグ

2013年1月29日 | コメントは受け付けていません。 |

カテゴリー:Q&A

指定したタグの中身を取得する

指定したタグの中身を取得する


obj = IE.document.getElementsByTagName(タグ名)
GETOLEITEM(obj)
ALL_OLE_ITEM[N].innertHTML
ALL_OLE_ITEM[N].innertText obj.length

指定したタグの中身を取得する

以下の様な構造のWebページがありますのでh4タグの中身を取得してみましょう

<h1>Hello H1</h1>
<div id="mainCentric">
<h4>Yes! This is a pen.</h4>
<h4>No! No! No! This is not a pencil.</h4>
<p>Get some objects!</p>
<p>Then you go home!</p>
</div>

HTMLで取得する場合はinnerHTML、中のテキストを取得する場合はInnerTextを使います。
getElementsByTagNameで取得したオブジェクトをGETOLEITEM関数に渡す処理を行います。

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate("http://canal22.org/sample0013/")
REPEAT
  SLEEP(0.1)
UNTIL !IE.busy AND IE.readyState = 4

pTag = IE.document.getElementsByTagName("h4")

GETOLEITEM(pTag)
PRINT ALL_OLE_ITEM[0].innerText

GETOLEITEMを実行すると、取得したオブジェクトの中がALL_OLE_ITEMに移されますので、ALL_OLE_ITEMを操作します
上のスクリプトではALL_OLE_ITEMの1番目(=0)のオブジェクトのinnerTextを取得しています。

pタグの中身を取得する

次のスクリプトでは、pタグを取得し、全ての中身を書き出しています。
GETOLEITEMを実行することにより要素数を取得できますので、順番にinnertTextやinnertHTMLで取得していきます。
スクリプトは下記のようになります。(見て分かりやすい様にハイフン、改行を施しています)

この投稿の続きを読む »

タグ

2013年1月24日 | コメントは受け付けていません。 |

カテゴリー:UWSCとInternetExplorer

指定したタグの数を取得する

指定したタグの数を取得する


obj = IE.document.getElementsByTagName(タグ名)
obj.length

指定したタグの数を取得する

例えば以下の様な構造のWebページがあったとします。h1、h4、div、pで構成されています。

<h1>Hello H1</h1>
<div id="mainCentric">
<h4>Yes! This is a pen.</h4>
<h4>No! No! No! This is not a pencil.</h4>
<p>Get some objects!</p>
<p>Then you go home!</p>
</div>

getElementsByTagNameでタグ名を指定することで該当のオブジェクトを取得できますので、それに対してlengthを実行することでタグ数が分かります。

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate("http://canal22.org/sample0013/")
REPEAT
  SLEEP(0.1)
UNTIL !IE.busy AND IE.readyState = 4

pTag = IE.document.getElementsByTagName("h4")
PRINT pTag.length

pタグの数を取得する

上記のサンプルではh4タグは2箇所出てきますので、結果は「2」となります。

次にpタグの要素数を調べてみましょう。
pタグは最初にお見せしたHTML以外の箇所でも使われているので、多くの数が出るでしょう。
スクリプトは下記のようになります。

この投稿の続きを読む »

タグ

2013年1月19日 | コメントは受け付けていません。 |

カテゴリー:UWSCとInternetExplorer

ブックを保存し閉じる

ブックを保存し閉じる


ActiveWorkbook.Save
ActiveWorkbook.SaveAs(ファイル名)
ActiveWorkbook.Saved
ActiveWorkbook.Close

ブックを保存し閉じる

ブックを上書き保存(Save)、別名で保存(SaveAs)をすることができます。
またブックの変更後に保存されたか否かをSavedで取得することができます。
最後にCloseとすることでブックが閉じられます。

EXCEL = CREATEOLEOBJ("Excel.Application")
EXCEL.visible = True
EXCEL.Workbooks.add()
EXCEL.ActiveWorkbook.Save
EXCEL.ActiveWorkbook.SaveAS("C:\myBook.xls")
PRINT "保存済み? "EXCEL.ActiveWorkbook.Saved
EXCEL.ActiveWorkbook.Close

上記のスクリプトを実施すると、ブックの保存やクローズが確認できます。
なお、上書き保存時に保存されるパスはご自身のマシンにより異なります。
※例えばマイドキュメントに保存されます

保存状況に応じて保存する

Savedを使うことにより、未保存時はFalse、保存時はTrueが返ります。
条件分岐に使用し、未保存ならば上書き、保存済みならば別名で保存をするようにしてみます。
スクリプトは下記のとおりです。

この投稿の続きを読む »

タグ

2013年1月14日 | コメントは受け付けていません。 |

カテゴリー:UWSCとExcel

UWSCのFORや繰り返し処理は何がベスト?

UWSCでFORとかREPEATとか繰り返し処理は何を使うのがベストですか?
UWSCでは、以下のような繰り返し処理を行う制御文が用意されています。
FOR 変数 = 初期値 TO 終了値 [ STEP 刻み値]
 処理
NEXT

WHILE 条件
 処理
WEND

REPEAT
 処理
UNTIL 条件 

これらの制御文はそれぞれ特徴があり、
どれがベストという評価は出来ません。
目的に応じて、使いこなすことがベストです

特徴

FOR~NEXTは、最も直感的に設定が出来て、繰り返し回数が分かっている場合に便利です。

WHILE~WENDは、条件がTrueの結果を返す限り、繰り返し処理を続けるループ文です。ループを開始する前に条件を判定するので、最初から条件を満たしていなければ、1度もループを行いません。

REPEAT~UNTILは、条件がFalseの結果を返す限り、繰り返し処理を続けるループ文です。ループの条件が終了判定となっているので、最低1回はループ処理を行います。

覚え方

当然、全ての制御文を使いこなせることが理想ですが、
はじめからうまく出来る人は多くありません。

これからスクリプトを習っていく方は、最も平易なFOR~NEXT文を覚えることをオススメします。

そして、色々とスクリプトを作成していく中で、FOR~NEXTで対応出来ないケースが生じてくるので、 その時、改めてWHILE~WENDの利用を検討してみてください。

それまでの経験でループ処理のアルゴリズムを理解していれば、
WHILE~WENDも容易に理解出来るようになっているでしょう。
※繰り返し処理に関するアルゴリズムの解説はリンク先が分かりやすいです。

タグ

2013年1月10日 | コメントは受け付けていません。 |

カテゴリー:Q&A

UWSCのスクリプト集

UWSCを学ぶにあたって、参考になるサイトを教えてください。
当サイトを見れば大丈夫!

なんて不親切なことは言いません(笑)。
コバヤシ式のメンバーも先人達のサイトを参考にさせてもらっています。
勉強会でも良いサイトを見つけて、参考にブックマークすることをオススメしています。

ということで、今回はUWSCのサンプルスクリプトを掲載しているサイトをご紹介します。

UWSCのサンプルスクリプト・ガイド

UWSC サンプル
http://www.uwsc.info/sample.html

うみうみさんのサイトはなんと言っても外せません。 いちばん最初にチェックしましょう!

Windows マクロテクニック 掲載スクリプト一覧 – IZAGNE

http://izagne.com/uwsc/
恥ずかしながら、自身のサイトも掲載します。基本的な使い方を中心に解説しています。

UWSCの誘惑
http://nem.symphonic-net.com/uwsct/0610uwsct.html

けっこうハイレベルなサンプル集です。眠たい詩人さんのサイトは濃い内容が多いのでためになります。

自動化ソフト UWSC スクリプト集
http://iriyak.adam.ne.jp/uwsc.html

ハイレベルな内容です。一通りマスターした上級者向け。

UWSCの落し物部屋 サンプル
http://siromasa.digi2.jp/uwsc/u_sample/

charsetの指定が無いため、サンプルを開くと文字化けするので、エンコードし直して確認しましょう。

UWSCサンプル集
http://www.nagomi-jp.net/~liners/uwsc_sample_page.htm

ウミウミさんの掲示板でも有名なLinersさんからの贈り物です。ヘルプ形式になっていて、情報が豊富です。ハッキリ言って凄いです!

ここに挙げたサイト以外にも、参考になるサイトはたくさんあるかと思われます。
気に入ったサイトは、はてなブックマークなどで、どんどん残していくと、
いざスクリプトを作成するといった場合に大変役に立ちます。

タグ

2013年1月8日 | コメントは受け付けていません。 |

カテゴリー:Q&A

ワークブック名、シート名を取得・選択する

ワークブック名、シート名を取得・選択する


ActiveWorkbook.name
ActiveWorksheet.name
Sheets.count
Sheets(N).Select

ワークブック名、シート名を取得・選択する

ワークブックの名前やシートの名前をNameで取得することが出来ます。
またSheetsオブジェクトに対してCountをすることでシート数を取得できます。

EXCEL = CREATEOLEOBJ("Excel.Application")
EXCEL.visible = True
EXCEL.workbooks.add()
PRINT "ワークブック名:" + EXCEL.ActiveWorkbook.name
PRINT "ワークシート名:" + EXCEL.ActiveSheet.Name
PRINT "シート数:" + EXCEL.Sheets.count
sName = EXCEL.ActiveSheet.Name
EXCEL.Sheets(sName).Select

全てのシート名を取得する

上のスクリプトで、ワークブック名、ワークシート名、シート数を取得できました。
これらのパーツを組み合わせて、現在選択しているワークブックの全てのシート名を取得、選択してみましょう。
下記のスクリプトのようになります。

この投稿の続きを読む »

タグ

2013年1月6日 | コメントは受け付けていません。 |

カテゴリー:UWSCとExcel

[ファイルを開く]からファイル名を取得する

[ファイルを開く]からファイル名を取得する


GetOpenFileName

[ファイルを開く]を表示して、選択されたファイル名を取得する

このメソッドは、ファイルを開くのではなく、選択されたファイルの名称を取得します

EXCEL = CREATEOLEOBJ("Excel.Application")
EXCEL.visible = True
PRINT EXCEL.GetOpenFileName

ファイルを開いたかを判定する

選択されなかった場合はFALSEの値を返すので、ファイルを開いたか、開いていないか判定しましょう。
下記のスクリプトのようになります。

この投稿の続きを読む »

タグ

2013年1月2日 | コメントは受け付けていません。 |

カテゴリー:UWSCとExcel

2013年あけましておめでとうございます

あけましておめでとうございます
皆様におかれましては益々ご健勝にてお過ごしのこと、お慶び申し上げます
2013年も、UWSCを用いた業務効率化を中心に
皆様の役に立つ情報をお届けできるよう精進させて頂きます

皆様からもご意見、ご要望などありましたら
ご気軽にお寄せ下さいませ
本年も変わらぬお付き合いのほどよろしくお願いいたします

UWSC コバヤシ式(canal22.org) 管理人一同

タグ

2013年1月1日 | コメントは受け付けていません。 |

カテゴリー:その他

このページの先頭へ