
現在、エクセル2003で作成したVBAがエクセル2007だと、マクロを有効にして起動させようとするとコンパイルエラーとなって動作しない現象が起きていて困っています。
どなたか、解決方法をご教授頂けないでしょうか?
・VBAを含んだファイルを開いて、マクロを有効にすると
”コンパイルエラー:変数が定義されていません” というエラーボックスが出てきてプログラムの矢印のポイントがPrivate Sub User Form_Initialize() のところを指したまま止まってしまう。
・このVBAはエクセルの表の書かれたデータをRS-232Cで出力するようなプログラムが使われていて、MSCommというものが使われています。この関連のプログラムが2003と2007では互換がないということはありますでしょうか?
どうぞ、よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
きちんと作成してあればほとんどそのまま実行できます。
そのようにエラーが出たらそれを修正してアップデートしていきます。
ご質問の場合は、そのエラーメッセージの通りなのでしょう。
個人的には、面倒でもかならず宣言しておいたほうがいいと思います。
・宣言していなくてエラーになる変数のところで色が反転して停止していると思いますので、宣言してください。
( または
・ツール → オプション → 編集タブ「変数の宣言を強制する」のチェックをはずす。)
回答頂きありがとうございます。
エラーにナル変数のところで色が反転する箇所というのが、
Private Sub UserForm_Initialize()
この中の
OPFlag = 10
If MSComm1.PortOpen = False Then
Call PortOpenCD
End If
この”MSComm1”というところが反転します。
また、
・ツール → オプション → 編集タブ「変数の宣言を強制する」のチェックをはずす。)
この部分ではチェックは外している状態です。
このMSComm1というのはどのように宣言したら良いのでしょうか?
No.4
- 回答日時:
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”が反転表示されている状態になる現象に変化がありません。
No.3
- 回答日時:
Excel2007の場合、そのままではMSCOMMをUserFormに貼り付けられないので、その辺りに原因がありそう。
以下のレジストリをいじってみて下さい。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{648A5600-2C6E-101B-82B6-000000000014}
の、Compatibility Flagsの値を400 → 0に変更。
回答頂きありがとうございます。
詳細なご指導頂きありがとうございます。いろいろと申し訳ないのですが、私がかなり素人なもので、このレジストリというのを修正する方法をあまり知らないのですが、やり方とか、何かレジストリの修正ツールとか教えて頂けませんでしょうか。
どうぞ、よろしくお願い致します。
No.2
- 回答日時:
その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関連のプログラム)をインクルードできたと思うのですが、やり方が間違っていますでしょうか?
なお、この設定をしてもプログラムを実行しようとすると、”コンパイルエラー:変数が定義されていません”と出てきてストップしてしまいます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでArrayListを使う為の「msc...
-
accessがインストールされてい...
-
発行元:不明???
-
Product Codeの変更法は?
-
■C#でブラウザを作成すること...
-
VB6(SP5)+OO4OでCreateObjectが...
-
ManagementClassが見つからない。
-
意味不明の実行時エラーで困っ...
-
「読み込み違反」が起きたとき...
-
Designer.vbは直接コードをいじ...
-
A4の2枚をA3の1枚にする編集方法?
-
アウトルックが起動しているか...
-
Using System.Drawing がうまく...
-
Windows PowerShellでC言語を実...
-
クリレポのプリンタ設定について
-
VBからプリンタに出力する時に...
-
オブジェクト(dll)のレジストリ...
-
PHPでPDFファイルの直接印刷
-
C#でSystem.IO.FileFormatEx
-
EXCELファイルの複数ダウンロー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでArrayListを使う為の「msc...
-
う~ん…。
-
VB.NETでSPREADの設定方法
-
VB6.0で作成したexeファイルが...
-
Product Codeの変更法は?
-
VB6(SP5)+OO4OでCreateObjectが...
-
VB6で作成したアプリを配布する...
-
発行元:不明???
-
accessがインストールされてい...
-
VB.NET で作られたソフト...
-
VB.NET(2017)で インストーラを...
-
VB5で依存ファイルが最新で...
-
[VB.net] ExcelへのQRコード出...
-
Excelがインストールされてない...
-
.NetFrameWork2.0を1.1にダウン...
-
ビルドした.exeファイルは.NE...
-
サーバーにインストールできな...
-
CUBASE AIのセットアップについ...
-
ExcelCreatorについて
-
今回、windows 環境下で動くデ...
おすすめ情報