VB.NETから既存のExcelファイルを起動し、設定してあるテキストボックスへ値を設定したいのですが、方法が分かりません。
いろいろなところでも調べてみたのですが、それらしい方法を見つけることができませんでした。
ご存知の方、教えてください。
よろしくお願いいたします。
以前、MSNのサイトにリンクがあったのを覚えていました。
下記サンプルの中に、値の設定方法も記述されております。
http://anetm.com/dev/tools/vbdotnet/112217.htm
いなさん、ありがとうございます!
参考にさせていただきます。
非常にあやふやに覚えている情報ですが、
.NETはCOMに関して解放処理が必要だったような気がします。
…と思ったらじゃんぬねっとさんのサイトにサンプルありました。
あ、ホントだ^^;
すみません。
教えていただいたサンプルをみたのですが、ちょっと違いました。
私の説明が至らなく申し訳ありません。
Excelシートに設定してあるテキストボックスや四角形に
文字を表示させたいのです。
また、ヘッダーとして印刷物に出力したいので、
複数ページに設定が必要となると思うのですが・・・。
VBAを中心としたサイトで調べればすぐに出てきそうな質問ですね。
とりあえず、Excel 上の操作は Excel の機能に[マクロの記録]という
ものが存在しますので、それを利用して調べて下さい。使用方法も
記録されたコマンドの説明もすべて Excel のヘルプになります。
>とりあえず、Excel 上の操作は Excel の機能に[マクロの記録]という
ものが存在しますので、それを利用して調べて下さい。使用方法も
記録されたコマンドの説明もすべて Excel のヘルプになります。
Excelのマクロで実行するのではなく、VB.NETで編集したいと考えています。
やはり、Excelのマクロを使った方法しかないでしょうか??
>Excelのマクロで実行するのではなく、VB.NETで編集したいと考えています。
>やはり、Excelのマクロを使った方法しかないでしょうか??
そのマクロで作成されたコードをヒントにしてみては?という意味だと思いますが。。。
>やはり、Excelのマクロを使った方法しかないでしょうか??
いやいや(^^;)[VB.NET]側でエクセルを操作したことがあるなら、
そのコマンドが[VBA]と同じだと分かりますよね?([VBA]も知って
ないと無理か(汗))
[VB.NET]で Excel の参照設定をしましたよね?あれは、[VBA]
のコマンドを[VB.NET]側で使う手続きだと思ってください。
[VB.NET]で実行した命令は、実際は[VBA]と同じ処理が行われます。
ですから、Excel でマクロを記録して参考にして下さい。
>[VB.NET]で実行した命令は、実際は[VBA]と同じ処理が行われます。
[VB.NET]から Excel のオブジェクトへ出した命令は、実際は[Excel VBA]と
同じ処理が呼び出されて実行されます。
…の方が誤解の無い表現ですかね?訂正します。
・ExcelはExcelを操作できるインタフェイス群[Excel]を公開している。
・ExcelVBAでは(自分の)Excelの[Excel]を使って操作している。
・VBでは(他の)Excelの[Excel]を使って操作している。
要はExcelを操作するためには、(何らかの)Excelの[Excel]を使う必要があって、
今回は偶々(既存のExcelファイルから作られた)Excelの[Excel]を操作することになっただけ。
かな…?
※余計分かりづらい…
皆さま、ありがとうございます。
皆さまから頂きましたアドバイスを参考にさせて頂きました。
現在、処理を作っている最中ではありますが、途中経過を・・・。
VB.NETからテキストボックスの編集は行えていません。
やはり、VBAの機能で使えないコマンド(SELECTION等)があるためです。
その代わりになるものを現在探しています。
その辺を含めてエクセル操作は基本的な部分で覚えることが結構あります。
毎度お世話になってる花ちゃんさんのサイトを紹介しておきます。
http://www.bcap.co.jp/hanafusa/
エクセル関係の注意事項がよくまとめられています。
http://www.bcap.co.jp/hanafusa/dotnet/Excelflm.htm
Selection や Active〜 といったオブジェクトは使えないわけでは
ないですが、使わない方向でプログラムします。過去ログ検索
『Selection』は思いつきませんでしたか?掲示板を活用して下さい。
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200504/05040068.txt
Object 型など曖昧なデータ型も極力使わないようにします。
どのテキストボックスが使われているのでしょうか。
Excel の「図形描画」ツールバーにあるテキストボックスの事なら、
T = ワークシート.TextBoxes(1)
T.Text = "新しい値"
System.Runtime.InteropServices.Marshal.ReleaseComObject(T)
という感じですね。
(Option Strict On の場合は、DirectCast も必要になります)
「コントロール ツールボックス」ツールバーにあるテキストボックスなら、
O = ワークシート.OLEObjects(1)
X = O.object
X.Value = "新しい値"
System.Runtime.InteropServices.Marshal.ReleaseComObject(X)
System.Runtime.InteropServices.Marshal.ReleaseComObject(O)
という感じでいけるかと。
どうもこちらで続けたい模様ですね
http://www2.moug.net/bbs/program/20051118000001.htm
解決しました。
アドバイスくださった皆様、ありがとうございました。
ツイート | ![]() |