tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
VB2010からExcelのWorksheet上で行・列・セルの挿入及び削除(VB.NET) ( No.18 )  [親スレッドへ]
日時: 2012/06/06 19:14
名前: VBレスキュー(花ちゃん)

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:Excel VBA,Excel2010,行の挿入,列の挿入,セルの挿入,行の削除,列の削除  *
***********************************************************************************
'===================================================================================================
'投 稿 日:2012.05.06
'投 稿 者:VBレスキュー(花ちゃん)
'タイトル:VB2010 から Excel の Worksheet 上で行・列・セルの挿入及び削除
'========1=========2=========3=========4=========5=========6=========7=========8=========9=========0

Private Sub Button16_Click(sender As System.Object, e As System.EventArgs) Handles Button16.Click
   Call ExcelOpen("", "")     '新規ファイルをオープンして、Excel を起動
   '===================== 行・列・セルの挿入及び削除 ============================

   '-------------------- 下記のVB6.0用コードを移植 ---------------------------
   ' http://hanatyan.sakura.ne.jp/patio/read.cgi?mode=view2&f=128&no=11
   '--------------------------------------------------------------------------

   '何も記入していないと解らないので仮データを記入(R1ToA1 関数の使用例もかねて)
   Dim xlRange As Excel.Range = Nothing
   For c As Integer = 1 To 10
      For r As Integer = 1 To 20
         xlRange = xlSheet.Range(R1ToA1(r, c), R1ToA1(r, c))
         xlRange.Value = r + c
         MRComObject(xlRange)    'ここも直ちにデクリメントの事
      Next r
   Next c
   '動作確認の為に1秒間表示しておく
   System.Threading.Thread.Sleep(1000)

   '---------------------------------------------------------
   '4行目と5行の間に1行挿入します。
   Dim xlRows As Excel.Range
   Dim xlRow As Excel.Range
   xlRows = xlSheet.Rows
   xlRow = DirectCast(xlRows.Item(5), Excel.Range)
   xlRow.Insert()
   '動作確認の為に1秒間表示しておく
   System.Threading.Thread.Sleep(1000)
   xlRow.Insert(Shift:=Excel.XlInsertShiftDirection.xlShiftDown)  '上記と同じ
   MRComObject(xlRow)
   MRComObject(xlRows)
   '動作確認の為に1秒間表示しておく
   System.Threading.Thread.Sleep(1000)

   '4行目と5行の間に1行挿入します。
   '下記の場合は、"A1" のように指定するとセルの挿入になる
   xlRange = xlSheet.Range("5:5")
   xlRange.Insert()
   MRComObject(xlRange)
   '動作確認の為に1秒間表示しておく
   System.Threading.Thread.Sleep(1000)

   '下記の場合は、"B5" として行の挿入になる
   xlRange = xlSheet.Range("B5")
   Dim xlEntireRow As Excel.Range
   xlEntireRow = xlRange.EntireRow
   xlEntireRow.Insert()
   MRComObject(xlEntireRow)
   MRComObject(xlRange)
   '動作確認の為に1秒間表示しておく
   System.Threading.Thread.Sleep(1000)

   '------------------ 以上 4行挿入 ---------------------

   '4列目と5列の間に1列挿入します。
   Dim xlColumns As Excel.Range
   Dim xlColumn As Excel.Range
   xlColumns = xlSheet.Columns
   xlColumn = DirectCast(xlColumns.Item(5), Excel.Range)
   xlColumn.Insert()
   MRComObject(xlColumn)
   MRComObject(xlColumns)
   '動作確認の為に1秒間表示しておく
   System.Threading.Thread.Sleep(1000)

   xlRange = xlSheet.Range("E:E")
   xlRange.Insert()
   '動作確認の為に1秒間表示しておく
   System.Threading.Thread.Sleep(1000)

   Dim xlEntireColumn As Excel.Range
   xlEntireColumn = xlRange.EntireColumn
   xlEntireColumn.Insert()
   MRComObject(xlEntireColumn)
   MRComObject(xlRange)
   '動作確認の為に1秒間表示しておく
   System.Threading.Thread.Sleep(1000)

   '------------------ 以上 3列挿入 ---------------------

   'C列の5行目にセルを挿入します。
   xlRange = xlSheet.Range("C5")
   xlRange.Insert()
   MRComObject(xlRange)
   '動作確認の為に1秒間表示しておく
   System.Threading.Thread.Sleep(1000)

   'C列の3行目のセルを右に挿入します。
   xlRange = xlSheet.Range("C3")
   xlRange.Insert(Shift:=Excel.XlInsertShiftDirection.xlShiftToRight)
   MRComObject(xlRange)
   '動作確認の為に1秒間表示しておく
   System.Threading.Thread.Sleep(1000)

   '5行目を削除します。
   xlRows = xlSheet.Rows
   xlRow = DirectCast(xlRows.Item(5), Excel.Range)
   xlRow.Delete()
   MRComObject(xlRow)
   MRComObject(xlRows)
   '動作確認の為に1秒間表示しておく
   System.Threading.Thread.Sleep(1000)

   xlRange = xlSheet.Range("5:5")
   xlRange.Delete()
   MRComObject(xlRange)
   '動作確認の為に1秒間表示しておく
   System.Threading.Thread.Sleep(1000)

   xlRange = xlSheet.Range("A5")
   xlEntireRow = xlRange.EntireRow
   xlEntireRow.Delete()
   MRComObject(xlRange)
   MRComObject(xlEntireRow)
   '動作確認の為に1秒間表示しておく
   System.Threading.Thread.Sleep(1000)

   'C列の3行目のセルを左に削除します。
   xlRange = xlSheet.Range("C3")
   xlRange.Delete(Shift:=Excel.XlDeleteShiftDirection.xlShiftToLeft)
   MRComObject(xlRange)
   '動作確認の為に1秒間表示しておく
   System.Threading.Thread.Sleep(1000)

   '5列目を削除します。
   xlColumns = xlSheet.Columns
   xlColumn = DirectCast(xlColumns.Item(5), Excel.Range)
   xlColumn.Delete()
   MRComObject(xlColumn)
   MRComObject(xlColumns)
   '動作確認の為に1秒間表示しておく
   System.Threading.Thread.Sleep(1000)

   xlRange = xlSheet.Range("A5")
   xlEntireRow = xlRange.EntireRow
   xlEntireRow.Delete()
   MRComObject(xlRange)
   MRComObject(xlEntireRow)
   '動作確認の為に1秒間表示しておく
   System.Threading.Thread.Sleep(1000)

   xlRange = xlSheet.Range("E:E")
   xlRange.Delete()
   MRComObject(xlRange)
   '動作確認の為に1秒間表示しておく
   System.Threading.Thread.Sleep(1000)

   xlRange = xlSheet.Range("E:E")   '再度指定しないと削除済みなのでエラーとなります。
   xlEntireColumn = xlRange.EntireColumn
   xlEntireColumn.Delete()
   MRComObject(xlRange)
   MRComObject(xlEntireColumn)
   '動作確認の為に1秒間表示しておく
   System.Threading.Thread.Sleep(1000)

   'C列の5行目のセルを削除します。
   xlRange = xlSheet.Range("C5")
   xlRange.Delete()
   MRComObject(xlRange)
   '動作確認の為に1秒間表示しておく
   System.Threading.Thread.Sleep(1000)

   '=============================================================================
   'Excelファイルを上書き保存(True 又省略すれば)して終了処理を実行
   Call ExcelClose(IO.Path.GetFullPath(".\Test.xlsx"), False)  'False の場合保存しないで終了
   'Excel.EXE がタスクマネージャに残っていないか調査(実使用時は必要なし)
   Call ProcessCheck()
End Sub



 [スレッド一覧へ] [親スレッドへ]