2015年5月31日日曜日

EXCEL+VBAで仕事を効率化〜ユーザー定義の書式でセルに入った値を***にする

  自分用の仕事効率ツールは、極力、手抜きコードがキホンになる。

  Handmade tools for daily work tend to be basically corner-cutting programs.

  社内Webシステムへログインするところも自動化する場合、自分で使うだけなら、USER-IDとパスワードはコードに書いてしまえば良いけど、チームのメンバが使えるようにするためには、USER-IDとパスワードをどこかのセルに設定しておくと簡単だ。
  そのとき、セルの書式をユーザー定義で、;;;(セミコロン3つ)にすると、セル上ではその値が見えなくなる。でも、メニューバーの値プロパティには表示されるんだけどね、チャンチャン。

 Imagine auto-pilot VBA scripts started from login onto internal web site.
 Even password is hidden by a fake method, user-divined-data-format ;;;(three semi-colon).

  このユーザー定義の書式を更に進化させて、;;;”*******”とすれば、*******と表示されて、パスワーソが見えない感じを演出できる。これをパスワードのところに使うと、フェイクな感じで、パスワードを目立たなくできる。でも、該当セルを選択(カーソルで)されているときには、左上の窓の「値プロパティ」で丸見えでござる。

ここで、ちょっと一息のコーナー。

 過日のおせっかいなオヤジがいる、栃木のビジネスホテルは、12回泊まると1回無料の宿泊券が貰えるという特典があった。いったい、どんな人がその特典をゲットできるのであろうか?月1回は栃木に用事があるビジネスマン、ビジネスウーマンは、何をされているのだろうか?そういえば、ワタシが宿泊したとき、無料の朝食がついていたのだが、ワタシのとは違う、おかずの朝食を食べる、常連らしい方々が何人かおられた。

2015年5月18日月曜日

IE+VBAで仕事を効率化〜WebシステムからテーブルをEXCELシートへGETする。表のゾンビ(怪奇現象)を取り除きつつ。

  IE+VBAで社内Webシステムからのデータ取得を自動化。といっても、例えば、ある番号(伝票番号)に対応する情報(現在の処理状況など)の表(テーブル)からEXCELのシートへデータをガサッと一気にGETするというスクリプトで、200ステップ(行)ぐらいで出来ている。ポイントとしては、htmiページのすべてのTABLEオブジェクトのタグを読み込んで、TH、TR、TDタグの内容をEXCELのセルへ単純に取り込んでいる(コピペ)だけ。

  I wrote an auto-pilot VBA scripts which generates an IE object then  gets data from the internal web system. The point is just to read all TABLE tag from the target html and extract TD tag then copy and paste into an EXCEL sheet.

bluegirl
 ところが、同じデータが何回も取れるというゾンビ(怪奇現象)に悩まされた。ホントに、綺麗に同じデータが何回(今回のページでは4回)取れてしまう!ページの作り方、つまり、htmlの書き方(ページ構造)に依存していると思われる。ページのhtmlソースを表示してみるとjavaで書かれており、多重(4重)に取れる原因は、皆目わからない。わからないときは、暫く、放置するのがよい。風を通す。たけど、諦めてはいけない。頭を切り替える。

At first I annoyed by zombis who generate the same tables quadruply.

  粘って考える。飯を食い、風呂に入る。寝る。起きる。食べる。また、少し、考える。

 Why? I think persistently. I ear and take a hot bath and sleep well. I eat again and think a bit.

   htmlを単純に頭から舐めて、出力しているだけなのに、データが4重に出るのは、元々のデータが4重になっているからじゃねーの?

 I reached the conclusion that original data is quadruple since what I did was just output all the tables in HTML from the beginning.

  インターネット検索を活用し、まず、辿り着いたのは、「TABLE の中にTABLEがある」せいじゃないのー。
  そこで、TABLE のタグの.innerhtmlにTABLEがないときだけ、出力するようにしてみた。具体的にはInStr関数を使用する。

TABLE in TABLE is the reason.

For Each objTBL in objIE.document.frames("fyour-page-frame").document,all.tags("TABLE")
   For Each objTableItem In objTBL.all
     If InStr(objTBL.innerhtml, "TABLE") = 0 then
     --- table output ----
     End if
 Next
 Next
 (説明)
  1. TABLEというタグを1つずつ、取り出す。
  2. TABLEのタグを1つずつ、取り出す。
  3. TABLEの中にTABLEがないときだけ、中身を取り出す。
   そしたら、綺麗に2回ずつになった。惜しい。2回もいらないのに。でも、もう一息じゃ。また、粘って考える。飯を食う。風呂に入る。歯を磨き、寝る。起きる。暫く、間を置いて、再び、考えてみる。諦めずに。

  謎の2重出力トラブルを抱え、2週間が過ぎた頃、改めて、伝家の宝刀「IEツールタブのF12表示」でhtmlソースをチェックしてみて、2重の原因は、TABLE タグとTBODYタグの両方があるせいかなぁと推測。そのどちらか一方のみ出力するようにしたところ、ピタっと2重に出ることはなくなった。チャンチャン。

If InStr(objTBL.innerhtml, "TABLE") = 0 And (objTableITEM.innerhtml, "TABLE") = 0 then  
 やったね。何事も石の上に3年。諦めたら、終わりだね。

   いつものちょっと一息のコーナーでござる。

  車のぶらり旅で、千葉から栃木、長野へと旅した。千葉と栃木では、泊まる宿やホテルでへチェックインすると、水のボトルをくれた。関東では、恒例なのかなぁ。それで、ニュージーランドをレンタカーで旅したときにモーターロッジに泊まるとミルクをくれたことを思い出した。「ブルーorイエロー」ときかれる。知らないとどっちも要らない感じだけど、実はノーマルなミルクか、低脂肪&カルシウム入りのミルクかということだった。
  たまたま、宿泊した栃木のビジネスホテルは、おせっかいなホテルであった。居酒屋での夕食を終え、早く風呂に入るべく、部屋のキーを受け取ろうとした時、フロントの白髪のオヤジさんが「もう、見ましたか?」と怪しげに割引チラシを手渡してきた。CNNが選んだ「世界の絶景」に日本で唯一選ばれた「足利フラワーパークの藤の花ライトアップ」を見ずに寝るのかというのである。「是非、行った方がいいよ」と勧められ、夜のピクニックへ出掛ける羽目になったのだった。
 というのも、ホテルのある足利市からフラワパークまでは、電車でひと駅だが、駅から徒歩12分もかかる。既に陽は落ち、ライトアップされた藤の花に出会うまでの田舎の街灯が少ない暗い夜道は、「夜のピクニック」と呼ぶのにふさわしい。暗闇の中、光に照らされた、巨大な藤の花は、見事としか言いようがなかった。確かに、1回は見た方がいい。おせっかいな白髪オヤジさん、ありがとう。とびきりの非日常を楽しむことができた。
  駅からの道すがら様々な言語、主にアジア圏の言葉が飛び交うのを聞き、さすがCNNが選んだところなのだなぁと納得した。







2015年4月25日土曜日

IE+VBAで仕事を効率化〜IEツールタブの「F12表示」はとても便利

driving girl2
  タダで使えるIE+VBAで社内Webシステムのデータをいちいち、画面移動しながら、コピペしていると非常に疲れ、嫌気がさすので、IE+VBAで自動採取している。そのVBAコードを作るときに、重宝しているのが、これもタダで使えるIEのツールタブにある、「F12表示(ツール)」だ。
  表示されているページのHTMLのソースコードがどのように書かれているかをみることができる。凄いのは、ソースコートを調べたい部分へマウスを持っていくとハイライト(ブルー色で)してくれるところだ。
  使い方は、慣れしかない、実に恐ろしいほど使いにくく、「なんじゃこれ」と思うが、いろいろ、試行錯誤すれば、使いこなせるようになる。

  ここで一息のコーナー。gimp2のパス(ツール)も凄い。つい、ハマッて、書いてみた。ラフ(下絵)をなぞりながら、修正できる。パスをブラシなどの一定の太さの線であっというまに描画してくれる。これに、最近マスターした、マスクレイヤーを駆使してみた。







drivinggirl

2015年4月18日土曜日

IE+VBAで仕事を効率化〜IE自動運転のデバッグ

  すでにIE+VBAでWebベースのシステムを自動巡回する方法を
仕事で覚えたEXCEL小技 BOOK〜 キモの関数、そしてIEを自在に操るVBA
に整理したが、どうやって、デ
drivinggirl
バッグしていたのかというと、これが実にローテクだ。

 What  I did  to debug my auto-pilot  WEb cruising VBA script was very low-technology.

  簡単に言えば、以下の3つだ。
・Debug.Printによる、こまめな状況確認
・ブレークポイントの設定と解除による、問題の再現
・ウォッチ式(の追加)による状況確認

 To put it simply, it is summarized in the following 3 steps.
- Frequent checking status by debug.print
- Reproducing the issue by breakpoint
- Confirmation by watch expression





  そして、とどめのツールが、IEのツールタブにあるF12表示というツールである。これが、凄く便利なのだが、使いヅライのである。

  ここで、一息のコーナー。Googleの地図ナビで、知らない街を歩いた。駅から目的の店を入れて、徒歩で出発。すると、細い道を通る、角を曲がる。幾度となく。どうやら、最短距離を選ぶようだ。実は、大通りを通れば、意外と簡単にいけるところであった。チャンちゃん。





2015年4月10日金曜日

仕事で使える(かもしれない)EXCELの小技シリーズ〜VLOOKUPの結果が0のときに空白へ戻す

highschoolgirl
  VLOOKUP関数の結果が(探し当てたセルが空白なので)0と出たときに、(もと通りに)
空白へ戻すには、&""を付ければ、OK。例えば、=VLOOKUP(D2,A2:B5,2,FALSE)&""


  ここで、ちょっと一息のコーナー。

  先日、ニュースで流れた、歌手つんくさんの大学の入学式でのメッセージ--これからもこんな私だから出来る事。こんな私にしか出来ない仕事をさせて頂こうと思っております」を聞き、彼ほどの逆境にはないが、はっとした。今の自分はどうだろうか。今の自分にしかできないことをやれているかと。そして、アップルを創ったスティーブ・ジョブスの「Stay crazy」という言葉を思い出した。こちらは大学の卒業式でのメッセージ--「他人の人生をいきるな!自分の信じたことを貫け」



 

2015年4月4日土曜日

仕事で覚えたEXCEL小技〜番外編 付箋紙

drugstoregirl
  仕事で覚えておかないといけないことをメモする。でも、紙のメモでは書いたこと自体を忘れたり、書いたもの(ノート)がすぐに出て来ないことが多い。特に、必要としているときほど、探せど探せど出て来ない。
  そこで便利なのは、パソコン(PC)のデスクトップにメモを貼付けられるフリーソフトの付箋紙。幾つかあるので、自分にあったものを選ぶ。とはいいながら、メモを「書く」と何だか、頭に残っていることが多いような気がする。そういうことで、紙のノートと付箋紙ソフトの両方で仕事の荒波を乗り越えている。

 ここで一息のコーナー。ネットでイラスト好きのつぶやきで、uniball Signo ゲルインクボールペン0.38が凄いというをみて、早速、近くのスーパーマーケットでゲット。細くて、滑らかに書けるよ。イイね。




 

2015年3月22日日曜日

仕事で使えるかもしれないMS Outlookの小技〜このメール、後でもう一度、出て来てね(スヌーズ、snooze)

flyinggirl
  仕事がとても忙しいにもかかわらず、つい、魔がさしてか、気分転換か、もしくは不安に駆られてか、新着メールをチェックしてしまったとき、あー、このメール、後でもう1回、出て来て欲しいなぁと思うことがある。

 そして、あなたが会社の方針でMS Outlookを使わされている(そういうことが日本では多いのですが)のであれば、そういうときには、目覚まし時計のスヌーズ(snooze)みたいに、後でもう1回、受信したかのようにすることができます。
 しかも、設定を変えるだけで・・。その方法は、ビューの設定で、メールに期限を設定し、アラームが上がってくるようにする、いわば、スヌーズ設定をするだけ。

詳しくは、以下のサイトで紹介(英語ですが、絵だけでもわかる)。

その1
http://kevinguyer.squarespace.com/blog/2013/3/11/outlook-fu-how-to-snooze-email-in-your-inbox.html

その2
http://www.msoutlook.info/question/796

 ただし、このスヌーズ設定をしたメールは、期限になるまで、メールフォルダからは見えなくなるので、注意が必要です。

 ま、単純にアラームを付けて、タスクのリストに入れてもよいのですが、それだと、タスクを見に行かないとわからない(期限つきでアラームを上げるようにしておけばいいのかもしれないが、チャンチャン)。

 ここで、一息のコーナーです。

 以前、初夏に世界遺産、島根の「石見銀山(いわみぎんざん)」に出掛けた。石と書いてイワ(岩)と読む。現地のボランティアガイド、曰く、「ここは見るべきものは何もないンですが、そこがいいところなんですよ」と。そのとおり、ただの山奥の洞窟だったけど、たどり着くまでの道端には彼岸花が咲き乱れ、自然が大切に残されていて、美しかった。