2017-06-30 9 views
0

実行時エラー '2147が発生しています。私の人生のために、私は何が欠けているのか分かりません。対象のブックからすべてのシートをコピー

私がしようとしているのは、現在の仕事の中から選択したブックを開いて、すべてのシートにコピーすることです。

ありがとうございます。

Sub GetFile() 

Dim fNameAndPath As Variant 
Dim wb As Workbook, wb2 As Workbook 
Dim Ws    As Worksheet 

fNameAndPath = Application.GetOpenFilename(FileFilter:="Excel Files (*.XLS), *.XLS", Title:="Select File To Be Opened") 
If fNameAndPath = False Then Exit Sub 
Workbooks.Open Filename:=fNameAndPath 

Application.ScreenUpdating = False 

    Set wb = ActiveWorkbook 
    Set wb2 = Workbooks.Add(fNameAndPath) 

For Each Ws In wb2.Worksheets 
    Ws.Copy After:=wb.Sheets(wb.Sheets(1)) 
Next Ws 

Application.ScreenUpdating = True 

End Sub 
+0

エラーは何行発生していますか? – BruceWayne

+0

On line Ws.Copy After:= wb.Sheets(wb.Sheets(1)) – RyanH

答えて

0
Public Sub this() 
    Dim path As String, fileName As String 
    Dim sheet As Worksheet, thisWB As Workbook, thatWB As Workbook 
    Dim arr() As Variant 
    Dim rowC As Long, colC As Long 
    path = "C:\Users\dcoats\Desktop" & "\" 
    fileName = Dir(path & "*.xl??") 
    Set thisWB = ThisWorkbook 
    Do While Len(fileName) > 0 
     Set thatWB = Workbooks.Open(path & fileName, True, True) 
      For Each sheet In thatWB.Sheets 
       arr = sheet.UsedRange 
       rowC = sheet.UsedRange.Rows.Count 
       colC = sheet.UsedRange.Columns.Count 
       thisWB.Sheets.Add After:=Worksheets(Worksheets.Count) 
       thisWB.ActiveSheet.Range(thisWB.ActiveSheet.Cells(1, 1), thisWB.ActiveSheet.Cells(rowC, colC)).Value2 = arr 
      Next sheet 
     thatWB.Close False 
     fileName = Dir() 
    Loop 
End Sub 

これはあなたのために働く必要があります。ディレクトリ内のすべてのファイルをループしても慎重です(私は基本的にはコピー/貼り付けて残念です)。

+0

この行の後に同じエラーが表示されますthisWB.Sheets.Add After:Worksheet(Worksheets.Count) – RyanH

+0

「Protect Workbook 'thisWb'で有効になっていますか? – kulapo

+0

@RyanH私はそれを変更しなければならなくなった - 明らかにsomethingsが正しくありませんでした。 –

関連する問題