- 日時: 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 です。 それ以外のメッセージボックスが表示された場合は、コードを確認して下さい。 (この事は各サンプル共通で今後この事は記入しません。)
|