Dim moto '←元データ "aget.xls" Dim saki '←転記先 "記入用.xls" Workbooks.Open Filename:="C:\Users\NORIAKI\Desktop\sample\記入済ファイル置き場a" & "\" & "aget.xls" For moto = 2 To 7 If Workbooks("aget.xls").WorkbooksSheets("歳入").Range("A" & moto).Value <> "" Then '←"オブジェクトは、このプロパティまたはメソッドをサポートしていません。" For saki = 2 To 51 If Workbooks("記入用.xls").WorkbooksSheets("歳入").Range("A" & saki).Value = Workbooks("aget.xls").WorkbooksSheets("歳入").Range("A" & moto).Value Then Workbooks("記入用.xls").WorkbooksSheets("歳入").Range("E" & saki).Value = Workbooks("aget.xls").WorkbooksSheets("歳入").Range("E" & moto).Value Exit For End If Next Else Exit For End If Next
For moto = 2 To 4 '←行数(元データ) If Workbooks("aget.xls").WorkbooksSheets("歳出").Range("A" & moto).Value <> "" Then For saki = 2 To 41 '←行数(転記先) If Workbooks("記入用.xls").WorkbooksSheets("歳出").Range("A" & saki).Value = Workbooks("aget.xls").WorkbooksSheets("歳出").Range("A" & moto).Value Then Workbooks("記入用.xls").WorkbooksSheets("歳出").Range("E" & saki).Value = Workbooks("aget.xls").WorkbooksSheets("歳出").Range("E" & moto).Value Exit For End If Next Else Exit For End If Next Workbooks("aget.xls").Close
受講生さんの投稿
(投稿ID: 3022)
"オブジェクトは、このプロパティまたはメソッドをサポートしていません。"というエラーが出ます。
この場合のエラーに対するマクロの記入例をご教授いただけませんでしょうか?
ご多忙中まことに恐れ入りますが、ご指導いただけますよう、よろしくお願い致します。
Sub file_get()
Dim moto '←元データ "aget.xls"
Dim saki '←転記先 "記入用.xls"
Workbooks.Open Filename:="C:\Users\NORIAKI\Desktop\sample\記入済ファイル置き場a" & "\" & "aget.xls"
For moto = 2 To 7
If Workbooks("aget.xls").WorkbooksSheets("歳入").Range("A" & moto).Value <> "" Then '←"オブジェクトは、このプロパティまたはメソッドをサポートしていません。"
For saki = 2 To 51
If Workbooks("記入用.xls").WorkbooksSheets("歳入").Range("A" & saki).Value = Workbooks("aget.xls").WorkbooksSheets("歳入").Range("A" & moto).Value Then
Workbooks("記入用.xls").WorkbooksSheets("歳入").Range("E" & saki).Value = Workbooks("aget.xls").WorkbooksSheets("歳入").Range("E" & moto).Value
Exit For
End If
Next
Else
Exit For
End If
Next
For moto = 2 To 4 '←行数(元データ)
If Workbooks("aget.xls").WorkbooksSheets("歳出").Range("A" & moto).Value <> "" Then
For saki = 2 To 41 '←行数(転記先)
If Workbooks("記入用.xls").WorkbooksSheets("歳出").Range("A" & saki).Value = Workbooks("aget.xls").WorkbooksSheets("歳出").Range("A" & moto).Value Then
Workbooks("記入用.xls").WorkbooksSheets("歳出").Range("E" & saki).Value = Workbooks("aget.xls").WorkbooksSheets("歳出").Range("E" & moto).Value
Exit For
End If
Next
Else
Exit For
End If
Next
Workbooks("aget.xls").Close
End Sub
小川慶一さんのコメント
(コメントID: 4484)
「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」というのは、オブジェクトが持っていないプロパティまたはメソッド(*メソッドについては発展編1で扱います)を無理やり指定しようとした時にでるエラーメッセージです。
例えば、以下のような綴間違いをしたときにも同じエラーメッセージが出ます。
お送りいただいたコードで実行時エラーで止まる箇所を吟味すると、
WorkbooksSheets("歳入") というのがありますが、これがおかしいです。
正しくは、
WorkSheets("歳入")
です。
Workbooks("aget.xls")
というオブジェクトには、
Worksheets("歳入")
というプロパティはありますが、
WorkbooksSheets("歳入")
というプロパティはありません。
こういうミスにすぐに気づくには、指差して、大きな声を出してコードを読みあげることです。
それから、こういうミスをしなくなるようになるには、複数シート間のデータやりとりをしているもっと簡単な演習問題が前にあるので、そっちで、何も見ないでも解けるようになるまで何度か練習されると良いと思います。