- ベストアンサー
ExcelのVBAでオブジェクトではなくセルとしてコピーする方法
- ExcelのVBAを使用して、オブジェクトではなくセルとしてコピーする方法について質問があります。
- テンプレート的なファイルを使用して、作業ファイルの作業シートを初期化するためにセルをコピーすることを試みています。
- 現在、オブジェクトとして貼り付けられてしまっているため、セルとしてコピーする方法を教えていただきたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
下記は自Bookから新規Bookへのコピペの場合です。 煮るなと焼くなと応用してください。 煮ても焼いても喰えなかったら・・・生ゴミの日にでも。 投稿用にタブを全角スペースに変換しています。 '新規ブックに指定範囲コピー Sub cells_copy() Dim xlsApp As Excel.Application Dim xlsBookFrom As Excel.Workbook Dim xlsBookTo As Excel.Workbook Set xlsApp = CreateObject("Excel.Application") Set xlsBookFrom = xlsApp.Workbooks.Open(ThisWorkbook.FullName, ReadOnly:=True) Set xlsBookTo = xlsApp.Workbooks.Add xlsBookFrom.Worksheets("Sheet1").Range("A1:D4").Copy _ Destination:=xlsBookTo.Worksheets("Sheet2").Range("E5") xlsBookTo.Close SaveChanges:=True, Filename:="c:\test.xls" Set xlsBookTo = Nothing xlsBookFrom.Close SaveChanges:=False: Set xlsBookFrom = Nothing Set xlsApp = Nothing End Sub
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
不思議なコードです。VB.Netから写し込んだものだとは思いますし、Excel VBAのコードではありません。ただ、元がExcelを開いているのだから、Excel VBAで、 CreateObject("Excel.Application")という必要があるのでしょうか?オートメーションに換えてもよいですが、その場合は、GetObject を加えたほうがよいかと思います。 以下は、基本的なエラー処理は施してあります。既存のブックのマクロです。 それから、任意のシート、つまり、ActiveSheet に貼り付けるようになっていますから、違う場合は、切り替えてください。VB.Net でCOM参照設定の場合は、別途質問してください。一般の参照設定なら、オートメーションに替えるだけでよいです。 '// Sub TestMacro1() Dim objXl As Object Dim xlSheet As Object Dim acSheet As Object Const mPATH As String = "C:\" 'パス Const FN As String = "Template.xls" On Error GoTo ErrHandler If StrComp(ActiveWorkbook.Name, FN, 1) = 0 Then Exit Sub Set acSheet = ActiveWorkbook.ActiveSheet 'ActiveSheet 'Set acSheet =ActiveWorkbook.Worksheets ("作業シート") Set objXl = Workbooks(FN) Application.Goto acSheet.Cells(1, 1) Set xlSheet = objXl.Worksheets("テンプレートシート") Application.ScreenUpdating = False xlSheet.Rows("1:10").Copy acSheet.Cells(1, 1) objXl.Close False Application.ScreenUpdating = True Set objXl = Nothing Set acSheet = Nothing Exit Sub ErrHandler: If Err.Number = 9 Then If Dir(mPATH & FN) <> "" Then Set objXl = Workbooks.Open(mPATH & FN) Resume Next Else MsgBox "ファイルが見つかりません。", 48 End If End If End Sub