tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
VB2010 から Excel のシートの指定の範囲のデータを取得(VB.NET) ( No.26 )  [親スレッドへ]
日時: 2012/06/06 19:24
名前: VBレスキュー(花ちゃん)

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:Excel VBA,Excel2010,クリップボード,セルの個数を取得,1次元配列に確保*
***********************************************************************************
'===================================================================================================
'投 稿 日:2012.05.06
'投 稿 者:VBレスキュー(花ちゃん)
'タイトル:VB2010 から Excel のシートの指定の範囲のデータを取得
'========1=========2=========3=========4=========5=========6=========7=========8=========9=========0

Private Sub Button24_Click(sender As System.Object, e As System.EventArgs) Handles Button24.Click
   Call ExcelOpen("", "")     '新規ファイルをオープンして、Excel を起動
   '===================== シートの指定の範囲のデータを取得 ======================
   '--------------------------------------------------------------------------
   '仮データの入力
   Dim xlRange As Excel.Range = Nothing
   For r As Integer = 1 To 20
      For c As Integer = 1 To 10
         xlRange = xlSheet.Range(R1ToA1(r, c), R1ToA1(r, c))
         xlRange.Value = Str(r) & "," & Str(c)
         MRComObject(xlRange)
      Next
   Next

   'データを取得したい範囲を設定
   xlRange = xlSheet.Range("B3:D10")
   'クリップボードにコピーする場合
   xlRange.Copy()
   'Count プロパティでセルの個数を取得
   Dim xlCells As Excel.Range
   xlCells = xlRange.Cells
   Dim n As Integer = xlCells.Count
   MRComObject(xlCells)

   Dim dat(n - 1) As String
   Dim no As Integer = -1
   Dim xlElement As Excel.Range = Nothing
   For Each xlElement In xlRange
      no += 1
      '指定範囲内のセルの値を1次元配列に確保
      dat(no) = xlElement.Value.ToString()
      MRComObject(xlElement)
   Next
   MRComObject(xlRange)

   '取得したデータを表示
   'VB のリストボックスに表示する場合
   ListBox1.Items.AddRange(dat)

   'Debug.Print で表示
   For i As Integer = 0 To n - 1
      Debug.Print(dat(i))
   Next

   'VB のテキストボックスに表示
   Dim iData As IDataObject = Clipboard.GetDataObject()
   'クリップボードにテキストデータがあれば
   If iData.GetDataPresent(DataFormats.Text) Then
      TextBox1.Text = DirectCast(iData.GetData(DataFormats.UnicodeText), String)
   End If
   '確認のために、2秒間表示しておく
   System.Threading.Thread.Sleep(2000)

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



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