オブジェクト変数を使ったマクロについての質問です。 2つのブック間でのデータコピペです。 下記述マクロの不具合点を教えて下さい。 最後の行で「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」エラーが発生します。 Sub object_sample() Dim myBook As Workbook Dim seeBook As Workbook Dim mySheet As Worksheet Dim seeSheet As Worksheet
Set myBook = Workbooks("Book1.xlsm") Set seeBook = Workbooks("Book2.xlsm") Set mySheet = Workbooks("Book1.xlsm").Worksheets("Sheet1") Set seeSheet = Workbooks("Book2.xlsm").Worksheets("Sheet2")
myBook.mySheet.Range("A1").Value = seeBook.seeSheet.Range("B2").valule End Sub
Sub object_sample()
Dim myBook As Workbook
Dim seeBook As Workbook
Dim mySheet As Worksheet
Dim seeSheet As Worksheet
Set myBook = Workbooks("Book1.xlsm")
Set seeBook = Workbooks("Book2.xlsm")
Set mySheet = Workbooks("Book1.xlsm").Worksheets("Sheet1")
Set seeSheet = Workbooks("Book2.xlsm").Worksheets("Sheet2")
' myBook.mySheet.Range("A1").Value = seeBook.seeSheet.Range("B2").valule
mySheet.Range("A1").Value = seeSheet.Range("B2").value
End Sub
小川慶一さん: 理解しやすい回答をありがとうございました。 スペルの間違いはさておきまして…(笑) そもそも、今回、当方が質問したマクロの Set myBook = Workbooks("Book1.xlsm") Set seeBook = Workbooks("Book2.xlsm") は、不要で、シートの変数宣言、設定のみで良かったということですね。 Sub object_sample() Dim mySheet As Worksheet Dim seeSheet As Worksheet
Set mySheet = Workbooks("Book1.xlsm").Worksheets("Sheet1") Set seeSheet = Workbooks("Book2.xlsm").Worksheets("Sheet2")
mySheet.Range("A1").Value = seeSheet.Range("B2").Value End Sub
Sub object_sample()
> Dim myBook As Workbook
> Dim seeBook As Workbook
> Dim mySheet As Worksheet
> Dim seeSheet As Worksheet
>
> Set myBook = Workbooks("Book1.xlsm")
> Set seeBook = Workbooks("Book2.xlsm")
> Set mySheet = Workbooks("Book1.xlsm").Worksheets("Sheet1")
> Set seeSheet = Workbooks("Book2.xlsm").Worksheets("Sheet2")
>
> ' myBook.mySheet.Range("A1").Value = seeBook.seeSheet.Range("B2").valule
> mySheet.Range("A1").Value = seeSheet.Range("B2").value
> End Sub
受講生さんの投稿
(投稿ID: 3569)
2つのブック間でのデータコピペです。
下記述マクロの不具合点を教えて下さい。
最後の行で「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」エラーが発生します。
Sub object_sample()
Dim myBook As Workbook
Dim seeBook As Workbook
Dim mySheet As Worksheet
Dim seeSheet As Worksheet
Set myBook = Workbooks("Book1.xlsm")
Set seeBook = Workbooks("Book2.xlsm")
Set mySheet = Workbooks("Book1.xlsm").Worksheets("Sheet1")
Set seeSheet = Workbooks("Book2.xlsm").Worksheets("Sheet2")
myBook.mySheet.Range("A1").Value = seeBook.seeSheet.Range("B2").valule
End Sub
小川慶一さんのコメント
(コメントID: 5047)
> オブジェクト変数を使ったマクロについての質問です。
> 2つのブック間でのデータコピペです。
> 下記述マクロの不具合点を教えて下さい。
> 最後の行で「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」エラーが発生します。
mySheetにしろseeSheetにしろ、シートに参照設定(講座で言うところのニックネームの設定)を済ませています。ですから、 mySheet, seeSheet というだけで、どのファイル内の、どのシートか?ということは示せています。
ついては、 myBook.mySheet という書き方はおかしいです。
と書かれてもすぐにはピンとこないかと思いますので...。以下、もう少し補足を。
いただいたマクロの
myBook を Workbooks("Book1.xlsm"),
seeBook を Workbooks("Book2.xlsm"),
mySheet を Workbooks("Book1.xlsm").Worksheets("Sheet1"),
seeSheet を Workbooks("Book2.xlsm").Worksheets("Sheet2")
と書き改めると(*)、以下のようになります。これを見れば、一目瞭然かと。
(*) さらにに書くと、いただいたマクロの最後の最後、「.valule」と書かれています。スペルが違います。「.Value」です。
大文字になっていないことからも、スペリングを間違えていたことが明確ですね。
ひきつづきがんばってください。
受講生さんのコメント
(コメントID: 5048)
理解しやすい回答をありがとうございました。
スペルの間違いはさておきまして…(笑)
そもそも、今回、当方が質問したマクロの
Set myBook = Workbooks("Book1.xlsm")
Set seeBook = Workbooks("Book2.xlsm")
は、不要で、シートの変数宣言、設定のみで良かったということですね。
Sub object_sample()
Dim mySheet As Worksheet
Dim seeSheet As Worksheet
Set mySheet = Workbooks("Book1.xlsm").Worksheets("Sheet1")
Set seeSheet = Workbooks("Book2.xlsm").Worksheets("Sheet2")
mySheet.Range("A1").Value = seeSheet.Range("B2").Value
End Sub
> 受講生 さん:
>
> > オブジェクト変数を使ったマクロについての質問です。
> > 2つのブック間でのデータコピペです。
> > 下記述マクロの不具合点を教えて下さい。
> > 最後の行で「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」エラーが発生します。
>
>
>
> mySheetにしろseeSheetにしろ、シートに参照設定(講座で言うところのニックネームの設定)を済ませています。ですから、 mySheet, seeSheet というだけで、どのファイル内の、どのシートか?ということは示せています。
>
> ついては、 myBook.mySheet という書き方はおかしいです。
>
> と書かれてもすぐにはピンとこないかと思いますので...。以下、もう少し補足を。
>
> いただいたマクロの
> myBook を Workbooks("Book1.xlsm"),
> seeBook を Workbooks("Book2.xlsm"),
> mySheet を Workbooks("Book1.xlsm").Worksheets("Sheet1"),
> seeSheet を Workbooks("Book2.xlsm").Worksheets("Sheet2")
> と書き改めると(*)、以下のようになります。これを見れば、一目瞭然かと。
>
>
>
> (*) さらにに書くと、いただいたマクロの最後の最後、「.valule」と書かれています。スペルが違います。「.Value」です。
> 大文字になっていないことからも、スペリングを間違えていたことが明確ですね。
>
> ひきつづきがんばってください。
小川慶一さんのコメント
(コメントID: 5049)
さっそくのフィードバック、ありがとうございます。
> > mySheetにしろseeSheetにしろ、シートに参照設定(講座で言うところのニックネームの設定)を済ませています。ですから、 mySheet, seeSheet というだけで、どのファイル内の、どのシートか?ということは示せています。
> そもそも、今回、当方が質問したマクロの
> Set myBook = Workbooks("Book1.xlsm")
> Set seeBook = Workbooks("Book2.xlsm")
> は、不要で、シートの変数宣言、設定のみで良かったということですね。
そういうことですね ^^;