
Excel VBAを使っていて
ListviewなどのMSCOMCTL.OCXに依存した
コントロールを使っている場合
MSCOMCTL.OCXに上位互換性がないため、
VBAを含むxlsmファイルを作成したPCとは異なるPCで
そのプログラムを使用するためには
使うPCごとにMSCOMCTL.OCXをアップデートする必要があります。
http://detail.chiebukuro.yahoo.co.jp/qa/question …
詳細はこのページに書かれてあります。
疑問は、いま、自分が使っているMSCOMCTL.OCXのバージョンが2012年のものなのですが
Windows10にアップグレードするなどした場合に
MSCOMCTL.OCXをアップグレードする必要がありますが
VBAは正常に動作するのでしょうか?
MSCOMCTL.OCXには下位互換性があるのでしょうか?
もし動作しないとして、
一つずつListviewを削除して新規作成するという作業を行う必要があるのでしょうか?
自動更新できる方法があれば教えてください。
No.5ベストアンサー
- 回答日時:
>Win10 PCで作成したVBAをWin7 PCにコピーして使用するためには、
>「~7.0(SP6)(仮称)」にチェックを入れる必要があるはずです。
その場合にはWin7PCではMicrosoft ListView Control 6.0(SP4)にチェックを入れなおせば
まず問題ないはずです。
ちなみに当方のWin7 Office2010 のMicrosoft ListView Controlの実体ファイルの
製品バージョンは6.01.9839
Win10 Office2016(プレビュー版)のmscomctl.ocxのバージョンも同一でした。
単純なテストですが、2016 → 2010 では問題なかったです
VBAはよく言えば枯れた状態ですので大々的なアップデートは無いでしょう。
あったとしたらMicrosoft ActiveX Data Object x.x Libraryと同様
Microsoft ListView Control 6.0・・・
Microsoft ListView Control 7.0・・・
のように複数バージョンが並行して登録されるとおもいます。
>オフィスを常にアップデートして最新の状態にしておく必要があるということでしょうか?
大多数の人は更新プログラムを自動的にインストールする設定にしたままだと思います。
最新にというかリビジョンを合わせた方がつまらないトラブルにならないと思います。
ただ、近年のアップデートは地雷が多すぎて何とも言えなくなりました。。。
No.4
- 回答日時:
こんにちは。
Office 2003の時はMSのサポートに出ていましたから、VB6ランタイムはあることは知っていましたが、それ以降も、調べてみたら、バージョンアップしたものがあるようなのですね。ただ、なんだかんだで、わざわざVB6 Runtime をインストールしていました。
それにまつわる話ですが、ListView とかCommonDialog とかいうのなら、VB6 Runtime のことではないでしょうか。個別のコントロールそのものよりも、そのRuntime が、OSをカバーしているか、もしくはセキュリティーを通過するかどうかだと思うのです。
それから、知恵袋のやり取りは変です。MSCOMCTL.OCXの下位のバージョンについては、バージョンが違えば動かないのは当然だと思うのですが、リビジョンとバージョンの話が混同しているようで、リビジョンが違ったら動かないという印象に受け取れますが、そんなことはないはずです。それに、Excel 2003の話です。何か別のトラブルのようです。
それと、今回の話は、以下のような話のことではあるわけです。
http://blog2.k05.biz/2015/06/windows10vb6.html
》Windows 10 Insider Preview版で確認したので、製品版では問題がなくなってるのかもしれません
そこには、動かなくなった場合に対処すればよいだけだと思っています。
>mscomctl.ocxのバージョンを更新しないとWin7 PCには
>「~7.0(SP6)(仮称)」が存在しないのではないでしょうか?
Dao 3.5では、確かに以前から混乱はあったように聞きますが、VB6 Runtime でトラブルがあれば、ダウンロードするしかないと思います。たぶん、そんな問題はないはずですが。
少なくとも、Microsoft ListView Control 6.0 が、7.0になることはありえないにしても、仮にそうだとしたら、そのままではエラーが出て、参照設定を替えるのではなくて、コントロールそのものをすげ替えないといけないでしょうね。そんなことは、考えたくもありませんし、あくまでも仮の話です。
>オフィスを常にアップデートして最新の状態にしておく必要があるということでしょうか?
これはオフィスの話ではなくて、VB6 Runtimeの話です。
http://www.vector.co.jp/soft/win95/util/se123554 …
中身を確認してみないと何とも言えませんが、Win10 には対応しているようですね。
「VB6ランタイムはWindows 10でもサポートされる 」
http://developers.srad.jp/story/15/07/06/0917202/
ただ、私は、まず、現行のランタイムがWin10で動くかどうかをチェックした方がよいと思うのです。現行で動くなら、わざわざ先走る必要などはないと思っています。
それと、ActiveX コントロールは、結果的には参照設定がつきますが、参照設定ではなく、実際に、ツール側で、ActiveXコントロールを呼び出して、使ってみるまで、エラーが発生するかどうかを、動作検証するしか方法はないと思います。
私の経験も含めて、
http://oshiete.goo.ne.jp/qa/8458426.html
にあるように、「サブジェクトは指定された動作に対して信頼されていません」ということもあります。こうなってしまうと、ふつうは諦めざるを得ないのです。
むろん、ご質問者さんのご心配なるように、OSによって動かないというのはあり得る話です。
>一つずつListviewを削除して新規作成するという作業を行う必要があるのでしょうか?
>自動更新できる方法があれば教えてください。
よほど何かトラブルがなければ、Listviewを削除して新規作成ということにはなりませんせんが、Runtime の更新は必要になるでしょう。
>週に一度くらいの頻度でWin10で作成したVBAを
>Win7のPCを使っている人に渡したとして
この場合は、アプリが下位互換とは言わないと思います。リビジョンの違いはあったとしても、同じバージョンなら、使えないはずはないと思います。
ここの資料は、圧巻です。
http://homepage2.nifty.com/nonnon/Chinamini/2010 …
それから、
>MS社のセキュリティアップデートにバグ
すでに回答はついていますが、それとは違って、2014年の12.10 Office Update事件(w)と違うのでしょうか?他は忘れても、これは忘れませんです。みんな、大混乱してしまいました。
No.3
- 回答日時:
mscomctl.ocx自体はWindowsではなくてOffice製品に付属します。
古いバージョンのExcelでVBAが問題なく機能するためには参照設定の変更が必要です。
(2016→2010での確認)
古いバージョンで作成後に新バージョンで使用する際には必要ありません。
mscomctl.ocxのバージョンを新旧で合わせる必要はありません。
質問の意味を取り違えているかもしれませんが
Win10 & Excel2016 にあるmscomctl.ocxをWin7 & Excel2010 にコピペして・・・
という考えでしたら、
まずライセンス違反、
多分レジストリの登録のやり直しが必要、
また、今後にExcel2010上でmscomctl.ocxのセキュリティアップデートがあった場合に厄介なことになりそうです。
Excelのバージョン(アップデートも適用されている)が同じなら
Win10⇔Win7間のやり取りなら参照設定のチェックをせずとも動くハズです。(未検証)
No.2
- 回答日時:
参照設定の一覧で『参照不可』になっていることで確認します。
[レ]参照不可 Microsoft Windows Common Controls 6.0(SP6)となります。
↑チェックを外して一覧から探し出してチェックを入れなおすか
ファイル名はわかっているので[参照(B)]から
C:\windows\SysWow64\mscomctl.ocx を指定します。
Excel2002以降ではセキュリティ上の観点からVBAのオブジェクトへVBAを用いてアクセスするには
セキュリティセンターのマクロの設定で、
『VBA プロジェクト オブジェクト モデルへのアクセスを信頼する』にチェックが必要になりました。
(Excel2010の場合です。他のバージョンでも同様な設定項目があるかと思います)
で、OfficeTanakaさんのところにも書いてあるように「参照不可」になっている場合は
VBAでチェックを外すことは出来なさそうです。
Excel2002の時に色々試したりGoogleったりしましたが解決できませんでした。
参照設定は一度行ってしまえば同じ環境であるかぎり一回だけ必要なことでしかないので
それ以降考えたことはありません。
あの問題は、2012年の夏のことでしたね。
http://answers.microsoft.com/ja-jp/office/forum/ …
No.1
- 回答日時:
現、Windows7 & Excel2010
↓
新、Windows10 & Excel2016
などの場合には完全にとは言えないかもしれませんが、
ほとんどの場合でExcel内部で自動的に判断されるので問題ありません。
逆に、
現、Windows7 & Excel2010
↑
新、Windows10 & Excel2016で作成
のように旧バージョンで動かそうとすると
VBEの参照設定を変更しなくてはいけない場合が多くなりますが
Listviewコントロール自体の作り直しが必要になることは、まず無いと思います。
リンク先の投稿ですが、あの時には、MS社のセキュリティアップデートにバグがあり
MS社の修正パッチの公開を待っていたら業務が滞るので手作業でファイルの置き換え、
レジストリの書き換え、コントロールの作り直しで対応していました。
通常であれば必要のない作業でした。
その後、修正パッチが公開されてあの問題は収束しました。
繰り返しになりますが、mscomctl.ocxに限定でいうと、
新バージョンに移行する場合には何も気を配る必要はないでしょう。
旧バージョンのExcel環境で使えるようにするには、
参照設定の確認が必要です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(OS) Win10をWin11にアップグレード、IE11は引き続き使えますか。 5 2023/01/15 06:16
- 中古パソコン 中古PCを売る時、OS(Windows11)はどんな状態にするのが親切ですか? 4 2022/12/15 17:08
- Visual Basic(VBA) VBAでArrayListを使う為の「mscorlib.tlb」の参照設定について 3 2022/03/23 19:45
- その他(Microsoft Office) PCを買い換えました。 今使っているノートパソコンが10年以上使っており新しく買い換えました。Win 5 2023/03/26 00:18
- デスクトップパソコン 「自動修復でPCを修復できませんでした」と表示されPCが起動しないのですが対処法はありますか? 5 2022/05/13 09:16
- Visual Basic(VBA) エクセルVBA コードが同じでもファイルによって処理速度が大きく変わるのはなぜ 5 2022/11/06 21:34
- Visual Basic(VBA) VBA アドインについて お詳しい方 ご教授をお願いします。 相談事項 現在以下の対応を実施した所、 1 2022/11/02 16:53
- Windows 7 Media Playerが開かない。ファイルアイコンを右クリックしても「プロパティ」が表示されない。 2 2023/02/05 14:45
- その他(クラウドサービス・オンラインストレージ) Onedriveで実現したい事。2台のPC間で。 2 2023/04/10 20:42
- その他(プログラミング・Web制作) Pythonでexcelのvbaを作成、実行する方法について Pythonで表の自動集計プログラムを 3 2022/07/09 09:58
このQ&Aを見た人はこんなQ&Aも見ています
-
ExcelVBAでListViewが使用できない
Visual Basic(VBA)
-
mscomct2.ocxをパソコンに導入するには?
Excel(エクセル)
-
コモンダイアログコントロールがコンポーネントにありません
Visual Basic(VBA)
-
-
4
Accessで MSCOMCT2.OCX 参照不可をコードで解決したい
Access(アクセス)
-
5
VB6のプロジェクトロードエラーについて
Visual Basic(VBA)
-
6
vba Listviewでのチェックボックスのイベントを教えてください
Excel(エクセル)
-
7
UserForm
Visual Basic(VBA)
-
8
ExcelVBA でリストリストボックスに列見出しをコーディングでつける
Excel(エクセル)
-
9
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
10
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
11
VBAの参照設定について
PowerPoint(パワーポイント)
-
12
エクセルVBAでフォームのListboxをスクロールするには?
その他(Microsoft Office)
-
13
エクセル マクロ 標準モジュールのマクロから、シートモジュールのマクロを呼び出す
Excel(エクセル)
-
14
【VBA】ユーザーフォーム リストボックスのヘッダー設定方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
gitでバージョン指定してダウン...
-
Selenium/VBA/Chrome エラーで...
-
VBAでDVDのトレイを開く。、
-
DV端子を使って画像を読み込み...
-
ez-htmlで文字化けしてしまいま...
-
RichEdit
-
MSCOMCTL.OCXのアップデートの方法
-
JOGLがうまくインストールでき...
-
ロールバックの逆の言葉は?
-
「Flash CS 3」と、「Macromedi...
-
ベータバージョンの記載の仕方
-
Javaの旧バージョンの落とし方
-
Unityでゲームを作るのってどの...
-
Flashで作った画像をAI形式に書...
-
Tomcat対応の文字コードについて
-
C# Excelを遅延バインディング...
-
vb2005のバージョンごとの違い。
-
外字の判定方法がわかりません。
-
EclipseでJavaコンパイラのバー...
-
Twitter4j javaについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
使用しているJUnitのバージョン...
-
gitでバージョン指定してダウン...
-
MSCOMCTL.OCXのアップデートの方法
-
visual stadio 参照問題
-
CrystalReportsのバージョン確...
-
EclipseでJavaコンパイラのバー...
-
Selenium/VBA/Chrome エラーで...
-
【javaコンパイル時のエラーに...
-
バイナリファイルの著作権など...
-
システムのプロパティの取得
-
バージョン番号とリリース番号...
-
UWSCが、動作環境の違いで動か...
-
URLDownloadToFileのコピペで64...
-
tomcatのwebapps配下のディレク...
-
VB4・5・6は共存できる?
-
エクセルVBAがMACで動かない
-
qmailについて
-
XCODE コンソールのクリア
-
もうこの本は定価ではどこにも...
-
VBAでDVDのトレイを開く。、
おすすめ情報
参照設定って
「Microsoft ListView Control 6.0(SP4)」か
「Microsoft Windows Common Controls 6.0(SP6)」などのチェックのことでしょうか?
mscomctl.ocxのバージョンが異なると
チェックを入れる項目が変わるということですか?
例えば、SP6がSP7とか8にする必要があるという意味でしょうか?
もしそうだとして、
予め、新しいライブラリの名称さえ分かっていれば
http://officetanaka.net/excel/vba/tips/tips100.htm
このページの方法で自動設定することは可能でしょうか?
あと、バグがあったのは何年と何年のバージョンの間でしょうか?
2003年辺りですか?
ご回答ありがとうございます。
>参照設定は一度行ってしまえば同じ環境であるかぎり一回だけ必要なことでしかない
というのは、mscomctl.ocxをVBAを作成したPCと同じバージョンと同じに更新した場合ということではなく
mscomctl.ocxを更新せずに行えるという意味でしょうか?
例えば、
週に一度くらいの頻度でWin10で作成したVBAを
Win7のPCを使っている人に渡したとして
mscomctl.ocxを更新せずにつかうことはできるのでしょうか?
すいません、質問の意図が伝わっていないのですが
正式な名称が分からないので仮称となりますが
例えば、
Win7のPCでは「Microsoft ListView Control 6.0(SP4)」、
Win10のPCでは「Microsoft ListView Control 7.0(SP6)(仮称)」に登録がなされているとします。
Win10 PCで作成したVBAをWin7 PCにコピーして使用するためには、
「~7.0(SP6)(仮称)」にチェックを入れる必要があるはずです。
しかし、mscomctl.ocxのバージョンを更新しないとWin7 PCには
「~7.0(SP6)(仮称)」が存在しないのではないでしょうか?
オフィスを常にアップデートして最新の状態にしておく必要があるということでしょうか?
納得しました。
ありがとうございました。