- 締切済み
COMポートマクロ入りのxlsファイルが動かない
今までwindows XPのPCのエクセルで動作差せていたCOMポート通信を利用したマクロ機能付きのエクセルファイルをwindows8.1のPCで動作差せようとすると次のようなエラーが発生して利用できません。 Microsoft Forms ”はこのマシンでは利用できないため、オブジェクトを読み込めませんでした。” そしてMicrosoft Visual Basic というデバッグウィンドウが開き If MSComm1.PortOpen = False Then という分の”MSComm1”という部分が反転表示されて、 ”コンパイルエラー : 変数が定義されていません。” このようなエラーが発生してこのエクセルのマクロ機能が使用できません。 このエラーを解決する方法をご教授頂きますよう、よろしくお願い致します。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- RandenSai
- ベストアンサー率54% (305/561)
う~ん、とっても矛盾したことが起きているのですが…mscomm32.ocxがインストールされていて、参照可能なライブラリファイルにMicrosoft Comm Control 6.0が登録されているにもかかわらず、Microsoft Communications Control, virsion 6.0が見えないという状況はあり得ないはずです。 ここで試せるとしたら、いったんVB6のランタイムをアンインストールしてPCを再起動後、Excelを起動させていない状態でもう一度ランタイムをインストールし直すくらいしか思い付きません。
- RandenSai
- ベストアンサー率54% (305/561)
回答No.2です。互換性起因のこともあるようで、過去質問にも出てきていました。これは一度やってみる価値がありそうです。ただここのやりとりは解りにくかったので、もっと簡潔な知恵袋のやりとりを貼っておきます。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1027494815 これでもなお動かなければ、MSCommがマクロ上から消えてしまっているかも知れません。それを確認するには、マクロを開いた状態で例のAlt+F11でマクロ編集に移行し、マクロ作者が作った画面(ユーザーフォーム)の中に電話みたいなアイコンがないか探してみてください。MSCommの実体がこれです。ユーザーフォームが複数ある場合は、最初に開いたものにあるとは限らないため、全部のユーザーフォームを確認する必要があります。 もしアイコンがなかった場合は、フォーム上に新たに貼り直しです。ユーザーフォームをクリックすると「コントロール」というアイコンがならんだ小さい窓が開き、ここにあるものをクリックして選択→ユーザーフォーム上でクリックすれば貼り付けられるんですが、MSCommの電話アイコンは多分表示されていないと思います。その場合は次の設定を。 1)メニューの「ツール(T)」→「その他のコントロール(A)…」の順にクリックします。これで「コントロールの追加」という表示が出てきます。 2)その中の「利用可能なコントロール」リストの中から「Microsoft Communications Control, virsion 6.0」を探し出し、その左隣にある四角をクリックして×が付いた状態にします。 3)「OK」をクリックして表示を閉じます。これでさっきの「コントロール」の中に電話アイコンが出てくるはずです。 ただしこの設定を行っても、最初に提示した知恵袋のやり取りで回答されたことをやっておかないと、電話アイコンを貼り付けることができなくなるので、先にそっちをやってください。
お礼
回答頂きありがとうございます。返事が遅くなってしまい大変申し訳ありません。 教えて頂きました知恵袋のサイトの内容と現在の自分の状況を確認してみたところ、ユーザーフォームに”MSCommの電話アイコン”の表示がないことを確認しました。 現在このマクロが正常に動作するwindows XPマシンではこの電話のアイコンが表示されているのですが、windows 8 x64版のPCでは表示されていない状態です。 そして、2番目に教えて頂きました電話アイコンがなかった場合の対処として メニューの「ツール(T)」→「その他のコントロール(A)…」→「コントロールの追加」ウィンドウの Microsoft Communications Control, virsion 6.0 これをチェックすることなのですが、この項目が現在のPCには存在していません。 この Microsoft Communications Control, virsion 6.0 これをこの項目で追加する方法をご教授頂きますようよろしくお願い致します。
補足
ご協力頂きありがとうございます。 現在この問題に関して引き続き調べているところなのですが、知り合いより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ですが、他に解決策などご教授頂きますようお願い致します。
- t-aka
- ベストアンサー率36% (114/314)
No1です。 念のため確認します。mscommコントロールを貼り付けているフォーム上に ListViewコントロールなど存在していませんか。 割とポピュラーな問題で、mscomctl.ocxのバージョン差による問題があります。 XPとWindows8のPCでインストールされているOfficeのバージョン違いなどで この問題が発生します。 参照設定が有効なことから、なんとなくですがmscommそのものが問題ではないように思えます。
お礼
回答頂きありがとうございます。 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以外の方法などありますでしょうか? どうぞ、ご教授頂きますようお願い致します。
- RandenSai
- ベストアンサー率54% (305/561)
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」が存在して、左にチェックマークが付いている状態でした。 しかし、これで同様のエラーが出ている状態です。 他に見るべき点など教えて頂きますようお願い致します。
- t-aka
- ベストアンサー率36% (114/314)
mscomm32.ocxが存在していないため、と思われます。 VB6のランタイムをWindows8のPCにインストールすれば、実行できるものと思われます。
お礼
回答頂きありがとうございます。 助かります。 VB6のランタイムをインストールしてみたのですが、やはり同様のエラーが出てマクロが実行できません。 現在使用しているノートPCはwindows 8.1の64ビット版でエクセル2007を使用しています。 どうぞ、ご教授頂きますようお願い致します。
お礼
回答頂きありがとうございます。 とりあえずVB6ランタイムを削除するためVB6_CompSetup.msiファイルを起動して削除を実施してPCを再起動させました。 その後、再度VB6_CompSetup.msiファイルを起動してランタイムのインストールを実施して再起動。 再起動後にマクロ付きのエクセルファイルを立ち上げてもやはり同様のエラーが出てきてしまいます。 また、 メニューの「ツール(T)」→「その他のコントロール(A)…」→「コントロールの追加」ウィンドウの Microsoft Communications Control, virsion 6.0 これも表示されてきませんでした。 また気づいたことなのですが、電話のマークがwindowsXPのPCでは表示されるフォームでは、 windows8のエクセルでこのフォームを開く時にこのフォーム選択時だけ”その他のコントロール(A)…”これが無効化されていて「コントロールの追加」ウィンドウに進むことができないことがわかりました。 もし良ければ引き続き解決方法教えて頂けると助かります。
補足
お世話になっております。 他にもちょっとやってみたこととしてこちらに書かせて頂き増す。 ・こちらのWEBサイト NonSoft VB6(Visual Basic 6.0)ランタイムのインストール方法 http://homepage2.nifty.com/nonnon/Chinamini/20100001/20100717.html こちらのサイトでwindows7,8に関しては ※(例2)regsvr32.exe MSCOMM32.OCX ※(例3)regsvr32.exe MSWINSCK.OCX というのを管理者権限でやった方がよいということで遣ってみました。 また、 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1027494815 こちらのサイトで HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{648A5600-2C6E-101B-82B6-000000000014}のCompatibility Flagsの値を400hから 0に変更。 このレジストリ操作の内容があったのでこれもやってみましたが現在解決できなかったです。