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