ネットが遅くてイライラしてない!?

はじめて作ったのですが、他ブック間のコピーをしたいのですがエラーが出ます。まずはセル一個のコピーで試したのですが、その一歩目でつまづいております。
どこをどう直せばよいか教えてください。
5行目でコピー元のファイルを見に行こうとすると
「インデックスが有効範囲にありません。(Error 9)」がでます。
解決できないので、5行目以上進めませんが、他にも間違いや改善点の指摘があれば教えてください。

Dim 行目 As Integer
Dim 列目 As Integer
行目 = 1
列目 = 8
Windows("資機材搬入依頼表.xls").Activate
Sheets("仮設材").Range(Cells(行目, 列目)).Select
Selection.Copy
行目 = 2
列目 = 1
'ActiveSheets.Range(Cells(行目, 列目)).Select
Windows("搬入依頼表読込用.xlsx").Activate
Sheets("Sheet1").Range(Cells(行目, 列目)).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Windows("資機材搬入依頼表.xls").Activate
ActiveWindow.Close

※コンピューター関連は、全く経験がなく参考書やネット検索をしても理解ができません。
超初心者向けに何か良い方法、本やWEBページ等あれば教えてください。

A 回答 (1件)

5行目ということは、コピー元のExcelファイルをActivateするところでしょうか?


ファイルは開いてありますか?
このコードですと、ファイルが開いてないとエラーになります。

ActivateやSelectが不要な箇所もあるので、他の箇所も変更してみました。


Dim sakiBook As Workbook
Dim sakiSheet As Worksheet
Dim sakiCol As Integer
Dim sakiRow As Integer

Dim motoBook As Workbook
Dim motoSheet As Worksheet
Dim motoCol As Integer
Dim motoRow As Integer

'コピー先の設定
Set sakiBook = ActiveWorkbook
Set sakiSheet = sakiBook.Worksheets("Sheet1")

sakiCol = 1
sakiRow = 8

'コピー元の設定
'Set motoBook = Workbooks("資機材搬入依頼表.xls") '既に開いてある場合
Set motoBook = Workbooks.Open("C:\フォルダ名\資機材搬入依頼表.xls") 'これから開く場合
Set motoSheet = motoBook.Worksheets("仮設材")

motoCol = 2
motoRow = 1

'コピー処理
motoSheet.Cells(motoRow, motoCol).Copy
sakiSheet.Cells(sakiRow, sakiCol).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

'後処理
Set sakiSheet = Nothing
Set sakiBook = Nothing

Set motoSheet = Nothing
motoBook.Close
Set motoBook = Nothing


こんな感じでいかがでしょう。
    • good
    • 0
この回答へのお礼

ありがとうございます。
これを見て、そうだったのかと頷くことが出来ないほどのレベルにありますが、勉強させて頂きます。
行き詰っていたので、本当にありがとうございました。

お礼日時:2020/06/13 12:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング