今までwindows XPのPCのエクセルで動作差せていたCOMポート通信を利用したマクロ機能付きのエクセルファイルをwindows8.1のPCで動作差せようとすると次のようなエラーが発生して利用できません。
Microsoft Forms
”はこのマシンでは利用できないため、オブジェクトを読み込めませんでした。”
そしてMicrosoft Visual Basic というデバッグウィンドウが開き
If MSComm1.PortOpen = False Then という分の”MSComm1”という部分が反転表示されて、
”コンパイルエラー : 変数が定義されていません。”
このようなエラーが発生してこのエクセルのマクロ機能が使用できません。
このエラーを解決する方法をご教授頂きますよう、よろしくお願い致します。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
う~ん、とっても矛盾したことが起きているのですが…mscomm32.ocxがインストールされていて、参照可能なライブラリファイルにMicrosoft Comm Control 6.0が登録されているにもかかわらず、Microsoft Communications Control, virsion 6.0が見えないという状況はあり得ないはずです。
ここで試せるとしたら、いったんVB6のランタイムをアンインストールしてPCを再起動後、Excelを起動させていない状態でもう一度ランタイムをインストールし直すくらいしか思い付きません。
この回答への補足
お世話になっております。
他にもちょっとやってみたこととしてこちらに書かせて頂き増す。
・こちらのWEBサイト
NonSoft VB6(Visual Basic 6.0)ランタイムのインストール方法
http://homepage2.nifty.com/nonnon/Chinamini/2010 …
こちらのサイトでwindows7,8に関しては
※(例2)regsvr32.exe MSCOMM32.OCX
※(例3)regsvr32.exe MSWINSCK.OCX
というのを管理者権限でやった方がよいということで遣ってみました。
また、
http://detail.chiebukuro.yahoo.co.jp/qa/question …
こちらのサイトで
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{648A5600-2C6E-101B-82B6-000000000014}のCompatibility Flagsの値を400hから 0に変更。
このレジストリ操作の内容があったのでこれもやってみましたが現在解決できなかったです。
回答頂きありがとうございます。
とりあえずVB6ランタイムを削除するためVB6_CompSetup.msiファイルを起動して削除を実施してPCを再起動させました。
その後、再度VB6_CompSetup.msiファイルを起動してランタイムのインストールを実施して再起動。
再起動後にマクロ付きのエクセルファイルを立ち上げてもやはり同様のエラーが出てきてしまいます。
また、
メニューの「ツール(T)」→「その他のコントロール(A)…」→「コントロールの追加」ウィンドウの
Microsoft Communications Control, virsion 6.0
これも表示されてきませんでした。
また気づいたことなのですが、電話のマークがwindowsXPのPCでは表示されるフォームでは、
windows8のエクセルでこのフォームを開く時にこのフォーム選択時だけ”その他のコントロール(A)…”これが無効化されていて「コントロールの追加」ウィンドウに進むことができないことがわかりました。
もし良ければ引き続き解決方法教えて頂けると助かります。
No.4
- 回答日時:
回答No.2です。
互換性起因のこともあるようで、過去質問にも出てきていました。これは一度やってみる価値がありそうです。ただここのやりとりは解りにくかったので、もっと簡潔な知恵袋のやりとりを貼っておきます。http://detail.chiebukuro.yahoo.co.jp/qa/question …
これでもなお動かなければ、MSCommがマクロ上から消えてしまっているかも知れません。それを確認するには、マクロを開いた状態で例のAlt+F11でマクロ編集に移行し、マクロ作者が作った画面(ユーザーフォーム)の中に電話みたいなアイコンがないか探してみてください。MSCommの実体がこれです。ユーザーフォームが複数ある場合は、最初に開いたものにあるとは限らないため、全部のユーザーフォームを確認する必要があります。
もしアイコンがなかった場合は、フォーム上に新たに貼り直しです。ユーザーフォームをクリックすると「コントロール」というアイコンがならんだ小さい窓が開き、ここにあるものをクリックして選択→ユーザーフォーム上でクリックすれば貼り付けられるんですが、MSCommの電話アイコンは多分表示されていないと思います。その場合は次の設定を。
1)メニューの「ツール(T)」→「その他のコントロール(A)…」の順にクリックします。これで「コントロールの追加」という表示が出てきます。
2)その中の「利用可能なコントロール」リストの中から「Microsoft Communications Control, virsion 6.0」を探し出し、その左隣にある四角をクリックして×が付いた状態にします。
3)「OK」をクリックして表示を閉じます。これでさっきの「コントロール」の中に電話アイコンが出てくるはずです。
ただしこの設定を行っても、最初に提示した知恵袋のやり取りで回答されたことをやっておかないと、電話アイコンを貼り付けることができなくなるので、先にそっちをやってください。
この回答への補足
ご協力頂きありがとうございます。
現在この問題に関して引き続き調べているところなのですが、知り合いよりExcel2013を32bit版で再インストールするとMSComm32が使用できるようになったということを聞きました。
自分のPCにインストールされていたExcel2013のVersion情報を確認したところ64ビット版でインストールされていることを確認しました。
そこで、
・Excel2013を32bit版で再インストール。
・VB6コンポーネントも再インストール
この2つを実施したところ、
ツール→その他のコントロール→コントロールの追加ウィンドウで
利用可能なコントロールの
Microsoft Communications Control,version6.0
場所 C:Windows\SysWOW64\mscomm32.ocx
これにチェックを入れたところ、電話のアイコンがツールボックスに出るようになりました。
そこでMSComm32の電話アイコンが必要なフォームに貼り付けようとしたところ、
次のようなエラーが出て貼り付けできません。
「サブジェクトは指定された動作に対して信頼されていません」とでます。
これは教えて頂いた知恵袋の内容に似ていたので、
次のレジストリの編集を実施しました。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{648A5600-2C6E-101B-82B6-000000000014}のCompatibility Flagsの値を400hから 0に変更。
しかしこれだと解決できませんでした。
現在使用しているPCはwindows8.1ですが、他に解決策などご教授頂きますようお願い致します。
回答頂きありがとうございます。返事が遅くなってしまい大変申し訳ありません。
教えて頂きました知恵袋のサイトの内容と現在の自分の状況を確認してみたところ、ユーザーフォームに”MSCommの電話アイコン”の表示がないことを確認しました。
現在このマクロが正常に動作するwindows XPマシンではこの電話のアイコンが表示されているのですが、windows 8 x64版のPCでは表示されていない状態です。
そして、2番目に教えて頂きました電話アイコンがなかった場合の対処として
メニューの「ツール(T)」→「その他のコントロール(A)…」→「コントロールの追加」ウィンドウの
Microsoft Communications Control, virsion 6.0
これをチェックすることなのですが、この項目が現在のPCには存在していません。
この
Microsoft Communications Control, virsion 6.0
これをこの項目で追加する方法をご教授頂きますようよろしくお願い致します。
No.3
- 回答日時:
No1です。
念のため確認します。mscommコントロールを貼り付けているフォーム上に
ListViewコントロールなど存在していませんか。
割とポピュラーな問題で、mscomctl.ocxのバージョン差による問題があります。
XPとWindows8のPCでインストールされているOfficeのバージョン違いなどで
この問題が発生します。
参照設定が有効なことから、なんとなくですがmscommそのものが問題ではないように思えます。
参考URL:http://detail.chiebukuro.yahoo.co.jp/qa/question …
回答頂きありがとうございます。
mscomctl.ocxファイルに関するWEBサイト紹介頂きありがとうございます。
現在の私のエクセルマクロのフォーム内ではListVieweというツールを使っているか
”ツール”→”その他のコントロール”を確認してみたところ、
http://officetanaka.net/excel/vba/listview/01.htm
こちらのサイトにあるような
”Microsoft ListView Control 6.0(SP4)”
という項目はなかったです。
なお、mscomctl.ocxというファイルは”C:\Windows\SysWOW64”このフォルダパスにあることを確認しました。
また、詳細でバージョンを確認したところ
ファイルバージョン”6.1.97.82”
更新日付 ”2004-03-09 16:45”
このようになっていました。
このファイルは今回のCOMポートの件で教えて頂いたサイトのように更新する必要はありますでしょうか?
また、最新のmscomctl.ocxをダウンロードできるサイトなど教えて頂けませんでしょうか?
また、今回問題になっているエクセルマクロのMSCommというツールでRS-232C通信をwindows8のPCなどで行う場合に、MSComm以外の方法などありますでしょうか?
どうぞ、ご教授頂きますようお願い致します。
No.2
- 回答日時:
MSComm32.ocxをインストールしただけでは、Excelがその所在を知らないので動きません。
よってExcelにこのOCXがあることを教えてやる必要があります。次の操作でできると思います。1)問題のマクロを開いた状態で、ショートカットキー「Alt+F11」を押します。すると、Microsoft Visial Basic…という別画面が開きます。
2)メニューの「ツール(T)」→「参照設定(R)…」の順にクリックします。すると参照設定という割合小さめの画面が開きます。これはマクロで利用できるアドインの設定をするところです。
3)「参照可能なライブラリファイル」のリスト中に、「Microsoft Comm Control x.0(xには数字が入る)」が存在してかつ、左にチェックマークが付いているかを調べます。
存在してない場合:
ボタン「参照(B)…」をクリックしてファイルの参照画面を出し、「ファイルの種類(T)」のところの選択を「ActiveXコントロール(*.ocx)」にします。そして「名前」のところで「MSCOMM32.OCX」を探し出し、「開く(O)」ボタンをクリックします。
存在しているがチェックマークが付いていない場合:
クリックしてチェックマークを付けてください。
4)参照設定の画面で、「OK」をクリックします。
これでいけるはずです。もうMicrosoft Visial Basic…の画面は右上の×をクリックして閉じて構いません。後はマクロが動くかどうか確かめてください。
回答頂きありがとうございます。
「ツール(T)」→「参照設定(R)…」こちらを参照してみたところ、「Microsoft Comm Control 6.0」が存在して、左にチェックマークが付いている状態でした。
しかし、これで同様のエラーが出ている状態です。
他に見るべき点など教えて頂きますようお願い致します。
No.1
- 回答日時:
mscomm32.ocxが存在していないため、と思われます。
VB6のランタイムをWindows8のPCにインストールすれば、実行できるものと思われます。
参考URL:http://www.vector.co.jp/soft/win95/util/se442629 …
回答頂きありがとうございます。
助かります。
VB6のランタイムをインストールしてみたのですが、やはり同様のエラーが出てマクロが実行できません。
現在使用しているノートPCはwindows 8.1の64ビット版でエクセル2007を使用しています。
どうぞ、ご教授頂きますようお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
つい集めてしまうものはなんですか?
人間誰もは1つ「やたらこればかり集めてしまう」というものがあるもの。 あなたにとって、つい集めてしまうものはなんですか?
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
メモのコツを教えてください!
メモを取るのが苦手です。 急いでメモすると内容がごちゃごちゃになってしまったり、ひどいときには全く読めない時もあります。
-
ちょっと先の未来クイズ第4問
11月ごろに発表される、2024年の「新語・流行語大賞」にノミネートされる言葉を書けるだけ書いてください。
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
Winsockのオブジェクトエラー
Visual Basic(VBA)
-
エクセル VBA でのCOMポート認識
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数のデータ系列の線の太さを...
-
Powerpointでランダムな数字の...
-
エクセルでツールバーに「縮小...
-
VBAでシートの保護をかける際に...
-
cellsで特定の離れた範囲を選択...
-
ファイル名を今日の日付、時刻...
-
ACCESS VBAからWordのテンプレ...
-
エクセル2007 テキストボ...
-
エクセル2010 Shapeをクリップ...
-
別ブックからユーザーフォーム...
-
htmlまたはJavascriptからファ...
-
ExcelVBAで今開いているユーザ...
-
別のパソコンでエクセルのマク...
-
エクセルで印刷する方法 エクセ...
-
エクセルVBAでmeに相当するもの...
-
エクセルでマクロを有効にする...
-
VBA マクロ実行時エラー’1004Ra...
-
EXCELで日付を自動でファイル名...
-
コピーしたファイルのマクロを...
-
作ったマクロが増えてきて、ど...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数のデータ系列の線の太さを...
-
エクセルでツールバーに「縮小...
-
Powerpointでランダムな数字の...
-
ファイル名を今日の日付、時刻...
-
cellsで特定の離れた範囲を選択...
-
VBA[Private Sub]のコードをシ...
-
VBAを使ってエクセルシート...
-
どのドキュメントは暗号化され...
-
ピボットグラフの書式の固定に...
-
エクセルのマクロでSelection.S...
-
Pictures.Insertメソッド⇒Shape...
-
最初の1回のみにボタンクリッ...
-
別ブックからユーザーフォーム...
-
エクセル2007 テキストボ...
-
エクセルシートをまとめて印刷...
-
【ExcelVBA】クエリの更新とピ...
-
wordのマクロで縮小して貼り付...
-
エクセルのストップウォッチ
-
エクセルワークシート上に印刷...
-
Excelのラジオボタンにチェック...
おすすめ情報