2012-01-17
VB.netからExcelファイルとか出力してみる。
なんてことないが、しらべてみると断片的な情報が多いのでまとめてみた。
・今回やってみたいこと
・クライアントPCにインストールされているExcelをつかって伝票みたいなものを自動出力したい
・クライアントPCにインストールされているExcelは2000から2010までとざっくばらん
・あらかじめ用意したテンプレートに出力して、バージョンに関係なく読めるようにExcel互換ファイル(xls)で出力する。
Excelのバージョンが統一されていれば、参照設定とかでいっぱい情報はあるのだけれどもこの不景気でそんな都合の良いはなしはないので、却下。
なので・・・今回、事前バインディングじゃダメ・・
実行時バインディングしましょう。
Dim objWorkBook As Object
Dim objExcel As Object
Dim fname As String
Try
'CreateObjectでExcelObjectを実行時バインディングする
objExcel = CreateObject("Excel.Application")
objExcel.visible = True
objWorkBook = objExcel.Workbooks.open("テンプレートファイルの保存先パス")
With objExcel.sheets(1)
'hoge = にセルの番号、"ほげほげ" = に入れたいもの
.Cells(hoge, hoge) = "ほげほげ"
End With
Select Case objExcel.Version
Case "12.0", "14.0"
'ファイルに保存 Excel2007,Excel2010の場合は互換方式にて保存
objWorkBook.SaveAs(fname, 56)
Case Else
objWorkBook.SaveAs(fname)
End Select
'保存時の問合せのダイアログを非表示に設定
objExcel.DisplayAlerts = True
Catch ex As Exception
MsgBox("エクセルがインストールされていない、もしくは、伝票生成中にエラーが発生しました。")
Finally
If Not IsNothing(objWorkBook) Then
objWorkBook.Close(False) 'ファイルを閉じる
Marshal.ReleaseComObject(objWorkBook) 'オブジェクト参照を解放
objWorkBook = Nothing 'オブジェクト解放
End If
If Not IsNothing(objWorkBook) Then
Marshal.ReleaseComObject(objWorkBook) 'オブジェクト参照を解放
objWorkBook = Nothing 'オブジェクト解放
End If
If Not IsNothing(objExcel) Then
objExcel.Quit() 'EXCELを閉じる
Marshal.ReleaseComObject(objExcel) 'オブジェクト参照を解放
objExcel = Nothing 'オブジェクト解放
End If
System.GC.Collect() 'オブジェクトを確実に削除
End Try
- 2 http://www.google.co.jp/url?sa=t&rct=j&q=おぼえがきラボ&source=web&cd=1&ved=0CB8QFjAA&url=http://d.hatena.ne.jp/yohsui/&ei=-gIWT4OeMK2ViAfqi5FD&usg=AFQjCNGRKkwD6jU4l2m8lpba4y_wYp6vzg
- 1 http://d.hatena.ne.jp/keyword/Adobe Systems
- 1 http://d.hatena.ne.jp/keyword/VB.NET
- 1 http://d.hatena.ne.jp/yohsui
- 1 http://k.hatena.ne.jp/keywordblog/PhotoShop?mode=rss
- 1 http://pipes.yahoo.com/pipes/pipe.info?_id=VPw6npu13RGKo15vBRNMsA
- 1 http://search.yahoo.co.jp/search?p=vb.net+excel出力+excelなし&aq=-1&oq=&ei=UTF-8&fr=chr-greentree_gc&type=827316&x=wrt
- 1 http://www.google.co.jp/search?q=vb.net+excel+出力&hl=ja&gbv=2&prmd=ivns&ei=P2oXT_uKAYKkiAff7-TkAw&start=50&sa=N
- 1 http://www.google.co.jp/url?sa=t&rct=j&q=VB.Net+Excel+ファイル 出力&source=web&cd=7&ved=0CHMQFjAG&url=http://d.hatena.ne.jp/yohsui/20120117/1326815351&ei=3JAXT7mgLob6mAWNnsHGAw&usg=AFQjCNG487-H
- 1 http://www.google.co.jp/url?sa=t&rct=j&q=vb6+excel2010+createobject+篋????&source=web&cd=10&ved=0CGEQFjAJ&url=http://d.hatena.ne.jp/yohsui/20120117/1326815351&ei=q2MXT9bUKqH-mAWJ4Mi9Aw&usg=AFQjCNG487-H-bdFbX1qJPfx5WaxUH-sbw