Welcome to the { mindfrost82.com } forums.

You are currently viewing our boards as a guest which gives you limited access to view most discussions and access our other features. By joining our free community you will have access to post topics, communicate privately with other members (PM), respond to polls, upload content and access many other special features. Registration is fast, simple and absolutely free so please, join our community today!

If you have any problems with the registration process or your account login, please contact contact us.

Go Back   { mindfrost82.com } > Gadget Corner > Tech Newsgroups > Microsoft > MS Office > Excel

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1 (permalink)  
Old 07-23-2008, 05:34 PM
Christina
 
Posts: n/a
Macro HELP

I'm using the following code (author - Ron de Bruin) and need it to
add the worksheets to the workbook I have open instead of creating a
new workbook. Let's say the workbook I have open is "Christina.xls".
This is the workbook where I will be running the macro from.


Sub Get_Sheet(PasteAsValues As Boolean, SourceShName As String, _
SourceShIndex As Integer, myReturnedFiles As Variant)
Dim mybook As Workbook, BaseWks As Worksheet
Dim CalcMode As Long
Dim SourceSh As Variant
Dim sh As Worksheet
Dim I As Long

'Change ScreenUpdating, Calculation and EnableEvents
With Application
CalcMode = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
.EnableEvents = False
End With

On Error GoTo ExitTheSub

'Add a new workbook with one sheet
Set BaseWks = Workbooks.Add(xlWBATWorksheet).Worksheets(1)


'Check if we use a named sheet or the index
If SourceShName = "" Then
SourceSh = SourceShIndex
Else
SourceSh = SourceShName
End If

'Loop through all files in the array(myFiles)
For I = LBound(myReturnedFiles) To UBound(myReturnedFiles)
Set mybook = Nothing
On Error Resume Next
Set mybook = Workbooks.Open(myReturnedFiles(I))
On Error GoTo 0

If Not mybook Is Nothing Then

'Set sh and check if it is a valid
On Error Resume Next
Set sh = mybook.Sheets(SourceSh)

If Err.Number > 0 Then
Err.Clear
Set sh = Nothing
End If
On Error GoTo 0

If Not sh Is Nothing Then
sh.Copy
after:=BaseWks.Parent.Sheets(BaseWks.Parent.Sheets .Count)

On Error Resume Next
ActiveSheet.Name = mybook.Name
On Error GoTo 0

If PasteAsValues = True Then
With ActiveSheet.UsedRange
.Value = .Value
End With
End If

End If
'Close the workbook without saving
mybook.Close savechanges:=False
End If

'Open the next workbook
Next I

' delete the first sheet in the workbook
Application.DisplayAlerts = False
On Error Resume Next
BaseWks.Delete
On Error GoTo 0
Application.DisplayAlerts = True

ExitTheSub:
'Restore ScreenUpdating, Calculation and EnableEvents
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = CalcMode
End With
End Sub
Reply With Quote
  #2 (permalink)  
Old 07-23-2008, 05:45 PM
Dave Peterson
 
Posts: n/a
Re: Macro HELP

Untested, but I think it'll work:

Change this:
'Add a new workbook with one sheet
Set BaseWks = Workbooks.Add(xlWBATWorksheet).Worksheets(1

to:

'Add a new worksheet to the workbook with the macro
Set BaseWks = thisworkbook.worksheets.add




Christina wrote:
>
> I'm using the following code (author - Ron de Bruin) and need it to
> add the worksheets to the workbook I have open instead of creating a
> new workbook. Let's say the workbook I have open is "Christina.xls".
> This is the workbook where I will be running the macro from.
>
> Sub Get_Sheet(PasteAsValues As Boolean, SourceShName As String, _
> SourceShIndex As Integer, myReturnedFiles As Variant)
> Dim mybook As Workbook, BaseWks As Worksheet
> Dim CalcMode As Long
> Dim SourceSh As Variant
> Dim sh As Worksheet
> Dim I As Long
>
> 'Change ScreenUpdating, Calculation and EnableEvents
> With Application
> CalcMode = .Calculation
> .Calculation = xlCalculationManual
> .ScreenUpdating = False
> .EnableEvents = False
> End With
>
> On Error GoTo ExitTheSub
>
> 'Add a new workbook with one sheet
> Set BaseWks = Workbooks.Add(xlWBATWorksheet).Worksheets(1)
>
> 'Check if we use a named sheet or the index
> If SourceShName = "" Then
> SourceSh = SourceShIndex
> Else
> SourceSh = SourceShName
> End If
>
> 'Loop through all files in the array(myFiles)
> For I = LBound(myReturnedFiles) To UBound(myReturnedFiles)
> Set mybook = Nothing
> On Error Resume Next
> Set mybook = Workbooks.Open(myReturnedFiles(I))
> On Error GoTo 0
>
> If Not mybook Is Nothing Then
>
> 'Set sh and check if it is a valid
> On Error Resume Next
> Set sh = mybook.Sheets(SourceSh)
>
> If Err.Number > 0 Then
> Err.Clear
> Set sh = Nothing
> End If
> On Error GoTo 0
>
> If Not sh Is Nothing Then
> sh.Copy
> after:=BaseWks.Parent.Sheets(BaseWks.Parent.Sheets .Count)
>
> On Error Resume Next
> ActiveSheet.Name = mybook.Name
> On Error GoTo 0
>
> If PasteAsValues = True Then
> With ActiveSheet.UsedRange
> .Value = .Value
> End With
> End If
>
> End If
> 'Close the workbook without saving
> mybook.Close savechanges:=False
> End If
>
> 'Open the next workbook
> Next I
>
> ' delete the first sheet in the workbook
> Application.DisplayAlerts = False
> On Error Resume Next
> BaseWks.Delete
> On Error GoTo 0
> Application.DisplayAlerts = True
>
> ExitTheSub:
> 'Restore ScreenUpdating, Calculation and EnableEvents
> With Application
> .ScreenUpdating = True
> .EnableEvents = True
> .Calculation = CalcMode
> End With
> End Sub


--

Dave Peterson
Reply With Quote
  #3 (permalink)  
Old 07-23-2008, 08:15 PM
Christina
 
Posts: n/a
Re: Macro HELP

On Jul 23, 10:45*am, Dave Peterson <peter...@verizonXSPAM.net> wrote:
> Untested, but I think it'll work:
>
> Change this:
> * * 'Add a new workbook with one sheet
> * * Set BaseWks = Workbooks.Add(xlWBATWorksheet).Worksheets(1
>
> to:
>
> * * 'Add a new worksheet to the workbook with the macro
> * * Set BaseWks = thisworkbook.worksheets.add
>
>
>
>
>
> Christina wrote:
>
> > I'm using the following code (author - Ron de Bruin) and need it to
> > add the worksheets to the workbook I have open instead of creating a
> > new workbook. Let's say the workbook I have open is "Christina.xls".
> > This is the workbook where I will be running the macro from.

>
> > Sub Get_Sheet(PasteAsValues As Boolean, SourceShName As String, _
> > * * * * * * * SourceShIndex As Integer, myReturnedFiles As Variant)
> > * * Dim mybook As Workbook, BaseWks As Worksheet
> > * * Dim CalcMode As Long
> > * * Dim SourceSh As Variant
> > * * Dim sh As Worksheet
> > * * Dim I As Long

>
> > * * 'Change ScreenUpdating, Calculation and EnableEvents
> > * * With Application
> > * * * * CalcMode = .Calculation
> > * * * * .Calculation = xlCalculationManual
> > * * * * .ScreenUpdating = False
> > * * * * .EnableEvents = False
> > * * End With

>
> > * * On Error GoTo ExitTheSub

>
> > * * 'Add a new workbook with one sheet
> > * * Set BaseWks = Workbooks.Add(xlWBATWorksheet).Worksheets(1)

>
> > * * 'Check if we use a named sheet or the index
> > * * If SourceShName = "" Then
> > * * * * SourceSh = SourceShIndex
> > * * Else
> > * * * * SourceSh = SourceShName
> > * * End If

>
> > * * 'Loop through all files in the array(myFiles)
> > * * For I = LBound(myReturnedFiles) To UBound(myReturnedFiles)
> > * * * * Set mybook = Nothing
> > * * * * On Error Resume Next
> > * * * * Set mybook = Workbooks.Open(myReturnedFiles(I))
> > * * * * On Error GoTo 0

>
> > * * * * If Not mybook Is Nothing Then

>
> > * * * * * * 'Set sh and check if it is a valid
> > * * * * * * On Error Resume Next
> > * * * * * * Set sh = mybook.Sheets(SourceSh)

>
> > * * * * * * If Err.Number > 0 Then
> > * * * * * * * * Err.Clear
> > * * * * * * * * Set sh = Nothing
> > * * * * * * End If
> > * * * * * * On Error GoTo 0

>
> > * * * * * * If Not sh Is Nothing Then
> > * * * * * * * * sh.Copy
> > after:=BaseWks.Parent.Sheets(BaseWks.Parent.Sheets .Count)

>
> > * * * * * * * * On Error Resume Next
> > * * * * * * * * ActiveSheet.Name = mybook.Name
> > * * * * * * * * On Error GoTo 0

>
> > * * * * * * * * If PasteAsValues = True Then
> > * * * * * * * * * * With ActiveSheet.UsedRange
> > * * * * * * * * * * * * .Value = .Value
> > * * * * * * * * * * End With
> > * * * * * * * * End If

>
> > * * * * * * End If
> > * * * * * * 'Close the workbook without saving
> > * * * * * * mybook.Close savechanges:=False
> > * * * * End If

>
> > * * * * 'Open the next workbook
> > * * Next I

>
> > * * ' delete the first sheet in the workbook
> > * * Application.DisplayAlerts = False
> > * * On Error Resume Next
> > * * BaseWks.Delete
> > * * On Error GoTo 0
> > * * Application.DisplayAlerts = True

>
> > ExitTheSub:
> > * * 'Restore ScreenUpdating, Calculation and EnableEvents
> > * * With Application
> > * * * * .ScreenUpdating = True
> > * * * * .EnableEvents = True
> > * * * * .Calculation = CalcMode
> > * * End With
> > End Sub

>
> --
>
> Dave Peterson- Hide quoted text -
>
> - Show quoted text -


That worked! Thanks for your help!
Reply With Quote
Reply

  { mindfrost82.com } > Gadget Corner > Tech Newsgroups > Microsoft > MS Office > Excel


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

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



All times are GMT. The time now is 04:17 AM.


Powered by vBulletin, Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.
© 1999-2008 mindfrost82.com v11.0


Sponsors:
Wedding Flower Bouquet | Mortgage Calculator | Anime | Xecuter 3 Mod Chip | Electricity Suppliers



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114