トップ回答者
VB2005でExcelを操作したいのですが

質問
-
よろしくお願いします。こちらで質問してよいのかわからなかったのですが違っていたらすみません。
開発環境はVB2005、データベースはAccess2003、Windowsアプリを開発しています。
表題のとおり、Vb2005からExcelの操作をしたいと思っているのですが、構想していることが実現できるものなのか知りたくて投稿しました。
データベース1 日付、氏名、商品コード、個数 の4列があります。
ユーザーの指定した月のデータだけを、指定したExcelファイルの(sheet1)に出力。Excel(sheet2)には、あらかじめ表を作成しておき、該当するセルに、氏名や商品コード、個数を自動的に表示したい。又は、直接(sheet2)に出力&表示したい。と思っています。だいたいのプロセスをお教えください。VB2005にExcelを参照設定してあります。
仮に、この構想でアプリが完成したら、このあらかじめ作成しておいたExcelファイルもユーザーのパソコンにインストールされるんでしょうか?
回答
-
momo-yo さん、こんにちは。
momo-yo さんからの引用 だいたいのプロセスをお教えください。 とのことですが、いくつか方法がありますので、まずは手法だけでも決定しないと説明のしようがないです。
- Office PIA を利用する
- VSTO を利用する
- Office PIA から Excel のマクロを呼び出して Excel 側で処理する
私の最近のお勧めは 3 です。
COM の参照カウントの解放が楽だという理由ですが。仮に、この構想でアプリが完成したら、このあらかじめ作成しておいたExcelファイルもユーザーのパソコンにインストールされるんでしょうか? コンピュータが人工知能を搭載しない限り、Excel ファイルが勝手に配置されることはないです。
インストーラでそういった設定にしておけば、配置されますが。 - Office PIA を利用する
-
momo-yo さん、こんにちは。
momo-yo さんからの引用 「COMの参照カウントの解放」という言葉を始めて知りました。何か難しそうなのですが、普通にExcelでマクロを作って、呼び出して実行する、という作業だけではだめだということでしょうか? マクロを使わずに VB 側で処理をしようとするとこういう目に遭います。
マクロに委譲するパターンであれば、これが、2 ネストくらいまで減ります。
アプリ完成の際のことですが、インストーラでの設定は難しいのでしょうか? インストーラにも因りますが、難しくはないです。
特定のExcelファイルを指定しておくのはあまり良い手法ではないのでしょうか? ソリューションとして必要なファイルなのですから、良い手法ではないとは言えないと思います。
momo-yo さん
momo-yo さんからの引用 | |
|
いや、Office PIA + VB.NET でも VBA でも、オブジェクト ツリーはほぼ一緒です。
VB.NET からの場合は、COM の参照カウントに関する手間が加わるというイメージで良いでしょう。
かずbooさんの書込みにもあるのですが、毎回データがかわるのでインストールをする必要がないかも、と思っています。
そうですね。
Excel はアプリケーション起動のコストは高いですが、Workbook 作成 (Workbooks.Add メソッド) のコストはそれほど高くありません。
デプロイ (配置) については、完成に近づいてから、いろいろ検証して決定するのも良いと思いますよ。
すべての返信
-
momo-yo さん、こんにちは。
momo-yo さんからの引用 だいたいのプロセスをお教えください。 とのことですが、いくつか方法がありますので、まずは手法だけでも決定しないと説明のしようがないです。
- Office PIA を利用する
- VSTO を利用する
- Office PIA から Excel のマクロを呼び出して Excel 側で処理する
私の最近のお勧めは 3 です。
COM の参照カウントの解放が楽だという理由ですが。仮に、この構想でアプリが完成したら、このあらかじめ作成しておいたExcelファイルもユーザーのパソコンにインストールされるんでしょうか? コンピュータが人工知能を搭載しない限り、Excel ファイルが勝手に配置されることはないです。
インストーラでそういった設定にしておけば、配置されますが。 - Office PIA を利用する
-
momo-yo さん、こんにちは。
momo-yo さんからの引用 「COMの参照カウントの解放」という言葉を始めて知りました。何か難しそうなのですが、普通にExcelでマクロを作って、呼び出して実行する、という作業だけではだめだということでしょうか? マクロを使わずに VB 側で処理をしようとするとこういう目に遭います。
マクロに委譲するパターンであれば、これが、2 ネストくらいまで減ります。
アプリ完成の際のことですが、インストーラでの設定は難しいのでしょうか? インストーラにも因りますが、難しくはないです。
特定のExcelファイルを指定しておくのはあまり良い手法ではないのでしょうか? ソリューションとして必要なファイルなのですから、良い手法ではないとは言えないと思います。
じゃんぬねっとさま、お返事ありがとうございました。
マクロを使えば、処理がしやすくなるんですね。投稿した後に色々調べてみました。VB.NETでも処理ができるけど、Excelオブジェクトの知識がかなり求められそうなのでマクロで処理させようと思います。
インストーラでの設定は、アプリができてから、わからない点を質問させていただきます。
かずbooさんの書込みにもあるのですが、毎回データがかわるのでインストールをする必要がないかも、と思っています。
色々と教えていただいてありがとうございました。何から手をつけてよいかわからなかったのでとても参考になりました。
momo-yo さん
momo-yo さんからの引用 | |
|
いや、Office PIA + VB.NET でも VBA でも、オブジェクト ツリーはほぼ一緒です。
VB.NET からの場合は、COM の参照カウントに関する手間が加わるというイメージで良いでしょう。
かずbooさんの書込みにもあるのですが、毎回データがかわるのでインストールをする必要がないかも、と思っています。
そうですね。
Excel はアプリケーション起動のコストは高いですが、Workbook 作成 (Workbooks.Add メソッド) のコストはそれほど高くありません。
デプロイ (配置) については、完成に近づいてから、いろいろ検証して決定するのも良いと思いますよ。
momo-yo さんからの引用 | |
|
私も Excelには結構苦労しましたが じゃんぬねっとさんのところをかなり参考にさせて頂いて今に至っております(他の面でも)
http://jeanne.wankuma.com/tips/
面白くなってきたと思いますのでがんばってください
私で分かる事なら いつでもアドバイスさせていただきます。