- ベストアンサー
VB2008でWordやExcelを制御する方法はある?
- VB2008を使ってWordやExcelを制御することは可能でしょうか?
- VB2008でWordやExcelを開き、マクロと同等の処理を行うことはできるのでしょうか?
- マクロを使って特定の文字を検索したり置換したりすることはできるのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
VBですね。VBでのOffice製品の扱いの基本は、昔も今も同じです。ただし、ExcelやWordのマクロ(VBA)はわかっているとします。 (1)ベタな方法 Excelを起動して、ファイル「B-1.xls」を開き、シート「S-1」のセル「A1」に、数値2を書き込むサンプルが以下です。 (a)デザイナーで、ExcelのClass Libralyを使えるように、参照設定する(プロジェクトの参照タブ) (b)実装コード Dim ExcelApp as New ExcelApplication'(Excel本体の起動) ExcelApp.Visible = True'(起動したExcelをモニターに表示) Dim Wbook as Excel.Workbook = _ ExcelApp.WorkBooks.Open("B-1のファイルパス") Dim Wsheet as Excel.Worksheet = _ Wbook.WorkSheets("S-1")'(シート「S-1」は既にあるとします) With Wsheet .cells(1, 1) = 2 End With (b)の宣言部に出てくる、ExcelApplication,Excel.Workbook,Excel.Worksheetという型は、(a)を行う事で使用可能になります。 (b)の宣言部とWithブロックに注目して下さい。cells(1, 1) = 2を行うために、Excelではこれらの部分は不要です。手動でExcelを起動した場合、これらの部分は人間が手動でVBAに与えた事になるので、ActiveSheetとして実現されます。さらにVBAでは、ActiveSheetも省略可能ですよね?。 さらに(b)の宣言部は、コントロールの動的生成と同じです。という事は、ExcelというApplicationは、「標準ではFormに載らない巨大なコントロールと同じだ」というのが、VBでのOffice製品の扱いです。 (2)プロジェクトテンプレートを使う方法 VB.NET以降では、特に(a)の部分を自動化する、新規プロジェクトが用意されています。この方法では開発中に、実際にExcelを見ながらの作業も出来ます。確かに便利ですが、ちょっと癖があるので、ヘルプで基本を押さえる必要はあります。 (3)#1さんの仰る、インスタンス解放 Excel終了時や異常終了時に、(1)のExcelAppなどで使った、メモリーを解放する必要がありますが、VB.NET以降では、これもGC.Collectでかなり簡単に行えます。もっと良い方法はありますが、簡単さで言うと、GC.Collectです。(2)だと恐らくこれも、自動でやってくれます。
その他の回答 (1)
- sonata1229
- ベストアンサー率36% (76/206)
>VB2008からWordを開いてマクロを使った場合と同等の処理を行うことは可能でしょうか VBだろうがC#だろうが可能です。 まぁCOMを使うのでインスタンス解放は必要になるので、注意しないといけません。 私はWORD操作はしたことないですが、PowerPointとExcelの制御はそれほど苦労しませんでした。 (まぁ上記で記載している解放で詰まったりしましたが、MSDNにも議論されてる内容なのでご自分で検索してください)
お礼
ありがとうございます。 MSDNで確認してみたいと思います。
お礼
わかりやすい説明、誠にありがとうございます。 大変勉強になります。