- ベストアンサー
エクセル2003で作ったVBAが2007で動かない
- エクセル2003で作成したVBAがエクセル2007で動かない問題について解決方法を教えてください。
- VBAを含んだファイルを開くとコンパイルエラーが発生し、マクロが正常に動作しない状況に困っています。
- エクセル2003と2007の互換性について、特にMSCommという関連プログラムに問題があるのか知りたいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
きちんと作成してあればほとんどそのまま実行できます。 そのようにエラーが出たらそれを修正してアップデートしていきます。 ご質問の場合は、そのエラーメッセージの通りなのでしょう。 個人的には、面倒でもかならず宣言しておいたほうがいいと思います。 ・宣言していなくてエラーになる変数のところで色が反転して停止していると思いますので、宣言してください。 ( または ・ツール → オプション → 編集タブ「変数の宣言を強制する」のチェックをはずす。)
その他の回答 (3)
- mt2008
- ベストアンサー率52% (885/1701)
ANo.3です、 > 詳細なご指導頂きありがとうございます。いろいろと申し訳ないのですが、私がかなり素人なもので、このレジストリというのを修正する方法をあまり知らないのですが、やり方とか、何かレジストリの修正ツールとか教えて頂けませんでしょうか。 [スタート]→[ファイル名を指定して実行]と選択して出てくる画面に regedit と入力してください。 レジストリエディタが開きます。 なお、レジストリは変なところを変更すると、アプリケーションやOSの動作に不都合が出る可能性があります。 注意して操作してください。
お礼
回答頂きありがとうございます。 regeditで HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{648A5600-2C6E-101B-82B6-000000000014} の、Compatibility Flagsの値を400 → 0に変更。 このように変更してみたのですが、やはり、マクロを有効にすると コンパイルエラー: 変数が定義されていません。 とでて、 Private Sub UserForm_Initialize()で停止して ”MSComm1”が反転表示されている状態になる現象に変化がありません。
- mt2008
- ベストアンサー率52% (885/1701)
Excel2007の場合、そのままではMSCOMMをUserFormに貼り付けられないので、その辺りに原因がありそう。 以下のレジストリをいじってみて下さい。 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{648A5600-2C6E-101B-82B6-000000000014} の、Compatibility Flagsの値を400 → 0に変更。
お礼
回答頂きありがとうございます。 詳細なご指導頂きありがとうございます。いろいろと申し訳ないのですが、私がかなり素人なもので、このレジストリというのを修正する方法をあまり知らないのですが、やり方とか、何かレジストリの修正ツールとか教えて頂けませんでしょうか。 どうぞ、よろしくお願い致します。
- Hayashi_Trek
- ベストアンサー率44% (366/818)
そのPCには、MSCOMMがインストールされているのでしょうか? 通常、WindowsにはMSCOMMは含まれていません。 MSCOMMをインストールするには、VB6でMSCOMMを使用したプログラムのSetupを作成して、Setupでインストールする必要があります。 ※あるいは、そのPCにVisual Studio 6.0 をインストールする。
お礼
回答頂きありがとうございます。 このMSCOMMについて何ですが、このように対処したつもりなのですが、問題かないか教えてもらえないでしょうか。 まず、エクセルのメニューバーから”開発”--->”Visual Basic”と進み、 Visual Basicのウィンドウが開いたら、メニューバーから”ツール”--->”参照設定”で参照設定のwindowで”参照”のコマンドボタンを押しました。 そして、\C\Windows\System32のフォルダ内にMscomm32.ocxファイルをさがしたのですが、このファイルがないため、このファイルを別のPCからもらって、同じフォルダ内にコピーペーストしました。 そしてこれを選択しました。 これで、”参照可能なライブラリファイル ファイル”の一覧の”Microsoft Comm Control 6.0”の行にチェックマークが付きました。 このようなやり方でMSCOMM(RS-232C関連のプログラム)をインクルードできたと思うのですが、やり方が間違っていますでしょうか? なお、この設定をしてもプログラムを実行しようとすると、”コンパイルエラー:変数が定義されていません”と出てきてストップしてしまいます。
お礼
回答頂きありがとうございます。 エラーにナル変数のところで色が反転する箇所というのが、 Private Sub UserForm_Initialize() この中の OPFlag = 10 If MSComm1.PortOpen = False Then Call PortOpenCD End If この”MSComm1”というところが反転します。 また、 ・ツール → オプション → 編集タブ「変数の宣言を強制する」のチェックをはずす。) この部分ではチェックは外している状態です。 このMSComm1というのはどのように宣言したら良いのでしょうか?