VBからEXCELVBAのChangeイベントを記述するには?

解決


VB12年  2009-08-04 14:47:37  No: 101910  IP: 192.*.*.*

はじめまして。
誰か力をお貸しください。

VBからEXCELのVBAを記述したいのですができません。
ここの過去レスを確認してVBEオブジェクトを使えばできそうな気が
したのですが、実行するとエラーはでないものの記述はされません。

最終的にやりたい事は下記です。
セル(1,1)に制限文字数を指定して、セル(2,1)に文字を
書いた時に制限文字数を超えたら文字色を赤にする。
上記マクロをVB上から既存のEXCELファイルに登録したい。

やり方があっているかわかりませんが、途中まで書いたコードは下記です。

Dim xlapp As NEW Excel.Application
Dim xlbook As Excel.Workbook
Dim ovbe As VBIDE
Dim omod As VBIDE.VBComponent
Dim ocode As VBIDE.CodeModule

Set xlbook = xlapp.Workbooks.Open("xxx.txt")
Set ovbe = xlapp.VBE
Set omod = ovbe.VBProjects(1).VBComponents(2)
Set ocode = omod.CodeModule
ocode.AddFromString "Private Sub Worksheet_Change(Byval Target As Range)" _
                    & vbCrLf & "Dim i As integer" & vbCrLf & "End Sub"
Set ocode = Nothing
Set omod = Nothing
Set ovbe = Nothing
xlbook.SaveAs App.Path & "xxx.xls"
xlbook.Close
xlapp.Quit
Set xlapp = Nothing

宜しくお願いします。

編集 削除
matsu  2009-08-04 17:20:25  No: 101911  IP: 192.*.*.*

>xlbook.SaveAs App.Path & "xxx.xls"

xlbook.SaveAs App.Path & "\xxx.xls"
の間違いでは?

>Set xlbook = xlapp.Workbooks.Open("xxx.txt")
のtxtは単純なミスとして、マクロの登録はされていました。

編集 削除
VB12年  2009-08-05 09:23:59  No: 101912  IP: 192.*.*.*

matsuさん、レスありがとうございます。

>xlbook.SaveAs App.Path & "\xxx.xls"の間違いでは?
すいません。ファイルパスが結構長いため省略した時に
¥が抜けていました。実際のコードでは¥が入っています。
また、ファイルは作成されるのですが、マクロが登録されて
いないのが問題です。
質問が分かり辛くてすいません。

>>Set xlbook = xlapp.Workbooks.Open("xxx.txt")
>のtxtは単純なミスとして、マクロの登録はされていました。
こちらも説明が足りなかったのですが、既存のEXCELファイルと
書きましたが、VB上で作成したUNICODEのtxtファイル(CSV形式)を
読み込んでEXCELファイル(xls)にすると同時にマクロの登録をしたいのが
詳細です。
「マクロの登録はされていました。」との事ですが、XLS形式のファイルを
読み込んだ場合はマクロが登録されると言うことでしょうか?
とりあえず、一度その方法で確かめてみます。

編集 削除
VB12年  2009-08-05 09:47:22  No: 101913  IP: 192.*.*.*

matsuさん、アドバイスありがとうございました。

昨日、いくらやっても登録されなかったマクロですが、
matsuさんが登録できたとの事で、もう一度試したところ、
何故かプログラムを一切いじっていないのにマクロが登録される
ようになりました。
昨日は同時にVBEやEXCELも開いていたので、動作しなかったの
でしょうか・・・?
とりあえず、この状態でもう少しいじってみたいと思います。
当初の目的は達成されたので、ひとまず解決とさせて頂きます。

matsuさん、ありがとうございました。
また、何かありましたらお願いします。

編集 削除
matsu  2009-08-05 09:52:53  No: 101914  IP: 192.*.*.*

解決したようですが。

>「マクロの登録はされていました。」との事ですが、XLS形式のファイルを
>読み込んだ場合はマクロが登録されると言うことでしょうか?

その通りです。

CSVファイルを開いた場合はマクロが登録されていませんでしたが、
xlbook.SaveAs App.Path & "\xxxx.xls", XlFileFormat.xlWorkbookNormal
としたら登録されていました。

Excel 2000です。

編集 削除
VB12年  2009-08-07 11:00:45  No: 101915  IP: 192.*.*.*

ご丁寧にありがとうございます。
そうなんですね。
こちらでもその後いじって気が付いたのですが、
どうも保存の仕方みたいでした。
最初、テキストファイルをEXCELに読み込むせいか、
VB上でxlbookの保存をしても、xlbookを閉じる時に
ファイルの保存を促されていたのですが、matsuさんの
記述の通り、保存形式をちゃんと指定した所、
一回の保存だけで済むようになり、マクロも登録されて
いました。
もう少し、色々調べてから質問できればよかったのですが、
時間がなかったので・・・すいません。助かりました。

また何かあれば教えてください。宜しくお願いします。

編集 削除