Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 7
Default Overwrite Master sheet when using merge macro

Hello,

Is it possible to tweak the macro that I am currently using to
overwrite the master worksheet without deleting it every time? Right now it
says, "There is a worksheet called as 'Master'." I need to delete the master
worksheet in order to merge the worksheets again.

Here is the macro:


Sub CopyFromWorksheets()
Dim wrk As Workbook 'Workbook object - Always good to work with object
variables
Dim sht As Worksheet 'Object for handling worksheets in loop
Dim trg As Worksheet 'Master Worksheet
Dim rng As Range 'Range object
Dim colCount As Integer 'Column count in tables in the worksheets

Set wrk = ActiveWorkbook 'Working in active workbook

For Each sht In wrk.Worksheets
If sht.Name = "Master" Then
MsgBox "There is a worksheet called as 'Master'." & vbCrLf & _
"Please remove or rename this worksheet since 'Master' would be"
& _
"the name of the result worksheet of this process.", vbOKOnly +
vbExclamation, "Error"
Exit Sub
End If
Next sht

'We don't want screen updating
Application.ScreenUpdating = False

'Add new worksheet as the last worksheet
Set trg = wrk.Worksheets.Add(After:=wrk.Worksheets(wrk.Works heets.Count))
'Rename the new worksheet
trg.Name = "Master"
'Get column headers from the first worksheet
'Column count first
Set sht = wrk.Worksheets(1)
colCount = sht.Cells(1, 255).End(xlToLeft).Column
'Now retrieve headers, no copy&paste needed
With trg.Cells(1, 1).Resize(1, colCount)
.Value = sht.Cells(1, 1).Resize(1, colCount).Value
'Set font as bold
.Font.Bold = True
End With

'We can start loop
For Each sht In wrk.Worksheets
'If worksheet in loop is the last one, stop execution (it is Master
worksheet)
If sht.Index = wrk.Worksheets.Count Then
Exit For
End If
'Data range in worksheet - starts from second row as first rows are
the header rows in all worksheets
Set rng = sht.Range(sht.Cells(2, 1), sht.Cells(65536,
1).End(xlUp).Resize(, colCount))
'Put data into the Master worksheet
trg.Cells(65536, 1).End(xlUp).Offset(1).Resize(rng.Rows.Count,
rng.Columns.Count).Value = rng.Value
Next sht
'Fit the columns in Master worksheet
trg.Columns.AutoFit

'Screen updating should be activated
Application.ScreenUpdating = True
End Sub

Thanks in advance.

Mark
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 205
Default Overwrite Master sheet when using merge macro

Hi Mark,

Assuming that there's nothing particularly you want to keep on the old
Master sheet, the easiest way would be to replace the first If Then
statement form this:

If sht.Name = "Master" Then
MsgBox "There is a worksheet called as 'Master'." & vbCrLf & _
"Please remove or rename this worksheet since 'Master' would be"
& _
"the name of the result worksheet of this process.", vbOKOnly +
vbExclamation, "Error"
Exit Sub
End If

To this:

If sht.Name = "Master" Then
sht.Delete
End If

This will just delete the "Master" sheet if it exists and then carry on with
the rest of the procedure.

If I've assumed incorrectly, let me know and I'll try an alternative. Also
if you do want to keep data on the original master sheet then we'd need to
know what and where it is.

Anyway, hope this helps

Best regards

John


"Mark Jackson" wrote in message
...
Hello,

Is it possible to tweak the macro that I am currently using to
overwrite the master worksheet without deleting it every time? Right now
it
says, "There is a worksheet called as 'Master'." I need to delete the
master
worksheet in order to merge the worksheets again.

Here is the macro:


Sub CopyFromWorksheets()
Dim wrk As Workbook 'Workbook object - Always good to work with object
variables
Dim sht As Worksheet 'Object for handling worksheets in loop
Dim trg As Worksheet 'Master Worksheet
Dim rng As Range 'Range object
Dim colCount As Integer 'Column count in tables in the worksheets

Set wrk = ActiveWorkbook 'Working in active workbook

For Each sht In wrk.Worksheets
If sht.Name = "Master" Then
MsgBox "There is a worksheet called as 'Master'." & vbCrLf & _
"Please remove or rename this worksheet since 'Master' would
be"
& _
"the name of the result worksheet of this process.", vbOKOnly +
vbExclamation, "Error"
Exit Sub
End If
Next sht

'We don't want screen updating
Application.ScreenUpdating = False

'Add new worksheet as the last worksheet
Set trg =
wrk.Worksheets.Add(After:=wrk.Worksheets(wrk.Works heets.Count))
'Rename the new worksheet
trg.Name = "Master"
'Get column headers from the first worksheet
'Column count first
Set sht = wrk.Worksheets(1)
colCount = sht.Cells(1, 255).End(xlToLeft).Column
'Now retrieve headers, no copy&paste needed
With trg.Cells(1, 1).Resize(1, colCount)
.Value = sht.Cells(1, 1).Resize(1, colCount).Value
'Set font as bold
.Font.Bold = True
End With

'We can start loop
For Each sht In wrk.Worksheets
'If worksheet in loop is the last one, stop execution (it is
Master
worksheet)
If sht.Index = wrk.Worksheets.Count Then
Exit For
End If
'Data range in worksheet - starts from second row as first rows
are
the header rows in all worksheets
Set rng = sht.Range(sht.Cells(2, 1), sht.Cells(65536,
1).End(xlUp).Resize(, colCount))
'Put data into the Master worksheet
trg.Cells(65536, 1).End(xlUp).Offset(1).Resize(rng.Rows.Count,
rng.Columns.Count).Value = rng.Value
Next sht
'Fit the columns in Master worksheet
trg.Columns.AutoFit

'Screen updating should be activated
Application.ScreenUpdating = True
End Sub

Thanks in advance.

Mark



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 7
Default Overwrite Master sheet when using merge macro

Hi John,

It works perfect. Thank you. One more question. I noticed that this macro
will not delete the master sheet when the workbook is in share mode. Is
there a way to delete the master sheet when the workbook is in share mode?
Thanks again for your help.

Sincerely,

Mark

"John" wrote:

Hi Mark,

Assuming that there's nothing particularly you want to keep on the old
Master sheet, the easiest way would be to replace the first If Then
statement form this:

If sht.Name = "Master" Then
MsgBox "There is a worksheet called as 'Master'." & vbCrLf & _
"Please remove or rename this worksheet since 'Master' would be"
& _
"the name of the result worksheet of this process.", vbOKOnly +
vbExclamation, "Error"
Exit Sub
End If

To this:

If sht.Name = "Master" Then
sht.Delete
End If

This will just delete the "Master" sheet if it exists and then carry on with
the rest of the procedure.

If I've assumed incorrectly, let me know and I'll try an alternative. Also
if you do want to keep data on the original master sheet then we'd need to
know what and where it is.

Anyway, hope this helps

Best regards

John


"Mark Jackson" wrote in message
...
Hello,

Is it possible to tweak the macro that I am currently using to
overwrite the master worksheet without deleting it every time? Right now
it
says, "There is a worksheet called as 'Master'." I need to delete the
master
worksheet in order to merge the worksheets again.

Here is the macro:


Sub CopyFromWorksheets()
Dim wrk As Workbook 'Workbook object - Always good to work with object
variables
Dim sht As Worksheet 'Object for handling worksheets in loop
Dim trg As Worksheet 'Master Worksheet
Dim rng As Range 'Range object
Dim colCount As Integer 'Column count in tables in the worksheets

Set wrk = ActiveWorkbook 'Working in active workbook

For Each sht In wrk.Worksheets
If sht.Name = "Master" Then
MsgBox "There is a worksheet called as 'Master'." & vbCrLf & _
"Please remove or rename this worksheet since 'Master' would
be"
& _
"the name of the result worksheet of this process.", vbOKOnly +
vbExclamation, "Error"
Exit Sub
End If
Next sht

'We don't want screen updating
Application.ScreenUpdating = False

'Add new worksheet as the last worksheet
Set trg =
wrk.Worksheets.Add(After:=wrk.Worksheets(wrk.Works heets.Count))
'Rename the new worksheet
trg.Name = "Master"
'Get column headers from the first worksheet
'Column count first
Set sht = wrk.Worksheets(1)
colCount = sht.Cells(1, 255).End(xlToLeft).Column
'Now retrieve headers, no copy&paste needed
With trg.Cells(1, 1).Resize(1, colCount)
.Value = sht.Cells(1, 1).Resize(1, colCount).Value
'Set font as bold
.Font.Bold = True
End With

'We can start loop
For Each sht In wrk.Worksheets
'If worksheet in loop is the last one, stop execution (it is
Master
worksheet)
If sht.Index = wrk.Worksheets.Count Then
Exit For
End If
'Data range in worksheet - starts from second row as first rows
are
the header rows in all worksheets
Set rng = sht.Range(sht.Cells(2, 1), sht.Cells(65536,
1).End(xlUp).Resize(, colCount))
'Put data into the Master worksheet
trg.Cells(65536, 1).End(xlUp).Offset(1).Resize(rng.Rows.Count,
rng.Columns.Count).Value = rng.Value
Next sht
'Fit the columns in Master worksheet
trg.Columns.AutoFit

'Screen updating should be activated
Application.ScreenUpdating = True
End Sub

Thanks in advance.

Mark




  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 205
Default Overwrite Master sheet when using merge macro

Hi Mark,

I'm afraid I haven't really dealt with shared workbooks so you might want to
ask this question as a new post.

Anyway, glad the to help with the first part.

Best regards

John

"Mark Jackson" wrote in message
...
Hi John,

It works perfect. Thank you. One more question. I noticed that this
macro
will not delete the master sheet when the workbook is in share mode. Is
there a way to delete the master sheet when the workbook is in share mode?
Thanks again for your help.

Sincerely,

Mark

"John" wrote:

Hi Mark,

Assuming that there's nothing particularly you want to keep on the old
Master sheet, the easiest way would be to replace the first If Then
statement form this:

If sht.Name = "Master" Then
MsgBox "There is a worksheet called as 'Master'." & vbCrLf &
_
"Please remove or rename this worksheet since 'Master' would
be"
& _
"the name of the result worksheet of this process.", vbOKOnly
+
vbExclamation, "Error"
Exit Sub
End If

To this:

If sht.Name = "Master" Then
sht.Delete
End If

This will just delete the "Master" sheet if it exists and then carry on
with
the rest of the procedure.

If I've assumed incorrectly, let me know and I'll try an alternative.
Also
if you do want to keep data on the original master sheet then we'd need
to
know what and where it is.

Anyway, hope this helps

Best regards

John


"Mark Jackson" wrote in message
...
Hello,

Is it possible to tweak the macro that I am currently using to
overwrite the master worksheet without deleting it every time? Right
now
it
says, "There is a worksheet called as 'Master'." I need to delete the
master
worksheet in order to merge the worksheets again.

Here is the macro:


Sub CopyFromWorksheets()
Dim wrk As Workbook 'Workbook object - Always good to work with
object
variables
Dim sht As Worksheet 'Object for handling worksheets in loop
Dim trg As Worksheet 'Master Worksheet
Dim rng As Range 'Range object
Dim colCount As Integer 'Column count in tables in the worksheets

Set wrk = ActiveWorkbook 'Working in active workbook

For Each sht In wrk.Worksheets
If sht.Name = "Master" Then
MsgBox "There is a worksheet called as 'Master'." & vbCrLf &
_
"Please remove or rename this worksheet since 'Master' would
be"
& _
"the name of the result worksheet of this process.",
vbOKOnly +
vbExclamation, "Error"
Exit Sub
End If
Next sht

'We don't want screen updating
Application.ScreenUpdating = False

'Add new worksheet as the last worksheet
Set trg =
wrk.Worksheets.Add(After:=wrk.Worksheets(wrk.Works heets.Count))
'Rename the new worksheet
trg.Name = "Master"
'Get column headers from the first worksheet
'Column count first
Set sht = wrk.Worksheets(1)
colCount = sht.Cells(1, 255).End(xlToLeft).Column
'Now retrieve headers, no copy&paste needed
With trg.Cells(1, 1).Resize(1, colCount)
.Value = sht.Cells(1, 1).Resize(1, colCount).Value
'Set font as bold
.Font.Bold = True
End With

'We can start loop
For Each sht In wrk.Worksheets
'If worksheet in loop is the last one, stop execution (it is
Master
worksheet)
If sht.Index = wrk.Worksheets.Count Then
Exit For
End If
'Data range in worksheet - starts from second row as first rows
are
the header rows in all worksheets
Set rng = sht.Range(sht.Cells(2, 1), sht.Cells(65536,
1).End(xlUp).Resize(, colCount))
'Put data into the Master worksheet
trg.Cells(65536, 1).End(xlUp).Offset(1).Resize(rng.Rows.Count,
rng.Columns.Count).Value = rng.Value
Next sht
'Fit the columns in Master worksheet
trg.Columns.AutoFit

'Screen updating should be activated
Application.ScreenUpdating = True
End Sub

Thanks in advance.

Mark






Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Merge 3 Xls worksheets updates into master xls Tim_Ver Charts and Charting in Excel 0 April 21st 09 04:37 PM
Merge cells from all worksheets into a master worksheet pmv464 Excel Discussion (Misc queries) 2 March 29th 08 11:49 PM
Merge Shared Workbooks into a Master Workbook Mike Stevenson Excel Discussion (Misc queries) 0 February 22nd 08 08:11 PM
Merge cells to master sheet Steve Excel Discussion (Misc queries) 2 December 13th 07 12:04 AM
merge 3 workbooks (and all coniciding worksheets) into 1 master wb maijiuli Excel Discussion (Misc queries) 0 November 5th 07 05:58 PM


All times are GMT +1. The time now is 03:41 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"