VB2005 Excel操作 (遅延バインディングを使う方法)

Microsoft Excel Object Libraryを参照する事前バインディングではビルドしたPCと配布先のPCでExcelのバージョンが違うとエラーで動かない.
バージョンが違っても動くようにするには遅延バインディングを使う.

遅延バインディングでは,Option Strict Offにしなければならないが,
Option Strictはファイル単位で指定できるのでExcel操作のコードだけ別にしてそこだけOption Strict Offにするのが良い.
または,プロジェクトのプロパティー - [コンパイル]で「遅延バインディングです~」を「なし」に設定する.

    Public Sub Excel()
        'Excelを起動
        Dim oExcel As Object = CreateObject("Excel.Application")
        oExcel.Visible = True 'Excelを表示する場合
        Dim oBooks As Object = oExcel.Workbooks
        Dim FilePath As String = "c:\Test.xls"
        Dim oBook As Object = oBooks.open(FilePath) '既存ファイルを開く場合
        'Dim oBook As Object = oBooks.Add '新規作成の場合
        Dim oSheets As Object = oBook.Worksheets
        Dim oSheet As Object = oSheets.Item(1) 'Sheet1

        'Excelファイル操作
        Dim oRange As Object = oSheet.Cells(1, 1) 'A1セル
        oRange.value = "abc"
        System.Runtime.InteropServices.Marshal.FinalReleaseComObject(oRange) '解放(使うたびに解放する)
        oRange = oSheet.Cells(2, 1) 'A2セル
        oRange.value = "def"
        System.Runtime.InteropServices.Marshal.FinalReleaseComObject(oRange) '解放

        'Excelファイル保存
        oExcel.DisplayAlerts = False '保存しますか?を表示しない
        oSheet.SaveAs(FilePath) 'ファイル保存
        oExcel.DisplayAlerts = True '非表示を元に戻す

        'Excelオブジェクト解放
        'FinalReleaseComObject:参照を0にする(全て解放)
        'ReleaseComObject:参照を1つデクリメントする(1つ解放)
        System.Runtime.InteropServices.Marshal.FinalReleaseComObject(oSheet) '解放
        System.Runtime.InteropServices.Marshal.FinalReleaseComObject(oSheets) '解放
        oBook.Close(False) 'xlBookを閉じる
        System.Runtime.InteropServices.Marshal.FinalReleaseComObject(oBook) '解放
        System.Runtime.InteropServices.Marshal.FinalReleaseComObject(oBooks) '解放
        oExcel.Quit() 'Excelを閉じる
        System.Runtime.InteropServices.Marshal.FinalReleaseComObject(oExcel) '解放

    End Sub

注意:解放がうまくいかないと画面上でExcelが消えていてもプロセスが残ってしまうので,タスクマネージャの[プロセス]でEXCEL.EXEが残っていないことをリリース前によく確認すること.解放がうまくいかなくても普通はアプリを終了するとEXCEL.EXEも消えるが,そんなことでごまかさずに解放したらすぐにEXCEL.EXEも終了するようにすること.


http://nary.cocolog-nifty.com/blog/2009/11/vb2005-excel-2c.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值