ここから本文です

はじめまして。 マクロ初心者のものです。 前回の投稿に不具合があったので、再...

pec********さん

2019/7/1316:47:09

はじめまして。
マクロ初心者のものです。
前回の投稿に不具合があったので、再度投稿いたします。

下記のマクロにて、「オブジェクトがありません」
とエラーがでてしまうのですが、理由

がわかりません。

確認してみたところ
jについて何かしら不具合があることが分かりました。
内容としては、シートの最後の行に別ファイルのデータをコピーする部分です。↓

Dim j As Long
j = Cells(Rows.Count, 1).End(xlUp).Row.Offset(1, 0)

With Worksheets(2 * i 1)
Worksheets(2 * i 1).Cells.Copy ThisWorkbook.Worksheets(2).Cells(j, 1)

どうぞよろしくお願いいたします。


【式全体はこちら↓】

Sub Sample1()

Dim OpenFileName As String
OpenFileName = Application.GetOpenFilename("Microsoft Excel?u?b?N,*.xls?")
Workbooks.Open OpenFileName


Dim i As Integer
For i = 1 To ((Worksheets.Count) - 1) / 2

Dim j As Long
j = Cells(Rows.Count, 1).End(xlUp).Row.Offset(1, 0)

With Worksheets(2 * i 1)
Worksheets(2 * i 1).Cells.Copy ThisWorkbook.Worksheets(2).Cells(j, 1)


End With
Next i

ActiveWorkbook.Close

End Sub

閲覧数:
103
回答数:
1
お礼:
100枚

違反報告

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

kky********さん

2019/7/1405:46:20

この処理は二つのブックを使うので、ブックとシートをきちんと定義した方がいいです。
提示されたコードではjが選択してオープンした方のブックから取得しているのでうまくいきません。

With Worksheets(2 * i 1)
この書き方もエラーです。
処理内容の説明がないので想像ですが、奇数番目のシートだけ処理したいのでしょうか。

.Cells.Copy
これをするのは貼り付け先がA1セルでないとエラーです。

以上を直してみました。
シートの選択が違っているのであれば説明をお願いします。


Sub Sample()
Dim OpenFileName As String
Dim wb As Workbook
Dim sh As Worksheet
Dim i As Integer
Dim j As Long
OpenFileName = Application.GetOpenFilename("Microsoft Excel?u?b?N,*.xls?")
Application.ScreenUpdating = False
Set wb = Workbooks.Open(OpenFileName)
Set sh = ThisWorkbook.Worksheets(2)
For i = 1 To wb.Worksheets.Count Step 2
j = sh.Cells(Rows.Count, 1).End(xlUp).Row + 1
wb.Worksheets(i).UsedRange.Copy sh.Cells(j, 1)
Next i
wb.Close
Application.ScreenUpdating = True
End Sub


それから、もう一つの質問は同じ内容なら紛らわしいので消した方がいいと思います。

この回答は投票によってベストアンサーに選ばれました!

あわせて知りたい

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

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

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

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

閉じる

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

不適切な投稿でないことを報告しました。

閉じる