tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
VB2010からExcel上のデータをコピー&ペースト(VB.NET) ( No.4 )  [親スレッドへ]
日時: 2012/06/06 18:54
名前: VBレスキュー(花ちゃん)

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:Excel VBA,Excel.Range,マクロ,エクセル,コピー,ペースト,貼り付け    *
***********************************************************************************
'===================================================================================================
'投 稿 日:2012.05.05
'投 稿 者:VBレスキュー(花ちゃん)
'タイトル:VB2010 から Excel 上のデータをコピー&ペースト
'========1=========2=========3=========4=========5=========6=========7=========8=========9=========0

Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
   Call ExcelOpen("", "")     '新規ファイルをオープンして、Excel を起動
   '========================== Excel 上でコピー&ペースト =======================

   '-------------------- マクロの記録を取った場合 ----------------------------
   'ActiveCell.FormulaR1C1 = "あいうえお"
   'Range("A1").Select
   'Selection.Copy
   'Range("D1").Select
   'ActiveSheet.Paste
   '--------------------------------------------------------------------------
   '上記マクロは、下記のように書き換えます。
   'ActiveCell とか Selection とか ActiveSheet のような不特定のオブジェクトを
   '指しているものは、VB からは使用しないようにして下さい。(トラブルの元になります。)
   Dim xlRange As Excel.Range
   xlRange = xlSheet.Range("A1")
   xlRange.Value = "あいうえお"
   '指定のセルのデータをクリップボードへコピーする
   xlRange.Copy()
   '確認のために、1秒間表示しておく
   System.Threading.Thread.Sleep(1000)

   'クリップボードの内容を指定のシートの指定のセルに貼り付ける
   'xlSheet.Paste(xlSheet.Range("D1"))     'これは、間違った使用例です。(解放されなくなる)
   '確認のために、1秒間表示しておく
   'System.Threading.Thread.Sleep(1000)

   '正しくは、
   Dim xlPasteRange As Excel.Range = xlSheet.Range("D2")
   xlSheet.Paste(xlPasteRange)
   MRComObject(xlPasteRange)
   'のように一度変数に受けて下さい。
   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



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