ここから本文です

Excel VBA でブック間のコピーペーストについてVBA初心者の為、うまくいかず困って...

chi385211さん

2010/5/1020:46:47

Excel VBA でブック間のコピーペーストについてVBA初心者の為、うまくいかず困っています。

操作は
1.VBAの入っているブックを開きマクロを実行。
2.貼り付け先のブックを開く。(対象ブックは可変です。)
3.VBAブックから、開いたブックにセルL31~L188とL200~210を値で貼り付ける。

Sub 貼り付け()
Dim op As String
op = Application.GetOpenFilename("Microsoft Excelブック,*.xls")
If op <> "False" Then
With Workbooks.Open(op)
ActiveWindow.ActiveSheet.Range("L31") = ThisWorkbook.Sheets("貼り付け").Range("L31:L188")
ActiveWindow.ActiveSheet.Range("L200") = ThisWorkbook.Sheets("貼り付け").Range("L200:L210")
End With
End If
End Sub

閲覧数:
2,719
回答数:
2

違反報告

ベストアンサーに選ばれた回答

xls88_1さん

2010/5/1021:22:14

値の代入なら

With Workbooks.Open(op)
.ActiveSheet.Range("L31:L188").Value = ThisWorkbook.Sheets("貼り付け").Range("L31:L188").Value
.ActiveSheet.Range("L200:L210").Value = ThisWorkbook.Sheets("貼り付け").Range("L200:L210").Value
End With

です。
With文の中のActiveWindowは要らないですね。
プロパティを省略してはいけません。
代入範囲はレイアウト(行数、列数)が等しくなければいけません。
Activesheetは随分と乱暴です。
シート名とかシートオブジェクト名とかシートのインデックスとか手掛かりはないのですか?

質問した人からのコメント

2010/5/10 22:23:57

降参 コピー以外は本やHPで調べまわって何とかなりましたが、コピーで詰まってしまい困っていました。非常に助かりましたありがとうございます。Activesheetの件も指摘をありがとうございます。ブック名は違いますがシート名は同じなので、Activesheetをシート名に替えました。本当にありがとうございます。

ベストアンサー以外の回答

1〜1件/1件中

vcx000xcvさん

2010/5/1021:05:13

初心者さんが書いたようには思えませんが、、、

Sub 貼り付け()
Dim op As String, wb As Workbook
op = Application.GetOpenFilename("Microsoft Excel ブック,*.xls")
If op <> "False" Then
Set wb = Workbooks.Open(op)
ThisWorkbook.Sheets("貼り付け").Range("L31:L188").Copy _
wb.ActiveSheet.Range("L31")
ThisWorkbook.Sheets("貼り付け").Range("L200:L210").Copy _
wb.ActiveSheet.Range("L200")
'wb.Save
'wb.Close
End If
End Sub

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。