Excel2003 シートのコントロールが動かない

このQ&Aのポイント
  • Windows7、Excel2003で動作していたBookのシートにコマンドボタンを配置できないエラーが発生しています。
  • 同じPCにOffice2000/2003/2010がインストールされており、Excel2010で互換モードで実行すると正常に動作します。
  • vbaを多用したコントロールのないBookは、Excel2003でも正常に動作します。
回答を見る
  • ベストアンサー

Excel2003 シートのコントロールが動かない

Windows7、Excel2003です。 2月まで正常に動いていたBookのシートに貼り付けたコマンドボタンが押せません。また、新しくコントロールを配置できません。「オブジェクトを挿入できません」のエラーになる。 1.12月11日のKB更新でこの症状が出るということですが、それは関係ないようです。3月初めまでは動いていたし、念のため、.exdの削除と該当KBを削除しましたが症状は変わりません。 2.同じPCにOffice2000/2003/2010がインストールされています。このBookをExcel2010で互換モードで実行すると正常に動作します。 3.コントロールのないvba多用のBookは、このExcel2003でも正常に動きます。 4.別のPC、Windows8.1、Excel2013での互換モードでもこのBookは正常に動きます。 5.Excel2003でのこのBookのコントロールのオブジェクト指定が変です。たとえば、CommadButton1のプロパティで、CommadButton1がCommandButtonではなくWorkSheetになっています。 6.また、CommadButton1にかかわるvbaコードで、Sheet1などのオブジェクト定義がエラーになります。 2003はサポート外というのは別にして、 なにか正常に戻す情報でもあれば教えてください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

これが昨年12月のアップデートで行われ マイクロソフト セキュリティ情報 MS14-082 - 重要 Microsoft Office の脆弱性により、リモートでコードが実行される (3017349) Office2007 → KB2596927 Office2010 → KB2553154 Office2013 → KB2726958 バグがあったために http://blogs.technet.com/b/the_microsoft_excel_support_team_blog/archive/2015/03/11/forms-controls-stop-working-after-december-2014-updates-.aspx 3月の定例アップデートで修正が有りました。 ActiveX のコマンドボタンは、FM20.DLL を使用しています。 C:\Windows\SysWOW64\FM20.DLL C:\Windows\System32\FM20.DLL (Office2010環境の当方ではタイムスタンプ2015/0217) アップデートの際にサポート終了したモノも含めた複数バージョンでの使用は 考慮されていないようです。 Office2003以前は修正が適用されずにFM20.DLLを使用しようとしますから 屋根に上って梯子を外された状態でエラーになるのだと思います。 ※Office2003が単独でインストールされている状態のPCでは 問題のXLSファイルは問題なく開けると思います。 上記のフォルダを見てFM20(1).DLL などのようなファイルが無ければ アップデートを適用しつつ従来通りに使用することは、現時点では無理のような・・・ MS社がサポート終了したOffice向けにアップデートを公開することは無いでしょうし、 質問の状態向けの再再度の修正も望み薄かと思います。 なので、 3月のアップデートの取り消し後に12月のアップデートの取り消し EXDファイルを含むテンポラリフォルダ内のファイルの削除、 2013でXLSファイルを開いて上書き保存 で2003でも使用できるようになるかもしれませんが、当方では環境を作成できませんので未検証です。 OSから再セットアップ・・・の最悪の可能性も視野に! めでたく、使用できるようになったら アップデートは手動にして、今回の問題を引き起こしたモノを適用しないように注意する必要があります。 あるいは仮想環境を作成し2003以前はそこで使用するか・・・だと思います。 以上、ご参考までに。

okormazd
質問者

お礼

平日は長時間自動で使用しているため、思うようにいじれないのです。3月の更新を一部破棄したり、2003を再インストールしてみましたが、ダメでした。3月11日更新はまだ残っているので暇を見つけてやってみようと思います。必要なものは2010で動かしているので、支障はないですが。

okormazd
質問者

補足

NotFound404 さん、貴重な情報ありがとうございます。 現在、このPCは、稼働中のため操作できませんが、「3月のアップデートの取り消し後に12月のアップデートの取り消し・・・」以下を週末にでもやってみたいと思っています。ただ、それとは別にやはり2003はサポート対象外なので、これで動かしているファイルは2013への移行作業を至急すすめたいと思います。

その他の回答 (1)

noname#206655
noname#206655
回答No.1

私の経験ではマクロのセキュリティーを最高にしたらコマンドボタンも押せなくなったことがあります。

関連するQ&A

  • excel2003「オブジェクトが挿入できません」

    vista-sp2です。 excel2000,2003,2007を共存させています。 WindowsUpdateは常に最新の更新をしています。 最近気が付いたのですが、excel2003で、コマンドボタン等のコントロールを挿入できません。「オブジェクトを挿入できません」というエラーメッセージです。コントロールを配置した既作成のブックも、2003では機能しません(クリックするも反応なし)。しかし2000や2007では可能です。 ネット検索したところ、最近のWindowsUpdateが問題の根源で、Microsoftからはexcel2007,2010,2013については全ての「Msforms.exd」を削除すれば改善できるとありました。 しかし、私の場合、上記のごとく2000や2007では問題は発生していません。 さらに念のため全てのMsforms.exdを削除したり、コンパネからexcel2003を修復したりもしてみましたが改善されません。 excel2003はもはやサポート対象外ですが、何か本件問題についてのexcel2003に対する特効薬はあるでしょうか。

  • Excel2000以上でのListViewについて

    最初にExcel2000上で作成したファイルを、 Excel2007互換モード上で、ListViewコントロールを追加 (以下URL内容を参照しながら追加しました。 http://officetanaka.net/excel/vba/listview/01.htm) して、 その後、Excel2007互換モード上では、 正常に動いています。 しかし、 そのExcelファイルを、 別のパソコン内のExcel2000上で、 動かすと、   ↓ 「はこのマシンで利用できないため、 オブジェクト を読み込めませんでした。」 (Microsoft forms)(ビックリマーク アイコン)([OK]ボタンのみ) エラーが表示されました。 その後、 その別のパソコン内のExcel2000に対しても、 上記と同じURL内容を参照しながら、 ListViewコントロールを追加してみましたが、 上記のエラーが解消されません。 どうすれば、このエラーを解消できるのでしょうか? 以上になります。 よろしくお願いします。

  • VBAで別のExcelブックのボタンのマクロ登録

    Excelブック1とExcelブック2があります。 Excelブック1はVBAで 1)Excelブック2を開いて 2)Excelブック1のワークシート(Sheet1)と  モジュールシート(Module1)を  Excelブック2にコピーします。 3)ワークシート(Sheet1)にはコントロール(ボタン)が貼り付けてあって  このボタンをクリックするとモジュールシート(Module1)の中の  Excute_Button()というプロシージャ(マクロ)を呼び出すため  Excelブック1のVBAで  wb.Worksheets("Sheet1").Shapes.Range(Array("Button 1")).Select  Selection.OnAction = "Excute_Button"  と記述してボタンのマクロの登録をします。   (wbはExcelブック2を指しています) 4)Excelブック2を保存して閉じる。 という処理をしています。 この後、Excelブック1を閉じて、 Excelブック2を開いてワークシート(Sheet1)のボタンをクリックすると Excelブック1が開いてしまいます。 Excelブック2のボタンのマクロの登録のマクロ名を見てみると Excelブック1のファイル名!Excute_Button となっています。 Excelブック1のVBAで、ここを単にExcute_Buttonだけにするには どのようにすればよいでしょうか。

  • excel2007 新規ブック作成時のvba処理

    excel2007にてVBA処理を行っています。 vbaにて 新規ワークブックを作成 最初に開いているワークブックのシートを、新規ワークブックへコピー この作業を行っているのですが、実行時に --- 移動先またはコピー先のブックの行列数が元のブックの行列数よりも少ないため、シートを移動先またはコピー先のブックに挿入できません。データを別のブックに移動またはコピーするには、データを選択して、[コピー] コマンドと [貼り付け] コマンドを使用して移動先またはコピー先のブックのシートに挿入してください。 --- このエラーが表示されます。 保存拡張子も「.xls」から「.xlsx」へ変更するも、互換モードの表示が外れません。 さらに原因を探ると、現在使っているPCのエクセルにて エクセルオプション→保存→ファイルの保存形式 この設定が「excel ブック」ではなく、「excel 97-2003ブック」のため、 新規ワークブック作成時に互換モードでファイルが作成されてしまうことで、2003と2007の行列数の違いからエラーになるようです。 確認のため、ファイル保存形式を2007仕様にすると、問題なく実行されました。 新旧のPCが混在するため、できたらファイル保存形式を97-2003モードで保持したまま、vbaでの新規ワークブックの作成は互換モードを外した状態で行いたいのですが、背景の色など、2007での特色があるため、2003形式には戻したくないのが心情です。 解決する方法はありますでしょうか?よろしくお願いします。

  • Excel2007マクロでメモリが増加し続ける

    Excel2007でVBAでマクロを組み込んだところ、 クリックイベントが走る度に、仮想メモリが増加し続けるようになってしまいました。 シート上にActiveXコントロールを配置し、 ActiveXコントロールのクリックイベントプロシージャに VBAでマクロを組み込んでいます。 内部で使っているオブジェクトは、 きちんとNothingで解放しています。 マクロを組み込むと必ず発生する現象ではなく、 シート上に配置しているコントロールの数、 ブックのシート数、 モジュールの数、ステップ数、 イベントプロシージャの処理ステップ数、 などのオブジェクトの量が多くなると、 仮想メモリが増加し続けるという現象が起きるようです。 オブジェクトの数、サイズによっては、 1クリックで50Mくらいずつ増加することもあり、 すぐにメモリリークしてしまいます。 XP+Excel2007の環境でのみ発生します。 Vistaでは発生しません。 SPはそれぞれ、XP SP2、Excel 2007 SP1です。 なぜ、このような現象がおきるのでしょうか?

  • 複数のEXCELシートの印刷順の指定

    EXCEL97の一つのブックに200程度のワークシートがあります。ワークシート名はそれぞれ1~200までの数値になっており、ランダムに並んでいます。シート名の降順で印刷をおこなうEXCEL VBAのコードを教えてください。

  • Access VBAからExcelシートの削除

    お世話になります。 Access VBA から指定したExcelシートの削除を行うプログラムを下記の通りに記載しています。 Set oApp = CreateObject("Excel.Application") oApp.Workbooks.Open FileName:="エクセル.xls" oApp.DisplayAlerts = False oApp.Sheets("シート名1").Delete oApp.DisplayAlerts = True この場合において、"シート名1"が存在していれば問題なく処理されますが、 このシートが存在していなければエラーが起きます。 指定したExcelブックにこのシートが存在するかどうかのチェックを事前に行い、 存在する場合のみ削除処理を行うにはどうすればよいでしょうか? よろしくお願いします。 環境は、Access2007です。

  • Excel2007でBOOK間のシート移動をVBAで行うとエラーになる

    Excel VBAで開発されたソフトの改造を行ってますが、Excel2007で動作しないマクロがあり困ってます。 <開発環境> ・WindowsXP Pro SP3 ・Celeron 540(1.8GHz) ・メモリ1GB ・Excel2007 SP1 (Microsoft Office2007) 改造元ソフトはOffice2000で開発されており、Excel2007で動作するとマクロエラーが発生する処理があります。 因みにまだソフト改造はしてなく、そのままExcel2007で動作させるだけでマクロエラーが発生します。 発生する箇所はVBAで開発されており、下記のコマンドです。 Sheets(移動元シート名).Move Before:=Application.Workbooks(移動先ブック名).Sheets(1) 異常の内容は下記になります。 ------------------------------- ?err.Description 移動先またはコピー先のブックの行列数が元のブックの行列数よりも少ないため、シートを移動先またはコピー先のブックに挿入できません。データを別のブックに移動またはコピーするには、データを選択して、[コピー] コマンドと [貼り付け] コマンドを使用して移動先またはコピー先のブックのシートに挿入してください。 ?err.Number 1004 ------------------------------- 移動元BOOKは1シート、移動先BOOKは1シートあります。 これをExcel2000で実行すると正常にシートが移動できます。 (移動元BOOKのシートがなくなりBOOKが終了して、移動先BOOKは2シートになります) Excel画面の移動元シートを選択して、右クリックメニューの「移動またはコピー」で移動先ブックを指定して移動すると 「移動先またはコピー先のブックの行列数が元のブックの行列数よりも少ないため、シートを移動先またはコピー先のブックに挿入できません。データを別のブックに移動またはコピーするには、データを選択して、[コピー] コマンドと [貼り付け] コマンドを使用して移動先またはコピー先のブックのシートに挿入してください。」 とVBAから実行した時と同じ内容のエラーダイアログが表示されました。 (Excel2000では手動でも移動できました) Excel2007では1シートで構成されたBOOK間の移動はできないのでしょうか? また、これをVBAで対策しようとした場合にどうしたら良いのでしょうか? ネットで調べましたが判らず、ここで質問させて頂きました。 判りにくい説明で申し訳ありませんが、よろしくお願いします。

  • Excel2000のbookとExcel97のbookとの互換性は?

    Excel2000のbookとExcel97のbookとは、互換性があるのでしょうか? 友からの質問です。私のExcelは2002ですので、わかりません。よろしくおねがいします。

  • Excel2000でVBAを使ったシートを開けないのですが

    Win98+Excel2000で作成したシートをWin98SE+Excel2000(SR1)で開けません 次のクラスは登録されていません。次のCLSIDオブジェクトを参照してください。 :{AC9F2F90-E877-11CE-9F68-00AA00574A4F} という赤バッテンが出ます。 すごく初歩的な事ですが、Excel内のVBAは、VBをインストールしないと使えないのでしょうか?(コンパイルはしました)。 逆にVBをインストールしているPCで作成したシートはVBをインストールしていないPCで開けないのでしょうか? McAfeeやNortonは関係ないですよね... よろしくお願いします。

専門家に質問してみよう