はじめまして。
誰か力をお貸しください。
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
宜しくお願いします。
>xlbook.SaveAs App.Path & "xxx.xls"
が
xlbook.SaveAs App.Path & "\xxx.xls"
の間違いでは?
>Set xlbook = xlapp.Workbooks.Open("xxx.txt")
のtxtは単純なミスとして、マクロの登録はされていました。
matsuさん、レスありがとうございます。
>xlbook.SaveAs App.Path & "\xxx.xls"の間違いでは?
すいません。ファイルパスが結構長いため省略した時に
¥が抜けていました。実際のコードでは¥が入っています。
また、ファイルは作成されるのですが、マクロが登録されて
いないのが問題です。
質問が分かり辛くてすいません。
>>Set xlbook = xlapp.Workbooks.Open("xxx.txt")
>のtxtは単純なミスとして、マクロの登録はされていました。
こちらも説明が足りなかったのですが、既存のEXCELファイルと
書きましたが、VB上で作成したUNICODEのtxtファイル(CSV形式)を
読み込んでEXCELファイル(xls)にすると同時にマクロの登録をしたいのが
詳細です。
「マクロの登録はされていました。」との事ですが、XLS形式のファイルを
読み込んだ場合はマクロが登録されると言うことでしょうか?
とりあえず、一度その方法で確かめてみます。
matsuさん、アドバイスありがとうございました。
昨日、いくらやっても登録されなかったマクロですが、
matsuさんが登録できたとの事で、もう一度試したところ、
何故かプログラムを一切いじっていないのにマクロが登録される
ようになりました。
昨日は同時にVBEやEXCELも開いていたので、動作しなかったの
でしょうか・・・?
とりあえず、この状態でもう少しいじってみたいと思います。
当初の目的は達成されたので、ひとまず解決とさせて頂きます。
matsuさん、ありがとうございました。
また、何かありましたらお願いします。
解決したようですが。
>「マクロの登録はされていました。」との事ですが、XLS形式のファイルを
>読み込んだ場合はマクロが登録されると言うことでしょうか?
その通りです。
CSVファイルを開いた場合はマクロが登録されていませんでしたが、
xlbook.SaveAs App.Path & "\xxxx.xls", XlFileFormat.xlWorkbookNormal
としたら登録されていました。
Excel 2000です。
ご丁寧にありがとうございます。
そうなんですね。
こちらでもその後いじって気が付いたのですが、
どうも保存の仕方みたいでした。
最初、テキストファイルをEXCELに読み込むせいか、
VB上でxlbookの保存をしても、xlbookを閉じる時に
ファイルの保存を促されていたのですが、matsuさんの
記述の通り、保存形式をちゃんと指定した所、
一回の保存だけで済むようになり、マクロも登録されて
いました。
もう少し、色々調べてから質問できればよかったのですが、
時間がなかったので・・・すいません。助かりました。
また何かあれば教えてください。宜しくお願いします。