Office関連

KB2553154の更新プログラムをアンインストールするVBScript

2014/12/11 追記:
当記事で紹介しているのは更新プログラムをアンインストールするスクリプトです。
下でも書いていますが、「更新プログラムを消すのはちょっと・・・」という方は、下記Webページの方法をご参照ください。

・山市良のえぬなんとかわーるど: 2014 年 12 月の Office の更新後に VBA が使えなくなったら…
http://yamanxworld.blogspot.jp/2014/12/2014-12-office-vba.html

2014/12/12 追記:
今回の問題は国外でも話題になっているようで、対応策としては主に、この記事でも紹介されているexdファイルの削除が紹介されているようです。

ただ、「本日実施した Windows Update 後から Excel 2010 の VBA が動作しなくなった – マイクロソフト コミュニティ」の投稿者の中には、“MSForms.exdファイルの削除だけでは治らず、Office Onlineからインストールしなおしたら治った(クイック実行版)”という方もいるようなので、環境によってはOfficeの再インストールが必要になるのかもしれません。

いずれにせよ、これだけの規模の問題となると、MicrosoftからFix itなり、公式の対応策なりが公開されるだろうと思います。
一刻も早く問題を解決したい!」という場合でなければ、Microsoftの情報を待つのも有りでしょう。

2014/12/15 追記:
Microsoftのサポートサイトで当問題への解決方法が公開されました。

・ActiveX カスタム Office ソリューションで MS14 082 セキュリティ更新プログラムをインストールした後、「オブジェクトを挿入できません」エラー
http://support2.microsoft.com/kb/3025036/ja

機械翻訳なので分かりづらいところもありますが、要するにHDD内にある MSForms.exd ファイルを検索してすべて削除する、ということのようです。

2014/12/12 追記:
Fix itの中身が気になったので調べてみました。

・「2014年12月のWindows Update以降コマンドボタンが使えなくなった」トラブルへのFix it
//www.ka-net.org/blog/?p=5251


2014年12月の定例Windows Update以降、「ExcelでActiveX コントロールのボタンが押せなくなった。」「ActiveX コントロールのボタンを挿入しようとするとエラーが発生するようになった。」といったトラブルが発生しているようです。

・本日実施した Windows Update 後から Excel 2010 の VBA が動作しなくなった
http://answers.microsoft.com/thread/5886d5cb-2449-46e9-a396-2e8142784b5e
・office 2007 suites (KB2596927)のセキュリティ更新プログラムをインストールすると、ActiveXコントロールのコマンドボタンが押せなくなった。
http://answers.microsoft.com/thread/2d66db87-3c93-43be-937d-bb00e0d911b7
・OfficeのUPDATEでExcel2010のボタンが押せなくなった
http://answers.microsoft.com/thread/0c5bbfc2-3594-49d1-bc1c-5e1a3d28b414

手元の環境(Windows 7 + Office 2010(32ビット版))で確認してみると、たしかにActiveX コントロールのボタンをクリックすることができず、ActiveX コントロールを挿入しようとすると「オブジェクトを挿入できません。」といったエラーが発生して、コントロールを挿入することができません。

Uninstall_KB2553154_01

Uninstall_KB2553154_02

Uninstall_KB2553154_03

Uninstall_KB2553154_04

原因はセキュリティ更新プログラム「マイクロソフト セキュリティ情報 MS14-082 – 重要」のようで、それぞれのOfficeのバージョンに合ったKB番号の更新プログラムを、PCからアンインストールすれば解決します。

  1. Office 2007:KB2596927
  2. Office 2010:KB2553154
  3. Office 2013:KB2726958

手順としては、

  1. 管理者権限でコントロール パネルを開きます。
  2. プログラムと機能」を開きます。
  3. プログラムと機能画面左側にある「インストールされた更新プログラムを表示」をクリックします。
  4. 上記KB番号のプログラム(Office 2010の場合は「KB2553154」)を探し、右クリックメニュー(あるいはアンインストールボタン)から「アンインストール」を実行します。
  5. Uninstall_KB2553154_05

上記のようになるのですが、この手順をいちいち手作業で行うのは面倒なので、コマンドで実行することにしました。

KB番号を指定して、特定の更新プログラムをアンインストールする場合、「Windows の Windows Update スタンドアロン インストーラーについて」にあるように、wusa.exeに「/uninstall」オプションを付けて実行すれば良いので、今回も、

wusa.exe /uninstall /kb:2553154 /norestart

としたのですが、コマンドを実行しても「このコンピューターには、更新プログラム KB2553154 がインストールされていません。」といったメッセージが表示され、アンインストールすることができませんでした。

Uninstall_KB2553154_06

仕方がないので、「アプリケーションの追加と削除の一覧からプログラムを手動で削除する方法」にある通り、アプリケーションのアンインストールに使用されるプログラムを、レジストリにある「UninstallString」から取得することにしました。

Uninstall_KB2553154_07

私の環境で取得した値が下記になります。

"C:\Program Files\Common Files\Microsoft Shared\OFFICE14\Oarpmany.exe" /removereleaseinpatch "{90140000-0012-0000-0000-0000000FF1CE}" "{D0D69BA5-4BD9-439E-804F-07DC80CF5408}" "1041" "0"

早速管理者権限でこのコマンドを実行してみると、下図の通り問題無くアンインストールすることができました。

Uninstall_KB2553154_08

Uninstall_KB2553154_09

Uninstall_KB2553154_10

更新プログラムKB2553154をアンインストールした後、実行できなかったマクロを再度実行してみると、今度は問題なくマクロを動かすことができました。

Uninstall_KB2553154_11

これで、問題のある更新プログラムのアンインストール手順が確認できたので、過去に作成したマクロ「JavaのGUIDを取得するVBAマクロ」を流用したスクリプトをざっくり書いてみました。

'****************************************************
' 指定したKB番号の[UninstallString]をレジストリから
' 取得・実行するスクリプト(64ビット環境では動作未確認)
' 
' ※ 要管理者権限
'
' Author    : kinuasa
' Date      : 2014/12/11
'****************************************************

Option Explicit

Dim cmd
Const vbNormalFocus = 1
Const KBNo = "KB2553154" 'KB番号

cmd = "" '初期化
cmd = GetUninstallString(KBNo)
If Len(Trim(cmd)) > 0 Then
  'WScript.Echo cmd '確認用
  CreateObject("WScript.Shell").Run cmd, vbNormalFocus, False
Else
  WScript.Echo "指定したKB番号[" & KBNo & "]の[UninstallString]を取得できませんでした。"
End If

Public Function GetUninstallString(ByVal KBNo)
'指定したKB番号の[UninstallString]をレジストリから取得
  Dim ret
  Dim reg
  Dim names
  Dim display_name
  Dim uninstall_string
  Dim i
  
  Const HKEY_LOCAL_MACHINE = &H80000002
  Const SubKeyName = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
  
  ret = "" '初期化
  Set reg = CreateObject("WbemScripting.SWbemLocator") _
            .ConnectServer(, "root\default") _
            .Get("StdRegProv")
  reg.EnumKey HKEY_LOCAL_MACHINE, SubKeyName, names
  If Not IsNull(names) Then
    On Error Resume Next
    For i = LBound(names) To UBound(names)
      display_name = ""
      reg.GetStringValue HKEY_LOCAL_MACHINE, _
                         SubKeyName & ChrW(92) & names(i), _
                         "DisplayName", _
                         display_name
      '[DisplayName]にKB番号が含まれているか判別
      If InStr(LCase(display_name), LCase(KBNo)) Then
        uninstall_string = ""
        reg.GetStringValue HKEY_LOCAL_MACHINE, _
                           SubKeyName & ChrW(92) & names(i) & ChrW(92), _
                           "UninstallString", _
                           uninstall_string
        ret = uninstall_string
        Exit For
      End If
    Next
    On Error GoTo 0
  End If
  GetUninstallString = ret
End Function

冗長なコードになってしまいましたが、とりあえずはこれでアンインストール作業を楽に進めることができます。

なお、上記コードは、更新プログラムのアンインストールを行う = システムへの影響を伴うスクリプトとなっていますので、自己責任で実行してくださいますよう、よろしくお願いいたします。

ちなみに、更新プログラムをアンインストールしなくても解決できる方法がすでに公開されていますので、そちらも是非ご参照ください。

・山市良のえぬなんとかわーるど: 2014 年 12 月の Office の更新後に VBA が使えなくなったら…
http://yamanxworld.blogspot.jp/2014/12/2014-12-office-vba.html

[VBA]CommandBars(“○○”).Controls.Addでメニューを追加できなくなった。前のページ

Outlookの連絡先をvcf形式で一括保存する方法次のページ

関連記事

  1. Office アドイン

    [Office用アプリ]TechEd North America 2013のセッション資料

    アメリカ・ニューオリンズで現地時間6月3日から6日にかけて開催された開…

  2. Office関連

    Officeのヘルプを単独で開く。

    Officeアプリケーションのヘルプが見たいとき、いちいちアプリケーシ…

  3. Office関連

    Excel REST APIをVBAから呼び出す方法

    「Microsoft GraphをVBAから呼び出してOneNoteの…

  4. Office関連

    Yahoo!翻訳で文字列を翻訳するマクロ

    「Google翻訳で文字列を翻訳するマクロ」ではGoogle翻訳を利用…

  5. Office関連

    Custom UI Editorの最新版がGitHubで公開されました。

    下記記事等で紹介している、リボンUIをカスタマイズするためのツール「C…

  6. Office関連

    Office 2010のオブジェクトリスト

    オブジェクト ブラウザーから取得できる、各Office 2010アプリ…

コメント

  1. この更新プログラムの削除は、非常に便利でした。
    32bitはこれでOKでしたが、64bitは以下のパスで動作しました。

    64bit
    SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall

    KB3085604
    KB3085522
    KB3055041

    上記3つの更新プログラムが、Outlook2010の複数添付ファイルの場合
    悪さをするので困ったもんですね。

    http://blogs.technet.com/b/outlooksupportjp/archive/2015/09/01/outlook-2010.aspx

    このプログラムで簡単に削除できました。
    ありがとうございました。

  1. この記事へのトラックバックはありません。

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP