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

解決


VB12年  2009-08-04 23:47:37  No: 101910

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

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-05 02:20:25  No: 101911

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

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

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


VB12年  2009-08-05 18:23:59  No: 101912

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 18:47:22  No: 101913

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

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

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


matsu  2009-08-05 18:52:53  No: 101914

解決したようですが。

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

その通りです。

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

Excel 2000です。


VB12年  2009-08-07 20:00:45  No: 101915

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加