次の方法で共有


EXCEL2007 SP2 マクロが実行できません

質問

2018年5月15日火曜日 2:23

Excel2007(SP2)を、職場で使用しています。

Excelで、ファイルにマクロを組んであるものを職場の皆で使用しています。

そのファイルを私のパソコンで、編集すると私のパソコンでは、マクロが実行出来るのですが

他の人のパソコン(Excel2007 SP2)で実行するとマクロが実行出来ず、

開発→Visual Basic→ツール→参照設定→Microsoft Windows Comonn Control 6.0(SP6)

が、参照不可になっています

会社のシステム上、アップデートは、無効になっています。

どうすれば、私が編集したファイルを他の人のパソコンでマクロが実行出来るようになるでしょうか?

(職場で多数ファイルを利用していますので、私のパソコンの設定を変えなければなりません)

すべての返信 (6)

2018年5月17日木曜日 11:21 ✅回答済み | 1 票

上記で、trapemiya 様がおっしゃられている対応を実行します。
(上記で述べられているのは、他の方の ocx ファイルを上書きしないで、やってみた結果ですよね?)

「管理者として実行」でコマンドプロンプトを起動して、以下のコマンドを入力します。
※64ビットの場合は、C:\Windows\SysWow64\です。

1.古いファイルの登録を解除
regsvr32 -u C:\Windows\System32\MSCOMCTL.OCX

2.古い mscomctl.ocx ファイルを上書きする←すでにおこなわれていらっしゃるので、スキップ

3.新しいファイルの登録
regsvr32 C:\Windows\System32\MSCOMCTL.OCX

(追記)
過去にも同じ事例がありますね。
Visual Basic ランタイム Visual Basic OCXファイルのインストールについて
https://social.msdn.microsoft.com/Forums/ja-JP/9c62750a-3b14-4beb-b62e-4e133ba8fbf1/visual-basic-visual-basic-ocx?forum=vbgeneralja

ダメだった場合は、インストールメディアから、「修復」をおこなってみてください。

※というか、社内規定上、アップデートしてはいけないみたいですが、これらはしても大丈夫ですか?
(と、言っている場合ではないかもしれませんが)


2018年5月15日火曜日 4:18 | 1 票

何らかの原因で、Common コントロールの登録情報が不正になっているのかもしれません。
以下を参考にして再登録してみてはいかがでしょうか?

^Office 2007 以前のバージョンから Office 2010 へアップグレード インストールした場合、UserForm 上の Common コントロールを表示できない
https://support.microsoft.com/ja-jp/help/2266789

★良い回答には質問者は回答済みマークを、閲覧者は投票を!


2018年5月15日火曜日 4:25

> 会社のシステム上、アップデートは、無効になっています。
これつらいですね。
太郎 太郎様と職場の皆様のパソコン環境の違いについて、後者に当てはまりますか?

・MsComCtl.ocx のバージョンが違う?
エクセルの学校
『Microsoft Common Dialog Controlが参照不可の場合』(ヒロ
http://www.excel.studio-kazu.jp/kw/20041001110045.html
→ Microsoft Common Dialog Control のバージョンが不一致

32ビットOSの場合、C:\Windows\System32
64ビットOSの場合、C:\Windows\SysWOW64
にある、MsComCtl.ocx のプロパティからバージョンを確認してみる
※Windows XP の場合は、ComCtl32.ocx かな?
→バージョン違いの場合は、ダウンロードしてインストール
→→今回は会社的にこれはできない

・バージョンは同じだが、参照先パスが違う?
Excelで「はこのマシンでは利用できないため、オブジェクトを読み込めませんでした」が出た時の対処法
https://nagayasu-shinya.com/excel-error-mscomctl/
→ 参照先パスの違い
この場合は、直接参照するのではなく、動的参照して呼び出すように、vba プログラムを書き直します(インテリセンスに;るのは諦める)。

Dim comObj As Object
Set comObj = CreateObject("Xxx.xxx")
~
Set comObj = Nothing

2018年5月15日火曜日 13:45

有難う御座います

試してみましたが

改善しませんでした。

有難う御座いました


2018年5月17日木曜日 6:45

MSCOMCTL.OCXのバージョンを調べてみました。

私のパソコン          mscomtl.ocx ファイルバージョン 6.1.98.34 更新日時 2012/05/02

他の人達のパソコン MSCOMTL.OCX ファイルバージョン 6.1.97.82 更新日時 2004/03/09

私のものだけ、バージョンと更新日時が新しいものとなっています。大文字と小文字の違いもあります。

他の人のパソコンの   MSCOMTL.OCX をコピーして、私のパソコンに入れてみましたが、マクロを実行すると

「システムエラーです:&H80040111(-2147221231)ClassFactoryは要求されたクラスを提供できません」

というエラーメッセージが出ます。

バージョンの違いによるもののようです。

MSCOMTL.OCX ファイルバージョン 6.1.97.82 更新日時 2004/03/09 を

私のパソコンで使用できるようになる方法はないでしょうか?

申し訳御座いませんが、宜しくお願い申し上げます。


2018年5月18日金曜日 4:08

sutefu7様

1・2・3を行うと改善されました。

1の古いものの登録を解除という所ができていなかったようです。

本当に本当に有難う御座いました。