- 日時: 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
|