チョコミントアイス

現在、エクセル2003で作成したVBAがエクセル2007だと、マクロを有効にして起動させようとするとコンパイルエラーとなって動作しない現象が起きていて困っています。

どなたか、解決方法をご教授頂けないでしょうか?


・VBAを含んだファイルを開いて、マクロを有効にすると
”コンパイルエラー:変数が定義されていません” というエラーボックスが出てきてプログラムの矢印のポイントがPrivate Sub User Form_Initialize() のところを指したまま止まってしまう。

・このVBAはエクセルの表の書かれたデータをRS-232Cで出力するようなプログラムが使われていて、MSCommというものが使われています。この関連のプログラムが2003と2007では互換がないということはありますでしょうか?





どうぞ、よろしくお願い致します。

A 回答 (4件)

 きちんと作成してあればほとんどそのまま実行できます。


そのようにエラーが出たらそれを修正してアップデートしていきます。

 ご質問の場合は、そのエラーメッセージの通りなのでしょう。
個人的には、面倒でもかならず宣言しておいたほうがいいと思います。

・宣言していなくてエラーになる変数のところで色が反転して停止していると思いますので、宣言してください。
( または
・ツール → オプション → 編集タブ「変数の宣言を強制する」のチェックをはずす。)
    • good
    • 0
この回答へのお礼

回答頂きありがとうございます。


エラーにナル変数のところで色が反転する箇所というのが、

Private Sub UserForm_Initialize()

この中の


OPFlag = 10
If MSComm1.PortOpen = False Then
Call PortOpenCD
End If



この”MSComm1”というところが反転します。





また、

・ツール → オプション → 編集タブ「変数の宣言を強制する」のチェックをはずす。)


この部分ではチェックは外している状態です。


このMSComm1というのはどのように宣言したら良いのでしょうか?

お礼日時:2012/10/31 19:35

ANo.3です、



> 詳細なご指導頂きありがとうございます。いろいろと申し訳ないのですが、私がかなり素人なもので、このレジストリというのを修正する方法をあまり知らないのですが、やり方とか、何かレジストリの修正ツールとか教えて頂けませんでしょうか。

[スタート]→[ファイル名を指定して実行]と選択して出てくる画面に regedit と入力してください。
レジストリエディタが開きます。
なお、レジストリは変なところを変更すると、アプリケーションやOSの動作に不都合が出る可能性があります。
注意して操作してください。
    • good
    • 0
この回答へのお礼

回答頂きありがとうございます。

regeditで

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{648A5600-2C6E-101B-82B6-000000000014}
の、Compatibility Flagsの値を400 → 0に変更。

このように変更してみたのですが、やはり、マクロを有効にすると

コンパイルエラー:
変数が定義されていません。


とでて、

Private Sub UserForm_Initialize()で停止して

”MSComm1”が反転表示されている状態になる現象に変化がありません。

お礼日時:2012/11/04 18:38

Excel2007の場合、そのままではMSCOMMをUserFormに貼り付けられないので、その辺りに原因がありそう。



以下のレジストリをいじってみて下さい。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{648A5600-2C6E-101B-82B6-000000000014}
の、Compatibility Flagsの値を400 → 0に変更。
    • good
    • 0
この回答へのお礼

回答頂きありがとうございます。
詳細なご指導頂きありがとうございます。いろいろと申し訳ないのですが、私がかなり素人なもので、このレジストリというのを修正する方法をあまり知らないのですが、やり方とか、何かレジストリの修正ツールとか教えて頂けませんでしょうか。

どうぞ、よろしくお願い致します。

お礼日時:2012/11/02 18:44

そのPCには、MSCOMMがインストールされているのでしょうか?


通常、WindowsにはMSCOMMは含まれていません。
MSCOMMをインストールするには、VB6でMSCOMMを使用したプログラムのSetupを作成して、Setupでインストールする必要があります。
※あるいは、そのPCにVisual Studio 6.0 をインストールする。
    • good
    • 0
この回答へのお礼

回答頂きありがとうございます。

このMSCOMMについて何ですが、このように対処したつもりなのですが、問題かないか教えてもらえないでしょうか。


まず、エクセルのメニューバーから”開発”--->”Visual Basic”と進み、
Visual Basicのウィンドウが開いたら、メニューバーから”ツール”--->”参照設定”で参照設定のwindowで”参照”のコマンドボタンを押しました。

そして、\C\Windows\System32のフォルダ内にMscomm32.ocxファイルをさがしたのですが、このファイルがないため、このファイルを別のPCからもらって、同じフォルダ内にコピーペーストしました。

そしてこれを選択しました。

これで、”参照可能なライブラリファイル ファイル”の一覧の”Microsoft Comm Control 6.0”の行にチェックマークが付きました。



このようなやり方でMSCOMM(RS-232C関連のプログラム)をインクルードできたと思うのですが、やり方が間違っていますでしょうか?



なお、この設定をしてもプログラムを実行しようとすると、”コンパイルエラー:変数が定義されていません”と出てきてストップしてしまいます。

お礼日時:2012/10/31 19:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報