2017年12月22日金曜日

EXCEL+VBAでIEを自在に操る、IE捕捉とページ解析

mugi-chan
mugi-chan powered by gimp on gentoo
社内システムをIEで巡回しつつ、日常業務をこなす際、ワンパターンな操作はEXCEL VBAにやって貰うと、ラクチンである。
そんなときに、とても簡単なのは、社内システムにログオンした後のIEを捕まえて、意のままに操作する、というアプローチだ。ま、たんにログイン処理のセキュリティ突破が大変なので、回避するのが早道というだけだ。
まずは、起動中のIEを捕まえるコードは、以下のとおり。

Sub GETIEpage()
  Dim objWindow,objShell,objIE,e,s As Object
  Set objShell  = CreateObject("Shell.Application")
  For each objWindow In objShell.Windows
     If TypeName(objWindows.document) = "HTMLDocument" Then
         Set objIE = objWindows
         Debug.print objIE.document.Title
         If objIE.document.Title = "攻略ターゲットの画面名" Then
            Exit For
         End  If
     End If
  Next
End Sub
次に、目的のページで「検索ワード」を入れたり、「検索実行ボタン」をクリックする訳だが、このためには、ターゲットのページを解析する必要がある。それを可能にするのは、IE の開発者向けF12キーの活用である。IEのツールタブにある「F12キー」を押下すると、ブラウザの画面の下半分に以下のデバッグ画面が登場する。
IE-F12 KEY Screen
F12キーにより、攻略ターゲットの画面のINPUTタグ(検索キーワードや検索ボタンなどはINPUTタグで記述されている)の名前(name)を見つけたら、あとは、例えば、以下のコードみたいに、検索ワードを設定し、検索実行ボタンをクリックさせれば、あっという間にIEを自在にあやつるコードの完成だ。探している部分がハイライトされるように「□に矢印」マークを有効にしておくのがミソだ。そして、GetElementsByTagName関数にINPUTを指定すると、INPUTタグが上から順番に見つかるので、F12キーでみつけた名前になったら、クリック(e.Click)すればよい訳だ。簡単でしょ。このGetElementsByTagName関数をFor Eachで回し、特定のワードでオブジェクトを見つけて.Clickする必勝ループをぜひ、モノまねしてくださいね
For Each e In objIE.document.GetElementsByTagName("INPUT")
   Debug.Print e.Name
   If e.Name = "Searchbutton" Then Set s = e  /* keep s the click button object */
   If e.Name = "SearchWord" Then
      e.Value = "じゃがじゃが" 
      s.Click
   End If
Next
ここまでのコードを作り込むのに、使ったのは、「ブレークポイントの設定」と、「Debug.print」、「ウォッチ式による確認」という、 EXCEL VBAにおけるデバッグの唯一無二の三点セットだ。

さて、ここで、ちょっと一息のコーナーだ。
いつかの朝日新聞web版の「心にガンジー、動きは古武術・・・」での言葉が、とても響いた。
- 明日、死ぬかのように生きよ。永遠に生きるかのように、学べ。Live as if you were to die tomorrow, learn as if you were to live forever.  ・・マハトマ・ガンジー
-与えられる ものは有限。求めるものは無限。Given is limited,seeking is infinite
 「与えられたことで満足するのではなく自分で求めていく」。・・・小平 奈緒

 人生は短い。自分がやりたいように生きたい。地味に、工夫しながら、着実に。



2017年12月10日日曜日

gentoo OpenRC xfce4 shutdownボタンを有効にする

gentoo OpenRC xfce4 shutdownボタンを有効にするためにはdbus,ConsoleKitパッケージを入れる。
emerge --ask dbus
emerge --ask consolekit
rc-update add dbus default
恩田陸の「蜜蜂と遠雷」では、トタン屋根を叩く雨音の描写が妙に印象に残っている。

2017年12月4日月曜日

gentoo snippets

- PostgreSQL useful commands
-- /etc/init.d/postgresql-9.6 start
-- psql -U postgres -ddb1
-- SELECT bunrui,SUM(tanka1) AS uriage,SUM(tanka2) AS shiire FROM table1 GROUP BY bunrui ORDER BY uriage DESC ;
--  \q
-- etc/init.d/postgresql-9.6 stop
- Kernel  reconfiguration commands
-- cd /usr/src/linux
--  make && make modules_install
-- make install
- install package
--  etc-update
-  rc-update add dbus default