• 締切済み

COMポートマクロ入りのxlsファイルが動かない

今までwindows XPのPCのエクセルで動作差せていたCOMポート通信を利用したマクロ機能付きのエクセルファイルをwindows8.1のPCで動作差せようとすると次のようなエラーが発生して利用できません。 Microsoft Forms ”はこのマシンでは利用できないため、オブジェクトを読み込めませんでした。” そしてMicrosoft Visual Basic というデバッグウィンドウが開き If MSComm1.PortOpen = False Then という分の”MSComm1”という部分が反転表示されて、 ”コンパイルエラー : 変数が定義されていません。” このようなエラーが発生してこのエクセルのマクロ機能が使用できません。 このエラーを解決する方法をご教授頂きますよう、よろしくお願い致します。

みんなの回答

  • RandenSai
  • ベストアンサー率54% (305/561)
回答No.5

う~ん、とっても矛盾したことが起きているのですが…mscomm32.ocxがインストールされていて、参照可能なライブラリファイルにMicrosoft Comm Control 6.0が登録されているにもかかわらず、Microsoft Communications Control, virsion 6.0が見えないという状況はあり得ないはずです。 ここで試せるとしたら、いったんVB6のランタイムをアンインストールしてPCを再起動後、Excelを起動させていない状態でもう一度ランタイムをインストールし直すくらいしか思い付きません。

diy_sunny
質問者

お礼

回答頂きありがとうございます。 とりあえずVB6ランタイムを削除するためVB6_CompSetup.msiファイルを起動して削除を実施してPCを再起動させました。 その後、再度VB6_CompSetup.msiファイルを起動してランタイムのインストールを実施して再起動。 再起動後にマクロ付きのエクセルファイルを立ち上げてもやはり同様のエラーが出てきてしまいます。 また、 メニューの「ツール(T)」→「その他のコントロール(A)…」→「コントロールの追加」ウィンドウの Microsoft Communications Control, virsion 6.0 これも表示されてきませんでした。 また気づいたことなのですが、電話のマークがwindowsXPのPCでは表示されるフォームでは、 windows8のエクセルでこのフォームを開く時にこのフォーム選択時だけ”その他のコントロール(A)…”これが無効化されていて「コントロールの追加」ウィンドウに進むことができないことがわかりました。 もし良ければ引き続き解決方法教えて頂けると助かります。

diy_sunny
質問者

補足

お世話になっております。 他にもちょっとやってみたこととしてこちらに書かせて頂き増す。 ・こちらの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に変更。 このレジストリ操作の内容があったのでこれもやってみましたが現在解決できなかったです。

  • RandenSai
  • ベストアンサー率54% (305/561)
回答No.4

回答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」をクリックして表示を閉じます。これでさっきの「コントロール」の中に電話アイコンが出てくるはずです。 ただしこの設定を行っても、最初に提示した知恵袋のやり取りで回答されたことをやっておかないと、電話アイコンを貼り付けることができなくなるので、先にそっちをやってください。

diy_sunny
質問者

お礼

回答頂きありがとうございます。返事が遅くなってしまい大変申し訳ありません。 教えて頂きました知恵袋のサイトの内容と現在の自分の状況を確認してみたところ、ユーザーフォームに”MSCommの電話アイコン”の表示がないことを確認しました。 現在このマクロが正常に動作するwindows XPマシンではこの電話のアイコンが表示されているのですが、windows 8 x64版のPCでは表示されていない状態です。 そして、2番目に教えて頂きました電話アイコンがなかった場合の対処として メニューの「ツール(T)」→「その他のコントロール(A)…」→「コントロールの追加」ウィンドウの Microsoft Communications Control, virsion 6.0 これをチェックすることなのですが、この項目が現在のPCには存在していません。 この Microsoft Communications Control, virsion 6.0 これをこの項目で追加する方法をご教授頂きますようよろしくお願い致します。

diy_sunny
質問者

補足

ご協力頂きありがとうございます。 現在この問題に関して引き続き調べているところなのですが、知り合いより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)
回答No.3

No1です。 念のため確認します。mscommコントロールを貼り付けているフォーム上に ListViewコントロールなど存在していませんか。 割とポピュラーな問題で、mscomctl.ocxのバージョン差による問題があります。 XPとWindows8のPCでインストールされているOfficeのバージョン違いなどで この問題が発生します。 参照設定が有効なことから、なんとなくですがmscommそのものが問題ではないように思えます。

参考URL:
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1198163781
diy_sunny
質問者

お礼

回答頂きありがとうございます。 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)
回答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…の画面は右上の×をクリックして閉じて構いません。後はマクロが動くかどうか確かめてください。

diy_sunny
質問者

お礼

回答頂きありがとうございます。 「ツール(T)」→「参照設定(R)…」こちらを参照してみたところ、「Microsoft Comm Control 6.0」が存在して、左にチェックマークが付いている状態でした。 しかし、これで同様のエラーが出ている状態です。 他に見るべき点など教えて頂きますようお願い致します。

  • t-aka
  • ベストアンサー率36% (114/314)
回答No.1

mscomm32.ocxが存在していないため、と思われます。 VB6のランタイムをWindows8のPCにインストールすれば、実行できるものと思われます。

参考URL:
http://www.vector.co.jp/soft/win95/util/se442629.html
diy_sunny
質問者

お礼

回答頂きありがとうございます。 助かります。 VB6のランタイムをインストールしてみたのですが、やはり同様のエラーが出てマクロが実行できません。 現在使用しているノートPCはwindows 8.1の64ビット版でエクセル2007を使用しています。 どうぞ、ご教授頂きますようお願い致します。

関連するQ&A

  • ターミナルサーバーでの通信ポートエラーについて

    始めて質問いたしますので宜しくお願い致します。 ターミナルサーバー(Windows Server 2003 R2 SP2)上でVB5のアプリを動かしています。 FormからMSCommのコマンドにて通信ポート(COM1)のラベルプリンタ(SATO SR412)に 印刷を行うのですが1回目の印刷ではポートも正常に開けて印刷されますが フォームを閉じずにそのまま2回目を印刷した際に8012(デバイスが開けません)のエラーが 発生し印刷できません。 フォームを閉じると印刷は可能となります。 Windows XP SP3上で同じVB5のアプリを動かすとフォームを閉じなくても2回目の印刷が可能 となります。 ターミナルサーバー側の設定をどのように変更すればエラーが発生せず 印刷できるかご教授頂ける方、宜しくお願い致します。 ちなみにマイクロソフトのパッチ:838291は適用しています。 【デバッグを行った状態】 MSCommのコマンドにてデバッグを行った際、1回目の印刷時にはメッセージBOXで 状態を表示致しましたが正常にPortOpen=FALSEとなりポートがクローズされています。 2回目の印刷時にもポートがオープンされている場合にもPortOpen = Falseにて 一度、クローズしたのちPortOpen = Trueにて開こうとしていますがエラーとなります。 実行のコマンドは以下となります。 With X_oMSComm If .PortOpen = True Then .PortOpen = False End If .CommPort = 1 .DTREnable = True .RTSEnable = True .NullDiscard = False .Settings = "9600,N,8,1" .Handshaking = 0 .SThreshold = 0 .RThreshold = 0 .InputLen = 0 .PortOpen = True  ← このコマンドにてエラーとなります。 End With

  • マクロで参照するファイルの拡張子

    マクロを使って集計作業をしています。 マクロでは複数のファイルから"vlook up"を使ってデータを参照しています。 今回参照するExcelファイルの拡張子が「xls」から「xlsx」に変わったのですが、 マクロを走らせるとエラーになりデバッグが立ち上がります。 マクロの編集で参照するファイルの拡張子を「xlsx」に変更したのですが、 やはりエラーとなり、集計がストップしてしまいます。 どうデバッグすれば良いのか分かりません。 そもそも「xlsx」の拡張子ではマクロが正常に動かないものなのでしょうか。

  • MacでマクロのExcelファイルを開けられますか

    本来はwindowsのoffice 2007で開けるマクロを含むExcelファイルですが、 Macでも使おうと思ったが、マクロが動きません。エラーが出てきます:非表示モジュール内でコンパイル エラー 使っているバーションはoffice for mac2011です。 Macではマクロが動けませんか。しかし、microsoft officeの紹介によっては、2011バーションはVBAが復活して、マクロのファイルが開けるようになったと書いていますが。。。 やはりwindowsでないと使いないのですが、何か方法がありますか。 よろしくお願いいたします。 ちなみに、開けたいファイルは以下のウェブサイトから得られたものです。 http://www.jomon.ne.jp/~hayakari/index.html

    • 締切済み
    • Mac
  • Excelのマクロのモジュールを吸出す方法を教えてください

    マクロを使用して作成したExcelファイルを立ち上げようとすると、 「問題が発生したため、Microsoft Excel for Windows を終了します。 ご不便をおかけして申し訳ありません。」 というMicrosoftのエラーになり、Excelが開かなくなってしまいました。 作り直すにしても、そのモジュールを何とか見たいのですが、 Excelを立ち上げずにモジュールを吸出す方法はありませんか?

  • PERSONAL.XLSを削除したいのですが・・・

    はじめまして。超ド素人です。 エクセルVBで自己流で「マクロの記録」を使用して、 簡単なツールを作成したしていたのですが、マクロの保存先を 「個人用マクロブック」に間違って指定したところ、今まで動作していた動作していた部分が、エラーになるようになってしまいました。 (そもそも「個人用マクロブック」の用途がわかってないこともあるのですが・・・。)ただ、別のPCでは正常に動作するので、 ひとまずこれまで作ったマクロが動作するようにするには、 PERSONAL.XLSを消すしかないのかないのかと思っているのですが、 削除の方法がわかりません。どなたかご教示願います。

  • Excel2007のマクロ(excel4.0)のSELECT関数でマクロエラーが発生する

    Excel VBAで開発されたソフトの改造を行ってますが、Excel2007で動作しないマクロがあり困ってます。 <開発環境> ・WindowsXP Pro SP3 ・Celeron 540(1.8GHz) ・メモリ1GB ・Excel2007 SP1 (Microsoft Office2007) 改造元ソフトはOffice2000で開発されており、Excel2007で動作するとマクロエラーが発生する処理があります。 因みにまだソフト改造はしてなく、そのままExcel2007で動作させるだけでマクロエラーが発生します。 発生する箇所はマクロ(excel4.0)で定義されており、下記のコマンドです。 =SELECT(!選択エリア) マクロエラーの内容は下記になります。 ------------------------------- マクロエラー [dbg.xls]マクロ(excel4.0)BV28 ------------------------------- やりたい事はシートの特定の範囲を選択することです。 "選択エリア"は正しく定義されていることは確認してます。 (=シート名!$D$4:$CY$103 と定義してます) Excel2000やExcel2003ではマクロエラーが発生せずに正常に選択されます。 Excel2007のマクロセキュリティ設定を「すべてのマクロを有効にする」にしてます。 開発者向けのマクロ設定を「VBAプロジェクトオブジェクトモデルへのアクセスを信頼する」にチェックしても改善しません。 ネットで調べましたが判らず、ここで質問させて頂きました。 判りにくい説明で申し訳ありませんが、よろしくお願いします。

  • Excelマクロエラーの通知

    自宅のPCを使い、楽天証券のRSSからExcelのマクロを使って株価をExcelに表示させています。 ですが、自宅の無線LANが悪いのかたまにネットワークが切断されてしまい、その時データを取得するマクロが動くとマクロのエラーが発生し、それ以降のデータを取得することができなくなってしまいます。 マクロのエラーを通知するようなツールや機能などありましたら教えていただきたいです。

  • マクロの編集画面が開かない

    困っています。 エクセルのファイルのマクロの編集画面が開きません。 エラーが発生してしまって マクロ自体は動作はするのですが、何が原因で編集画面が開かないのでしょうか? 教えて下さい

  • VB.NETでのシリアル通信

    .NET初心者です。 VB.NETでシリアル通信をしようとしています。 参照設定のところに Microsoft MSCOMM CONTROLというのがあったので 選択しました。 すると、MSLib.MSCommというのがでてきたので Vb6の Dim test As mscomm のように宣言して使えるかと思い Dim test As MSLib.MSComm test.PortOpen と書いてみたところ、 オブジェクト参照・・・インスタンス化されていません。と、エラーがでました。 ブレイクしてみたところ、test = Nothingでした。 testが無いのでインスタンス化されていないという エラーがでるのだなということは分かったのですが なぜこのエラーがでるのか、 どうしたらこのエラーを回避し、 .NETでシリアル通信ができるのか教えてください。 よろしくお願いします。

  • エクセルのマクロについて

    他人の作ったエクセルのマクロを走らせようとしたところ、エラーになってしまい 止まってしまいました。 デバッグというところで見てみたら 「Print Quality = -4」 の部分が問題となっていました。 この意味がよくわからないのですが、わかる方教えて戴けますでしょうか? よろしくお願い致します。