2015年1月10日土曜日

IE+VBAで仕事を効率化〜IE自動運転の突然の不具合[フレーム(frame)へのアクセス拒否]の原因はWindowsパッチの自動更新 if IE+VBA failed to access(Access Denied) to a frame

smaphogirl
green-girl




  この記事にある、トラブルの原因となったパッチはそのあと、しばらくして消滅し、不具合もいつの間に密かに修正されたのであるが、Windows patchが悪さをすることが、日常茶飯事である。そのことに警鐘を鳴らすためにこのエピソードを消さずに残しておく。

 2014年の年末、それまで調子良く、社内Webシステムからデータを吸い上げてくれていた、VBAによるIE自動運転スクリプトが突然、「フレーム(frame)へのアクセス拒否」のエラーで動かなくなってしまった。このままでは、ここ1年、半泣き顔で我慢と忍耐でひとつひとつ積み上げてきたプログラムがゴミになってしまう。いまだかつてない危機を迎えた。
 
 At the end of 2014 my IE+VBA auto-pilot intranet cursing scripts were not working due to ”Access Denied (error) to a frame”.  If this goes on, All my scripts made by half-crying patience and persistence for past a year will end up in the garbage. I faced the greatest challenge I had never experience.

 始めは、社内Webシステムの連中がセキュリティを強化してきたのかと思い、「なんとか突破してみせるぞ」とエラーを回避する方法を探し試行錯誤するも、うまくいかず、途方に暮れた。最後に、藁をもつかむ気持ちで、隣の席の「VBAの師匠」に教えを乞う。

 First I thought that the intranet team strengthened system's security. I tried to break through the barrier but I couldn't.
Finally I asked my VBA master.


 すると、ほどなく、師匠は「あなたの敵は社内のWebサイトチームではなく、マイクロソフトですよ、KB3025390のWindowsパッチを外せば、OKですよ」と教えてくれた。
 言われたとおりにパッチを外すと、見事に昔のように動いてくれた。さすが、師匠!やっぱ、自分とはレベルが違うなぁ。

 Quite quickly my master told me " Your enemy is Microsoft , not our intranet team.  Remove KB3025390 of Windows Patch!"
 After removal of the patch as told, my script went well as before. That's just what you'd expect from him.

それにしても、敵は海の向こう、米国シアトルのマイクロソフトで、何の断りもなく、適用された、レベルダウンしたWindowsパッチが悪さをしていたのだ。
 とりわけ、腹が立つのは、通常のシャットダウンではこのダメなパッチが再び、ゾンビのように自動適用されてしまうことですね。

 Anyway my enemy is Microsoft in Seattle, USA and its level-down patch  did nasty to me.
What makes me mad most is that the patch is reinstalled automatically for  normal shutdown like zombi.

 とりあえず、Windows終了は、デスクトップ画面で左クリックし、ALT+F4でシャットダウンすることで、パッチの自動適用を回避している。

Remove the KB3025390 of Windows's patch(update) if you found that your IE-auto-pilotting scripts by VBA stopped for "frame access error" or IE+VBA failed to access a frame.

  後日、特定のWindowsパッチ(Windows updates)を適用されないようにするためには、コントロールパネルの延長で出てくる、利用可能な更新プログラムの一覧で、今後表示しない更新プログラムを右クリックし、[更新プログラムの非表示] をクリックすればよいとわかった。楽チンだね。




0 件のコメント:

コメントを投稿