Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Peter
 
Posts: n/a
Default Search all worksheets in a workbook...

Hello All,

I am trying to figure out how to search a certain cell range (AA4), on each
of upto 30 worksheets in the same workbook. Then if it finds that range to be
empty (ie: the page has not been used) delete it when exiting.

My workbook autosaves a file on exit using the same cell range on the first
worksheet as it's filename.

Regards
Peter
  #2   Report Post  
Norman Jones
 
Posts: n/a
Default

Hi Peter,

Try:

Sub sTester()
Dim sh As Worksheet
Const sTestCellAddress As String = "AA4"

On Error GoTo XIT
Application.DisplayAlerts = False
For Each sh In ThisWorkbook.Worksheets
With sh
If IsEmpty(.Range(sTestCellAddress )) Then
.Delete
End If
End With
Next sh

XIT:

Application.DisplayAlerts = True

End Sub

---
Regards,
Norman



"Peter" wrote in message
...
Hello All,

I am trying to figure out how to search a certain cell range (AA4), on
each
of upto 30 worksheets in the same workbook. Then if it finds that range to
be
empty (ie: the page has not been used) delete it when exiting.

My workbook autosaves a file on exit using the same cell range on the
first
worksheet as it's filename.

Regards
Peter



  #3   Report Post  
Peter
 
Posts: n/a
Default

Hi Norman,
Thanks for the reply..
This seems to work well, but it only works for page 1. If there is data on
page 2 or more it saves the whole book still.

This is the code I use when exiting Excel to autosave the workbook.

Private Sub Workbook_BeforeClose(cancel As Boolean)

Dim savepath As String
savepath = "c:\company\invoice\"
ActiveWorkbook.SaveAs Filename:=savepath & Range("AA4").Value & ".xls"

End Sub

I can't see why it's not working. I tried to integrate your code with this,
but with no further success.

Regards
Peter

"Norman Jones" wrote:

Hi Peter,

Try:

Sub sTester()
Dim sh As Worksheet
Const sTestCellAddress As String = "AA4"

On Error GoTo XIT
Application.DisplayAlerts = False
For Each sh In ThisWorkbook.Worksheets
With sh
If IsEmpty(.Range(sTestCellAddress )) Then
.Delete
End If
End With
Next sh

XIT:

Application.DisplayAlerts = True

End Sub

---
Regards,
Norman



"Peter" wrote in message
...
Hello All,

I am trying to figure out how to search a certain cell range (AA4), on
each
of upto 30 worksheets in the same workbook. Then if it finds that range to
be
empty (ie: the page has not been used) delete it when exiting.

My workbook autosaves a file on exit using the same cell range on the
first
worksheet as it's filename.

Regards
Peter




  #4   Report Post  
Norman Jones
 
Posts: n/a
Default

Hi Peter,

This seems to work well, but it only works for page 1.


Are you sure? In testing, all sheets whose AA4 cell is empty are deleted.
The exception to this would be where none of the worksheets has a populated
AA4 cell, In this case the last worksheet would be retained as a workbook is
required to have a minimum of one worksheet.

I can't see why it's not working. I tried to integrate your code with
this,
but with no further success.


Put the suggested macro a normal module of the workbook (not in the
ThisWorkbook module or the worksheet modules). Then amend the
Workbook_BeforeClose macro to call the suggested macro, e.g.:

Private Sub Workbook_BeforeClose(cancel As Boolean)
Dim savepath As String

savepath = "C:\Company\Invoice\"

sTester

Me.SaveAs Filename:=savepath _
& Range("AA4").Value & ".xls"
End Sub

You may wish to change the name of the suggested macro from Sub STester()
to (say) Sub SheetsDelete(). If you change the macro name, change sTester
line in the Workbook_BeforeClose routine to accord with the amended name.


---
Regards,
Norman



"Peter" wrote in message
...
Hi Norman,
Thanks for the reply..
This seems to work well, but it only works for page 1. If there is data on
page 2 or more it saves the whole book still.

This is the code I use when exiting Excel to autosave the workbook.

Private Sub Workbook_BeforeClose(cancel As Boolean)

Dim savepath As String
savepath = "c:\company\invoice\"
ActiveWorkbook.SaveAs Filename:=savepath & Range("AA4").Value & ".xls"

End Sub

I can't see why it's not working. I tried to integrate your code with
this,
but with no further success.

Regards
Peter

"Norman Jones" wrote:

Hi Peter,

Try:

Sub sTester()
Dim sh As Worksheet
Const sTestCellAddress As String = "AA4"

On Error GoTo XIT
Application.DisplayAlerts = False
For Each sh In ThisWorkbook.Worksheets
With sh
If IsEmpty(.Range(sTestCellAddress )) Then
.Delete
End If
End With
Next sh

XIT:

Application.DisplayAlerts = True

End Sub

---
Regards,
Norman



"Peter" wrote in message
...
Hello All,

I am trying to figure out how to search a certain cell range (AA4), on
each
of upto 30 worksheets in the same workbook. Then if it finds that range
to
be
empty (ie: the page has not been used) delete it when exiting.

My workbook autosaves a file on exit using the same cell range on the
first
worksheet as it's filename.

Regards
Peter






  #5   Report Post  
Peter
 
Posts: n/a
Default

Sorry Norman, my bad.

I think the problem is the worksheets are, and in my case, need to be
protected.
Is there a way of removing the protection, doing the deletion, then
re-adding the protection to the pages that remain?

Regards
Peter

"Norman Jones" wrote:

Hi Peter,

This seems to work well, but it only works for page 1.


Are you sure? In testing, all sheets whose AA4 cell is empty are deleted.
The exception to this would be where none of the worksheets has a populated
AA4 cell, In this case the last worksheet would be retained as a workbook is
required to have a minimum of one worksheet.

I can't see why it's not working. I tried to integrate your code with
this,
but with no further success.


Put the suggested macro a normal module of the workbook (not in the
ThisWorkbook module or the worksheet modules). Then amend the
Workbook_BeforeClose macro to call the suggested macro, e.g.:

Private Sub Workbook_BeforeClose(cancel As Boolean)
Dim savepath As String

savepath = "C:\Company\Invoice\"

sTester

Me.SaveAs Filename:=savepath _
& Range("AA4").Value & ".xls"
End Sub

You may wish to change the name of the suggested macro from Sub STester()
to (say) Sub SheetsDelete(). If you change the macro name, change sTester
line in the Workbook_BeforeClose routine to accord with the amended name.


---
Regards,
Norman



"Peter" wrote in message
...
Hi Norman,
Thanks for the reply..
This seems to work well, but it only works for page 1. If there is data on
page 2 or more it saves the whole book still.

This is the code I use when exiting Excel to autosave the workbook.

Private Sub Workbook_BeforeClose(cancel As Boolean)

Dim savepath As String
savepath = "c:\company\invoice\"
ActiveWorkbook.SaveAs Filename:=savepath & Range("AA4").Value & ".xls"

End Sub

I can't see why it's not working. I tried to integrate your code with
this,
but with no further success.

Regards
Peter

"Norman Jones" wrote:

Hi Peter,

Try:

Sub sTester()
Dim sh As Worksheet
Const sTestCellAddress As String = "AA4"

On Error GoTo XIT
Application.DisplayAlerts = False
For Each sh In ThisWorkbook.Worksheets
With sh
If IsEmpty(.Range(sTestCellAddress )) Then
.Delete
End If
End With
Next sh

XIT:

Application.DisplayAlerts = True

End Sub

---
Regards,
Norman



"Peter" wrote in message
...
Hello All,

I am trying to figure out how to search a certain cell range (AA4), on
each
of upto 30 worksheets in the same workbook. Then if it finds that range
to
be
empty (ie: the page has not been used) delete it when exiting.

My workbook autosaves a file on exit using the same cell range on the
first
worksheet as it's filename.

Regards
Peter








  #6   Report Post  
Norman Jones
 
Posts: n/a
Default

Hi Peter,

Try this version,

Sub sTester()
Dim sh As Worksheet
Const sTestCellAddress As String = "AA4"

On Error GoTo XIT

Application.DisplayAlerts = False
For Each sh In ThisWorkbook.Worksheets
With sh
If IsEmpty(.Range(sTestCellAddress)) Then
sh.Unprotect password:="OpenSaysMe"
.Delete
End If
End With
Next sh

XIT:

Application.DisplayAlerts = True

End Sub


In the above, change "OpenSaysMe" to your used password.

As before, change the name of the routine to suit.


---
Regards,
Norman



"Peter" wrote in message
...
Sorry Norman, my bad.

I think the problem is the worksheets are, and in my case, need to be
protected.
Is there a way of removing the protection, doing the deletion, then
re-adding the protection to the pages that remain?

Regards
Peter

"Norman Jones" wrote:

Hi Peter,

This seems to work well, but it only works for page 1.


Are you sure? In testing, all sheets whose AA4 cell is empty are deleted.
The exception to this would be where none of the worksheets has a
populated
AA4 cell, In this case the last worksheet would be retained as a workbook
is
required to have a minimum of one worksheet.

I can't see why it's not working. I tried to integrate your code with
this,
but with no further success.


Put the suggested macro a normal module of the workbook (not in the
ThisWorkbook module or the worksheet modules). Then amend the
Workbook_BeforeClose macro to call the suggested macro, e.g.:

Private Sub Workbook_BeforeClose(cancel As Boolean)
Dim savepath As String

savepath = "C:\Company\Invoice\"

sTester

Me.SaveAs Filename:=savepath _
& Range("AA4").Value & ".xls"
End Sub

You may wish to change the name of the suggested macro from Sub STester()
to (say) Sub SheetsDelete(). If you change the macro name, change
sTester
line in the Workbook_BeforeClose routine to accord with the amended name.


---
Regards,
Norman



"Peter" wrote in message
...
Hi Norman,
Thanks for the reply..
This seems to work well, but it only works for page 1. If there is data
on
page 2 or more it saves the whole book still.

This is the code I use when exiting Excel to autosave the workbook.

Private Sub Workbook_BeforeClose(cancel As Boolean)

Dim savepath As String
savepath = "c:\company\invoice\"
ActiveWorkbook.SaveAs Filename:=savepath & Range("AA4").Value & ".xls"

End Sub

I can't see why it's not working. I tried to integrate your code with
this,
but with no further success.

Regards
Peter

"Norman Jones" wrote:

Hi Peter,

Try:

Sub sTester()
Dim sh As Worksheet
Const sTestCellAddress As String = "AA4"

On Error GoTo XIT
Application.DisplayAlerts = False
For Each sh In ThisWorkbook.Worksheets
With sh
If IsEmpty(.Range(sTestCellAddress )) Then
.Delete
End If
End With
Next sh

XIT:

Application.DisplayAlerts = True

End Sub

---
Regards,
Norman



"Peter" wrote in message
...
Hello All,

I am trying to figure out how to search a certain cell range (AA4),
on
each
of upto 30 worksheets in the same workbook. Then if it finds that
range
to
be
empty (ie: the page has not been used) delete it when exiting.

My workbook autosaves a file on exit using the same cell range on
the
first
worksheet as it's filename.

Regards
Peter








  #7   Report Post  
Peter
 
Posts: n/a
Default

Thanks Norman, that solved the problem.

Well after I realised it was the Workbook I had to unprotect and not the
Worksheet it was.

Thankyou again.

Regards
Peter


"Norman Jones" wrote:

Hi Peter,

Try this version,

Sub sTester()
Dim sh As Worksheet
Const sTestCellAddress As String = "AA4"

On Error GoTo XIT

Application.DisplayAlerts = False
For Each sh In ThisWorkbook.Worksheets
With sh
If IsEmpty(.Range(sTestCellAddress)) Then
sh.Unprotect password:="OpenSaysMe"
.Delete
End If
End With
Next sh

XIT:

Application.DisplayAlerts = True

End Sub


In the above, change "OpenSaysMe" to your used password.

As before, change the name of the routine to suit.


---
Regards,
Norman



"Peter" wrote in message
...
Sorry Norman, my bad.

I think the problem is the worksheets are, and in my case, need to be
protected.
Is there a way of removing the protection, doing the deletion, then
re-adding the protection to the pages that remain?

Regards
Peter

"Norman Jones" wrote:

Hi Peter,

This seems to work well, but it only works for page 1.

Are you sure? In testing, all sheets whose AA4 cell is empty are deleted.
The exception to this would be where none of the worksheets has a
populated
AA4 cell, In this case the last worksheet would be retained as a workbook
is
required to have a minimum of one worksheet.

I can't see why it's not working. I tried to integrate your code with
this,
but with no further success.

Put the suggested macro a normal module of the workbook (not in the
ThisWorkbook module or the worksheet modules). Then amend the
Workbook_BeforeClose macro to call the suggested macro, e.g.:

Private Sub Workbook_BeforeClose(cancel As Boolean)
Dim savepath As String

savepath = "C:\Company\Invoice\"

sTester

Me.SaveAs Filename:=savepath _
& Range("AA4").Value & ".xls"
End Sub

You may wish to change the name of the suggested macro from Sub STester()
to (say) Sub SheetsDelete(). If you change the macro name, change
sTester
line in the Workbook_BeforeClose routine to accord with the amended name.


---
Regards,
Norman



"Peter" wrote in message
...
Hi Norman,
Thanks for the reply..
This seems to work well, but it only works for page 1. If there is data
on
page 2 or more it saves the whole book still.

This is the code I use when exiting Excel to autosave the workbook.

Private Sub Workbook_BeforeClose(cancel As Boolean)

Dim savepath As String
savepath = "c:\company\invoice\"
ActiveWorkbook.SaveAs Filename:=savepath & Range("AA4").Value & ".xls"

End Sub

I can't see why it's not working. I tried to integrate your code with
this,
but with no further success.

Regards
Peter

"Norman Jones" wrote:

Hi Peter,

Try:

Sub sTester()
Dim sh As Worksheet
Const sTestCellAddress As String = "AA4"

On Error GoTo XIT
Application.DisplayAlerts = False
For Each sh In ThisWorkbook.Worksheets
With sh
If IsEmpty(.Range(sTestCellAddress )) Then
.Delete
End If
End With
Next sh

XIT:

Application.DisplayAlerts = True

End Sub

---
Regards,
Norman



"Peter" wrote in message
...
Hello All,

I am trying to figure out how to search a certain cell range (AA4),
on
each
of upto 30 worksheets in the same workbook. Then if it finds that
range
to
be
empty (ie: the page has not been used) delete it when exiting.

My workbook autosaves a file on exit using the same cell range on
the
first
worksheet as it's filename.

Regards
Peter









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
Count the number of worksheets in a workbook Vincdc Excel Discussion (Misc queries) 7 January 17th 05 11:57 PM
can i make a formula to search keywords in a excel workbook? gorillayam Excel Worksheet Functions 0 January 15th 05 02:25 AM
Slow opening Excel Workbook with over 50 Worksheets KathyRice Excel Discussion (Misc queries) 1 January 4th 05 11:49 PM
Removing links to other worksheets from within a workbook rjb Excel Discussion (Misc queries) 2 December 9th 04 08:04 AM
search multiple worksheets for an item and return the Wsheets name Chris Excel Worksheet Functions 16 November 7th 04 12:15 PM


All times are GMT +1. The time now is 05:58 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"