|
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=23850;id=excelで、投稿して解決したと思ったのですが、ダメでした。
処理方法を次のように変えました。
コピーされる側から、コピー元のブックを開いて、コピー元の1つのシートを
指定して、シートを追加後、コピー元のブックを閉じるというものです。
マクロは、次のとおりなんですがインデックスが、有効範囲にないエラーになります。
また、オープン時ファイルがない旨のエラーになります。
Sub シートの追加()
Dim Bookname As String
Dim I As Long, j As Long
Dim Shname As String
With ThisWorkbook.Worksheets("Menu")
コピーされる側です。
For j = 4 To 10 Step 3
For I = 5 To 29 Step 2
If .Cells(I, j).Value <> "" And .Cells(I, j - 1).Value <> "" Then
Shname = Trim(.Cells(I, j - 1).Value)
Exit For
End If
Next I
Next j
End With
Bookname = "設備点検.xls"
コピー元です。
Fname = Range("O29").Value & Bookname
MsgBox Fname
C:\FreeSoft\000EXCEL\設備点検.xlsと表示されます。
'Workbooks.Open Filename:=Fname
これでオープンするとファイル見つからないとなります。
下では、正常にオープンできるのになぜなんでしょうか?
Workbooks.Open Filename:="C:\FreeSoft\000EXCEL\設備点検.xls"
MsgBox Workbooks(Bookname).Name
設備点検.xlsと表示されます
MsgBox Shname
指定のシート名が表示されます
MsgBox ThisWorkbook.Name
コピーされる側のブック名を表示がされます
Workbooks(Bookname).Worksheets(Shname).Copy After:=ThisWorkbook.Sheets("Menu")
ここでインデクスエラーとなるのですが、なぜなんでしょうか?
Workbooks(Bookname).Saved = True
Workbooks(Bookname).Close
End Sub
以上、よろしくお願いします。
|
|