tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
VB2010 から Excel へのデータの入力処理例(VB.NET) ( No.3 )  [親スレッドへ]
日時: 2012/06/09 15:38
名前: VBレスキュー(花ちゃん)

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:Excel VBA,Excel.Range,配列データ,エクセル,エクセルシートに入力    *
***********************************************************************************
'===================================================================================================
'投 稿 日:2012.05.05
'投 稿 者:VBレスキュー(花ちゃん)
'タイトル:VB2010 から Excel へのデータの入力処理及び起動・終了処理例
'========1=========2=========3=========4=========5=========6=========7=========8=========9=========0

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
   Call ExcelOpen("", "")     '新規ファイルをオープンして、Excel を起動
   '========================== データの入力処理 =================================

   '-------------------- マクロの記録を取った場合 ----------------------------
   'ActiveCell.FormulaR1C1 = "10"
   'Range("A2").Select()
   'ActiveCell.FormulaR1C1 = "20"
   'Range("A3").Select()
   'ActiveCell.FormulaR1C1 = "=SUM(R[-2]C:R[-1]C)"
   'Range("A4").Select()
   '--------------------------------------------------------------------------
   '1.単純なデータの入力と計算式の入力例
   Dim xlRange As Excel.Range
   Dim strDat(2, 0) As Object
   xlRange = xlSheet.Range("A1:A3")    'データの入力セル範囲
   strDat(0, 0) = "10"                 'データの作成
   strDat(1, 0) = "20"
   strDat(2, 0) = "=Sum(A1:A2)"        '計算式
   xlRange.Value = strDat              'セルへデータの入力
   MRComObject(xlRange)

   '上記の他、下記のリンク先のサンプルを参考にして下さい。
   'http://www.hanatyan.sakura.ne.jp/dotnet/Excel01.htm
   'http://www.hanatyan.sakura.ne.jp/dotnet/Excel07.htm

   '確認のために、1秒間表示しておく
   System.Threading.Thread.Sleep(1000)

   '--------------------------------------------------------------------------
   '2.2次元配列データの入力例
   Dim xlRange1 As Excel.Range = Nothing
   Dim dat(20, 4) As String
   For r As Integer = 0 To 20
      For c As Integer = 0 To 4
         dat(r, c) = Str(r + 1) & "," & Str(c + 1)
      Next
   Next
   xlRange1 = xlSheet.Range("A1:D20")
   xlRange1.Value = dat
   '確認のために、1秒間表示しておく
   System.Threading.Thread.Sleep(1000)
   '入力したデータを削除
   xlRange1.Value = ""
   MRComObject(xlRange1)
   '確認のために、1秒間表示しておく
   System.Threading.Thread.Sleep(1000)

   '--------------------------------------------------------------------------
   '3.1次元配列データの入力(For Each...Next ステートメントを使った)例
   Dim xlRange2 As Excel.Range = Nothing
   Dim xlElement As Excel.Range = Nothing
   Dim dat1(0) As String
   Dim n As Integer = -1
   '2次元配列データを1次元配列に格納
   For r As Integer = 1 To 20
      For c As Integer = 1 To 4
         n += 1
         ReDim Preserve dat1(n)
         dat1(n) = Str(r) & "," & Str(c)
      Next
   Next
   xlRange2 = xlSheet.Range("A1:D20")
   Dim no As Integer = -1
   'For Each...Next ステートメントを使って、1次元配列を2次元配列に表示
   For Each xlElement In xlRange2
      no += 1
      xlElement.Value = dat1(no)    '仮データを表示(順番にも注目)
      'xlElement の参照先が変更されたのだからデクリメントする必要がある
      MRComObject(xlElement)
   Next
   MRComObject(xlRange2)
   '確認のために、1秒間表示しておく
   System.Threading.Thread.Sleep(1000)

   '4.1次元配列データを指定位置に入力
   Dim xlRange3 As Excel.Range = Nothing
   xlRange3 = xlSheet.Range("G1:G20")
   no = -4
   For Each xlElement In xlRange3
      no += 4
      xlElement.Value = dat1(no)    '仮データを表示(順番にも注目)
      MRComObject(xlElement)        'ここも同様に直ちにデクリメントを
   Next
   MRComObject(xlRange3)
   '確認のために、1秒間表示しておく
   System.Threading.Thread.Sleep(1000)

   '=============================================================================
   'Excelファイルを上書き保存(True 又省略すれば)して終了処理を実行
   Call ExcelClose(IO.Path.GetFullPath(".\Test.xlsx"), False)  'False の場合保存しないで終了
   'Excel.EXE がタスクマネージャに残っていないか調査(実使用時は必要なし)
   Call ProcessCheck()  '正常に動作する事が確認できたらこの行は、コメントにして下さい。
End Sub


実行結果、【Excel.EXE は解放されました。】とメッセージボックスが表示されたら、OK です。
 それ以外のメッセージボックスが表示された場合は、コードを確認して下さい。
(この事は各サンプル共通で今後この事は記入しません。)



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