Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I am using this macro to merge 50+ workbooks with 1 sheet per wb, into one
workbook. I get this error message: Method 'Move' of object 'Sheets' failed. Can you help? Thanks... Sub CombineWorkbooks() Dim FilesToOpen Dim x As Integer On Error GoTo ErrHandler Application.ScreenUpdating = False FilesToOpen = Application.GetOpenFilename _ (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _ MultiSelect:=True, Title:="Files to Merge") If TypeName(FilesToOpen) = "Boolean" Then MsgBox "No Files were selected" GoTo ExitHandler End If x = 1 While x <= UBound(FilesToOpen) Workbooks.Open FileName:=FilesToOpen(x) Sheets().Move After:=ThisWorkbook.Sheets _ (ThisWorkbook.Sheets.Count) x = x + 1 Wend ExitHandler: Application.ScreenUpdating = True Exit Sub ErrHandler: MsgBox Err.Description Resume ExitHandler End Sub |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
My guess is that you have an unqualified reference. Try setting an
object reference to the newly opened workbook, then fully qualifying the Move method. Dim wb As Excel.Workbook Set wb = Workbooks.Open FileName:=FilesToOpen(x) wb.Sheets.Move After:=ThisWorkbook.Sheets _ (ThisWorkbook.Sheets.Count) --JP |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Since your workbooks only have 1 worksheet, moving the sheet would create a
workbook with no sheets (not possible). To get around this, try changing this line: Sheets().Move After:=ThisWorkbook.Sheets _ (ThisWorkbook.Sheets.Count) to Sheets().Copy After:=ThisWorkbook.Sheets _ (ThisWorkbook.Sheets.Count) the effect will be similar, the one difference being that the old workbook will still contain a copy of the worksheet. -- Best Regards, Luke M *Remember to click "yes" if this post helped you!* "Mrs. Robinson" wrote: I am using this macro to merge 50+ workbooks with 1 sheet per wb, into one workbook. I get this error message: Method 'Move' of object 'Sheets' failed. Can you help? Thanks... Sub CombineWorkbooks() Dim FilesToOpen Dim x As Integer On Error GoTo ErrHandler Application.ScreenUpdating = False FilesToOpen = Application.GetOpenFilename _ (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _ MultiSelect:=True, Title:="Files to Merge") If TypeName(FilesToOpen) = "Boolean" Then MsgBox "No Files were selected" GoTo ExitHandler End If x = 1 While x <= UBound(FilesToOpen) Workbooks.Open FileName:=FilesToOpen(x) Sheets().Move After:=ThisWorkbook.Sheets _ (ThisWorkbook.Sheets.Count) x = x + 1 Wend ExitHandler: Application.ScreenUpdating = True Exit Sub ErrHandler: MsgBox Err.Description Resume ExitHandler End Sub |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
made small change to your code - see if does what you want.
Sub CombineWorkbooks() Dim FilesToOpen Dim x As Integer Dim wb As Workbook On Error GoTo ErrHandler Application.ScreenUpdating = False FilesToOpen = Application.GetOpenFilename _ (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _ MultiSelect:=True, Title:="Files to Merge") If TypeName(FilesToOpen) = "Boolean" Then MsgBox "No Files were selected" GoTo ExitHandler End If x = 1 While x <= UBound(FilesToOpen) Set wb = Workbooks.Open(Filename:=FilesToOpen(x)) wb.Sheets(1).Move After:=ThisWorkbook.Sheets _ (ThisWorkbook.Sheets.Count) x = x + 1 wb.Close False Wend ExitHandler: Application.ScreenUpdating = True Exit Sub ErrHandler: MsgBox Err.Description Resume ExitHandler End Sub -- jb "Mrs. Robinson" wrote: I am using this macro to merge 50+ workbooks with 1 sheet per wb, into one workbook. I get this error message: Method 'Move' of object 'Sheets' failed. Can you help? Thanks... Sub CombineWorkbooks() Dim FilesToOpen Dim x As Integer On Error GoTo ErrHandler Application.ScreenUpdating = False FilesToOpen = Application.GetOpenFilename _ (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _ MultiSelect:=True, Title:="Files to Merge") If TypeName(FilesToOpen) = "Boolean" Then MsgBox "No Files were selected" GoTo ExitHandler End If x = 1 While x <= UBound(FilesToOpen) Workbooks.Open FileName:=FilesToOpen(x) Sheets().Move After:=ThisWorkbook.Sheets _ (ThisWorkbook.Sheets.Count) x = x + 1 Wend ExitHandler: Application.ScreenUpdating = True Exit Sub ErrHandler: MsgBox Err.Description Resume ExitHandler End Sub |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
For Luke's solution, I get the same error message except it readsmethod
'Move'...failed John's solution gives me a "Move method of Worksheet class failed" message. JP's solution - there's some sort of error in this line: Set wb = Workbooks.Open FileName:=FilesToOpen(x) "john" wrote: made small change to your code - see if does what you want. Sub CombineWorkbooks() Dim FilesToOpen Dim x As Integer Dim wb As Workbook On Error GoTo ErrHandler Application.ScreenUpdating = False FilesToOpen = Application.GetOpenFilename _ (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _ MultiSelect:=True, Title:="Files to Merge") If TypeName(FilesToOpen) = "Boolean" Then MsgBox "No Files were selected" GoTo ExitHandler End If x = 1 While x <= UBound(FilesToOpen) Set wb = Workbooks.Open(Filename:=FilesToOpen(x)) wb.Sheets(1).Move After:=ThisWorkbook.Sheets _ (ThisWorkbook.Sheets.Count) x = x + 1 wb.Close False Wend ExitHandler: Application.ScreenUpdating = True Exit Sub ErrHandler: MsgBox Err.Description Resume ExitHandler End Sub -- jb "Mrs. Robinson" wrote: I am using this macro to merge 50+ workbooks with 1 sheet per wb, into one workbook. I get this error message: Method 'Move' of object 'Sheets' failed. Can you help? Thanks... Sub CombineWorkbooks() Dim FilesToOpen Dim x As Integer On Error GoTo ErrHandler Application.ScreenUpdating = False FilesToOpen = Application.GetOpenFilename _ (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _ MultiSelect:=True, Title:="Files to Merge") If TypeName(FilesToOpen) = "Boolean" Then MsgBox "No Files were selected" GoTo ExitHandler End If x = 1 While x <= UBound(FilesToOpen) Workbooks.Open FileName:=FilesToOpen(x) Sheets().Move After:=ThisWorkbook.Sheets _ (ThisWorkbook.Sheets.Count) x = x + 1 Wend ExitHandler: Application.ScreenUpdating = True Exit Sub ErrHandler: MsgBox Err.Description Resume ExitHandler End Sub |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
try changing this line:
wb.Sheets(1).Move After:=ThisWorkbook.Sheets _ (ThisWorkbook.Sheets.Count) for this wb.Sheets(1).Copy After:=ThisWorkbook.Sheets _ (ThisWorkbook.Sheets.Count) -- jb "Mrs. Robinson" wrote: For Luke's solution, I get the same error message except it readsmethod 'Move'...failed John's solution gives me a "Move method of Worksheet class failed" message. JP's solution - there's some sort of error in this line: Set wb = Workbooks.Open FileName:=FilesToOpen(x) "john" wrote: made small change to your code - see if does what you want. Sub CombineWorkbooks() Dim FilesToOpen Dim x As Integer Dim wb As Workbook On Error GoTo ErrHandler Application.ScreenUpdating = False FilesToOpen = Application.GetOpenFilename _ (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _ MultiSelect:=True, Title:="Files to Merge") If TypeName(FilesToOpen) = "Boolean" Then MsgBox "No Files were selected" GoTo ExitHandler End If x = 1 While x <= UBound(FilesToOpen) Set wb = Workbooks.Open(Filename:=FilesToOpen(x)) wb.Sheets(1).Move After:=ThisWorkbook.Sheets _ (ThisWorkbook.Sheets.Count) x = x + 1 wb.Close False Wend ExitHandler: Application.ScreenUpdating = True Exit Sub ErrHandler: MsgBox Err.Description Resume ExitHandler End Sub -- jb "Mrs. Robinson" wrote: I am using this macro to merge 50+ workbooks with 1 sheet per wb, into one workbook. I get this error message: Method 'Move' of object 'Sheets' failed. Can you help? Thanks... Sub CombineWorkbooks() Dim FilesToOpen Dim x As Integer On Error GoTo ErrHandler Application.ScreenUpdating = False FilesToOpen = Application.GetOpenFilename _ (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _ MultiSelect:=True, Title:="Files to Merge") If TypeName(FilesToOpen) = "Boolean" Then MsgBox "No Files were selected" GoTo ExitHandler End If x = 1 While x <= UBound(FilesToOpen) Workbooks.Open FileName:=FilesToOpen(x) Sheets().Move After:=ThisWorkbook.Sheets _ (ThisWorkbook.Sheets.Count) x = x + 1 Wend ExitHandler: Application.ScreenUpdating = True Exit Sub ErrHandler: MsgBox Err.Description Resume ExitHandler End Sub |
#7
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
My bad, Luke is right, you can't move all the sheets out of a
workbook. Here's another suggestion: start x at zero, I believe LBound (FilesToOpen) should start at zero. Otherwise I'm missing something. I haven't been actually testing the code. --JP On Oct 7, 10:30*am, Mrs. Robinson wrote: For Luke's solution, I get the same error message except it readsmethod 'Move'...failed John's solution gives me a "Move method of Worksheet class failed" message. JP's solution - there's some sort of error in this line: *Set wb = Workbooks.Open FileName:=FilesToOpen(x) "john" wrote: made small change to your code - see if does what you want. Sub CombineWorkbooks() * * Dim FilesToOpen * * Dim x As Integer * * Dim wb As Workbook * * On Error GoTo ErrHandler * * Application.ScreenUpdating = False * * FilesToOpen = Application.GetOpenFilename _ * * * * * * * * * (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _ * * * * * * * * * *MultiSelect:=True, Title:="Files to Merge") * * If TypeName(FilesToOpen) = "Boolean" Then * * * * MsgBox "No Files were selected" * * * * GoTo ExitHandler * * End If * * x = 1 * * While x <= UBound(FilesToOpen) * * * * Set wb = Workbooks.Open(Filename:=FilesToOpen(x)) * * * * wb.Sheets(1).Move After:=ThisWorkbook.Sheets _ * * * * * * * * * * * * * * * * *(ThisWorkbook.Sheets.Count) * * * * x = x + 1 * * * * wb.Close False * * Wend ExitHandler: * * Application.ScreenUpdating = True * * Exit Sub ErrHandler: * * MsgBox Err.Description * * Resume ExitHandler End Sub -- jb "Mrs. Robinson" wrote: I am using this macro to merge 50+ workbooks with 1 sheet per wb, into one workbook. *I get this error message: *Method 'Move' of object 'Sheets' failed. *Can you help? *Thanks... Sub CombineWorkbooks() * * Dim FilesToOpen * * Dim x As Integer * * On Error GoTo ErrHandler * * Application.ScreenUpdating = False * * FilesToOpen = Application.GetOpenFilename _ * * * (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _ * * * MultiSelect:=True, Title:="Files to Merge") * * If TypeName(FilesToOpen) = "Boolean" Then * * * * MsgBox "No Files were selected" * * * * GoTo ExitHandler * * End If * * x = 1 * * While x <= UBound(FilesToOpen) * * * * Workbooks.Open FileName:=FilesToOpen(x) * * * * Sheets().Move After:=ThisWorkbook.Sheets _ * * * * * (ThisWorkbook.Sheets.Count) * * * * x = x + 1 * * Wend ExitHandler: * * Application.ScreenUpdating = True * * Exit Sub ErrHandler: * * MsgBox Err.Description * * Resume ExitHandler End Sub- Hide quoted text - - Show quoted text - |
#8
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
that didn't work either.
"JP" wrote: My bad, Luke is right, you can't move all the sheets out of a workbook. Here's another suggestion: start x at zero, I believe LBound (FilesToOpen) should start at zero. Otherwise I'm missing something. I haven't been actually testing the code. --JP On Oct 7, 10:30 am, Mrs. Robinson wrote: For Luke's solution, I get the same error message except it readsmethod 'Move'...failed John's solution gives me a "Move method of Worksheet class failed" message. JP's solution - there's some sort of error in this line: Set wb = Workbooks.Open FileName:=FilesToOpen(x) "john" wrote: made small change to your code - see if does what you want. Sub CombineWorkbooks() Dim FilesToOpen Dim x As Integer Dim wb As Workbook On Error GoTo ErrHandler Application.ScreenUpdating = False FilesToOpen = Application.GetOpenFilename _ (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _ MultiSelect:=True, Title:="Files to Merge") If TypeName(FilesToOpen) = "Boolean" Then MsgBox "No Files were selected" GoTo ExitHandler End If x = 1 While x <= UBound(FilesToOpen) Set wb = Workbooks.Open(Filename:=FilesToOpen(x)) wb.Sheets(1).Move After:=ThisWorkbook.Sheets _ (ThisWorkbook.Sheets.Count) x = x + 1 wb.Close False Wend ExitHandler: Application.ScreenUpdating = True Exit Sub ErrHandler: MsgBox Err.Description Resume ExitHandler End Sub -- jb "Mrs. Robinson" wrote: I am using this macro to merge 50+ workbooks with 1 sheet per wb, into one workbook. I get this error message: Method 'Move' of object 'Sheets' failed. Can you help? Thanks... Sub CombineWorkbooks() Dim FilesToOpen Dim x As Integer On Error GoTo ErrHandler Application.ScreenUpdating = False FilesToOpen = Application.GetOpenFilename _ (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _ MultiSelect:=True, Title:="Files to Merge") If TypeName(FilesToOpen) = "Boolean" Then MsgBox "No Files were selected" GoTo ExitHandler End If x = 1 While x <= UBound(FilesToOpen) Workbooks.Open FileName:=FilesToOpen(x) Sheets().Move After:=ThisWorkbook.Sheets _ (ThisWorkbook.Sheets.Count) x = x + 1 Wend ExitHandler: Application.ScreenUpdating = True Exit Sub ErrHandler: MsgBox Err.Description Resume ExitHandler End Sub- Hide quoted text - - Show quoted text - |
#9
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I put four one-sheet workbooks on my desktop, then created a new
workbook and ran the following macro (basically an amalgam of the edits Luke and John already posted). I selected the four (closed) workbooks, and it copied the sheets from each workbook into the current workbook. Sub CombineWorkbooks() Dim FilesToOpen Dim x As Integer Dim wb As Excel.Workbook On Error GoTo ErrHandler Application.ScreenUpdating = False FilesToOpen = Application.GetOpenFilename _ (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _ MultiSelect:=True, Title:="Files to Merge") If TypeName(FilesToOpen) = "Boolean" Then MsgBox "No Files were selected" GoTo ExitHandler End If x = 1 While x <= UBound(FilesToOpen) Set wb = Workbooks.Open(Filename:=FilesToOpen(x)) wb.Sheets.Copy After:=ThisWorkbook.Sheets _ (ThisWorkbook.Sheets.Count) wb.Close False x = x + 1 Wend ExitHandler: Application.ScreenUpdating = True Exit Sub ErrHandler: MsgBox Err.Description Resume ExitHandler End Sub --JP On Oct 7, 11:33*am, Mrs. Robinson wrote: that didn't work either. "JP" wrote: My bad, Luke is right, you can't move all the sheets out of a workbook. Here's another suggestion: start x at zero, I believe LBound (FilesToOpen) should start at zero. Otherwise I'm missing something. I haven't been actually testing the code. --JP |
#10
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Try
http://www.rondebruin.nl/fso.htm -- Regards Ron de Bruin http://www.rondebruin.nl/tips.htm "Mrs. Robinson" wrote in message ... that didn't work either. "JP" wrote: My bad, Luke is right, you can't move all the sheets out of a workbook. Here's another suggestion: start x at zero, I believe LBound (FilesToOpen) should start at zero. Otherwise I'm missing something. I haven't been actually testing the code. --JP On Oct 7, 10:30 am, Mrs. Robinson wrote: For Luke's solution, I get the same error message except it readsmethod 'Move'...failed John's solution gives me a "Move method of Worksheet class failed" message. JP's solution - there's some sort of error in this line: Set wb = Workbooks.Open FileName:=FilesToOpen(x) "john" wrote: made small change to your code - see if does what you want. Sub CombineWorkbooks() Dim FilesToOpen Dim x As Integer Dim wb As Workbook On Error GoTo ErrHandler Application.ScreenUpdating = False FilesToOpen = Application.GetOpenFilename _ (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _ MultiSelect:=True, Title:="Files to Merge") If TypeName(FilesToOpen) = "Boolean" Then MsgBox "No Files were selected" GoTo ExitHandler End If x = 1 While x <= UBound(FilesToOpen) Set wb = Workbooks.Open(Filename:=FilesToOpen(x)) wb.Sheets(1).Move After:=ThisWorkbook.Sheets _ (ThisWorkbook.Sheets.Count) x = x + 1 wb.Close False Wend ExitHandler: Application.ScreenUpdating = True Exit Sub ErrHandler: MsgBox Err.Description Resume ExitHandler End Sub -- jb "Mrs. Robinson" wrote: I am using this macro to merge 50+ workbooks with 1 sheet per wb, into one workbook. I get this error message: Method 'Move' of object 'Sheets' failed. Can you help? Thanks... Sub CombineWorkbooks() Dim FilesToOpen Dim x As Integer On Error GoTo ErrHandler Application.ScreenUpdating = False FilesToOpen = Application.GetOpenFilename _ (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _ MultiSelect:=True, Title:="Files to Merge") If TypeName(FilesToOpen) = "Boolean" Then MsgBox "No Files were selected" GoTo ExitHandler End If x = 1 While x <= UBound(FilesToOpen) Workbooks.Open FileName:=FilesToOpen(x) Sheets().Move After:=ThisWorkbook.Sheets _ (ThisWorkbook.Sheets.Count) x = x + 1 Wend ExitHandler: Application.ScreenUpdating = True Exit Sub ErrHandler: MsgBox Err.Description Resume ExitHandler End Sub- Hide quoted text - - Show quoted text - |
#11
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I get copy method of worksheet class failed error.
"Mrs. Robinson" wrote: I am using this macro to merge 50+ workbooks with 1 sheet per wb, into one workbook. I get this error message: Method 'Move' of object 'Sheets' failed. Can you help? Thanks... Sub CombineWorkbooks() Dim FilesToOpen Dim x As Integer On Error GoTo ErrHandler Application.ScreenUpdating = False FilesToOpen = Application.GetOpenFilename _ (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _ MultiSelect:=True, Title:="Files to Merge") If TypeName(FilesToOpen) = "Boolean" Then MsgBox "No Files were selected" GoTo ExitHandler End If x = 1 While x <= UBound(FilesToOpen) Workbooks.Open FileName:=FilesToOpen(x) Sheets().Move After:=ThisWorkbook.Sheets _ (ThisWorkbook.Sheets.Count) x = x + 1 Wend ExitHandler: Application.ScreenUpdating = True Exit Sub ErrHandler: MsgBox Err.Description Resume ExitHandler End Sub |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Completely Merge Multiple Workbooks? | Excel Discussion (Misc queries) | |||
Merge workbooks | Excel Discussion (Misc queries) | |||
Merge Multiple Workbooks | Excel Programming | |||
merge workbooks | Excel Worksheet Functions | |||
merge workbooks | Excel Worksheet Functions |