フリーエンジニアである下っ端SEの備忘録と日記。日々是精進。 開発言語は主にC#。 開発技術が日々進化し続けている今日、取り残されまいとするも歳のせいか覚えが悪いSE。 ほったらかしですいません。

2012年02月29日

【VB.NET】Excelファイルの操作(行の削除)

PCにインストールされているExcelバージョン:Excel2003
Visual Studio 2010


1.参照の追加でCOMタブの、Microsoft Excel 11.0 Object Library を指定

2.ファイルにImport
  Imports Microsoft.Office.Interop
  Imports System.Runtime.InteropServices

3.
Dim _xslFile As String = "ファイルのフルパス"
Dim objExcel As Excel.Application = Nothing 'ExcelApplication
Dim objWorkBooks As Excel.Workbooks = Nothing 'ExcelWorkBooks
Dim objWorkBook As Excel.Workbook = Nothing 'ExcelWorkbook
Dim excelSheet As Excel.Worksheet = Nothing 'ExcelWorkSheet

Try
objExcel = New Excel.Application

'エクセルのウィンドウ最小化(最大化ならxlMaximized)
objExcel.WindowState = Excel.XlWindowState.xlMinimized

'エクセル非表示
objExcel.Visible = False

'確認メッセージを表示にする
objExcel.DisplayAlerts = False

objWorkBook = DirectCast((objExcel.Workbooks.Open( _
_xslFile, _
Type.Missing, _
Type.Missing, _
Type.Missing, _
Type.Missing, _
Type.Missing, _
Type.Missing, _
Type.Missing, _
Type.Missing, _
Type.Missing, _
Type.Missing, _
Type.Missing, _
Type.Missing, _
Type.Missing, _
Type.Missing)), _
Excel.Workbook)

'シートの選択(1枚目のシートを指定)
excelSheet = DirectCast(objWorkBook.Sheets(1), Excel.Worksheet)
excelSheet.Select()

'シートの1,2行目を削除する(Shift:=Excel.XlDirection.xlUpは、削除時に上方向にシフトする)
excelSheet.Range("A1:A2").EntireRow.Delete(Shift:=Excel.XlDirection.xlUp)


'2シート目
excelSheet = DirectCast(objWorkBook.Sheets(2), Excel.Worksheet)
excelSheet.Select()
excelSheet.Range("A1:A2").EntireRow.Delete(Shift:=Excel.XlDirection.xlUp)

'3シート目
excelSheet = DirectCast(objWorkBook.Sheets(3), Excel.Worksheet)
excelSheet.Select()
excelSheet.Range("A1:A2").EntireRow.Delete(Shift:=Excel.XlDirection.xlUp)

'★↑1~3シート目の1・2行目を削除しようとしています。
'★本当はもっとよいやり方があると思うのですが・・・ご存知の方ご教授ください。

'保存
excelSheet.SaveAs(_xslFile)

Catch ex As Exception
Throw ex
Finally
' EXCELの終了処理

If Not IsNothing(excelSheet) Then
Marshal.ReleaseComObject(excelSheet) 'オブジェクト参照を解放
excelSheet = Nothing 'オブジェクト解放
End If

If Not IsNothing(objWorkBook) Then
objWorkBook.Close(Type.Missing, Type.Missing, Type.Missing) 'ファイルを閉じる
Marshal.ReleaseComObject(objWorkBook) 'オブジェクト参照を解放
objWorkBook = Nothing 'オブジェクト解放
End If

If Not IsNothing(objWorkBooks) Then
Marshal.ReleaseComObject(objWorkBooks) 'オブジェクト参照を解放
objWorkBooks = Nothing 'オブジェクト解放
End If

If Not IsNothing(objExcel) Then
objExcel.Quit() 'EXCELを閉じる
Marshal.ReleaseComObject(objExcel) 'オブジェクト参照を解放
objExcel = Nothing 'オブジェクト解放
End If

'.net では、Nothingしてもメモリが開放されない
'強制的にガベージコレクタを起動することにより、objExcelを開放
System.GC.Collect()

End Try


タグ :Excel.NetVB.Net

同じカテゴリー(.Net全般)の記事画像
リリースモードで実行してデバッグする
同じカテゴリー(.Net全般)の記事
 【VB.NET】csvをDataTableに取り込む (2012-02-29 12:49)
 【VB.NET】Excel操作(DataTableに取込む) (2012-02-29 12:47)
 VS2005 インストールが固まる (2010-06-21 20:36)
 リリースモードで実行してデバッグする (2009-11-07 09:00)
 【VS2008】パッケージの読み込みエラー (2009-11-05 11:20)
 ドツボにハマって (2009-11-04 14:42)

Posted by ようすけ at 12:42│Comments(0).Net全般
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。