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関連

    ルビ(ふりがな)を一括設定するWordマクロ

    2016/10/28 追記:改良版のマクロを書きました。…

  2. Office関連

    Visio Onlineの機能をJavaScriptで拡張する方法

    @mokudaiさんからのバトンを引き継ぎまして、「Office 36…

  3. Office関連

    「Excel VBAでIEを思いのままに操作できるプログラミング術」の見本誌をいただきました。

    「VBAアクションゲーム?Excel(エクセル)で動かそう!」で有名な…

  4. Office関連

    RSSの日付を変換するVBAマクロ

    RSSから取得した日付(「Wed, 20 Dec 2017 00:02…

  5. アイコン一覧

    Office 365アイコン(imageMso)一覧(R)

    Office 365のデスクトップ版Officeアプリケーション(Wo…

  6. Office アドイン

    Excel向けPower BI カスタム ビジュアル機能の紹介

    Power BI ブログの記事「Excel announces new…

コメント

  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