現在、エクセル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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでArrayListを使う為の「msc...
-
ランタイムのローカル使用
-
ビルドした.exeファイルは.NE...
-
VB.NETでSPREADの設定方法
-
VB6のアプリケーションの配布
-
Excelがインストールされてない...
-
VB6.0で作成したexeファイルが...
-
VB6で作成したアプリを配布する...
-
Product Codeの変更法は?
-
意味不明の実行時エラーで困っ...
-
「読み込み違反」が起きたとき...
-
vba 時間の引き算 例えば 15:00...
-
VB6.0 exe作成時に実行時エラー...
-
印刷ダイアログを表示させない方法
-
アウトルックが起動しているか...
-
VBAでOutlookを終了させたい Ex...
-
マクロで封筒を自動印刷
-
VB2008で0ページの印刷ジョブを...
-
C#VB、exeに埋め込んだexeの実行
-
出力するプリンタを指定したい。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでArrayListを使う為の「msc...
-
VB6(SP5)+OO4OでCreateObjectが...
-
[VB.net] ExcelへのQRコード出...
-
VB.NETでSPREADの設定方法
-
次のクラスは登録されていませ...
-
発行元:不明???
-
VB6で作成したアプリを配布する...
-
VB6.0で作成したexeファイルが...
-
accessがインストールされてい...
-
Product Codeの変更法は?
-
Excelがインストールされてない...
-
ListViewで文字化けしてしまい...
-
ビルドした.exeファイルは.NE...
-
アドインファイルの移動(再)
-
う~ん…。
-
VB.NET で作られたソフト...
-
.NETの標準ライブラリでExcelフ...
-
インストール不要アプリケーシ...
-
MSDNのセットアップ方法(ヘル...
-
VB6をWindows10にインストール...
おすすめ情報