PC Review


Reply
Thread Tools Rate Thread

Correction Needed in Macro

 
 
K
Guest
Posts: n/a
 
      21st Nov 2008
I need correction in macro below. Basically I am tring to open every
"xlsx" format file in a folder and copy specified ranges of that file
into specified range of Workbook("DATA") and after pasting data I want
to close that "xlsx" file with "Save changes = True" and i want this
to happen untill there is no file left in that folder. I am getting
error messages when i run this macro below. Please can any friend can
help that what is wrong with this macro or what am i doing wrong. Any
help will be much appricated.

Sub Update()
Dim fldrName As String, fName As String, wb As Workbooks
fldrName = "F:\TRANSFERS & VIREMENTS RECORD\"
fName = Dir(fldrName & "*.xlsx")
LstCl = Cells(Rows.Count, "B").End(xlUp).Row
LstCl2 = Cells(Rows.Count, "A").End(xlUp).Row
LstCl3 = Cells(Rows.Count, "M").End(xlUp).Row
LstCl4 = Cells(Rows.Count, "N").End(xlUp).Row
LstCl5 = Cells(Rows.Count, "O").End(xlUp).Row
LstCl6 = Cells(Rows.Count, "P").End(xlUp).Row
LstCl7 = Cells(Rows.Count, "Q").End(xlUp).Row
LstCl8 = Cells(Rows.Count, "R").End(xlUp).Row
LstCl9 = Cells(Rows.Count, "S").End(xlUp).Row
Do While fName <> ""
wb.Open (fldrName & fName)
wb(fName).Activate
ActiveSheet.Unprotect Password:="mbc"
ActiveSheet.Range(Range("B15:B" & LstCl), Range("L" & LstCl)).Copy
wb("DATA.xlsm").Activate
ActiveSheet.Range("B" & LstCl + 1).PasteSpecial xlPasteValues
wb(fName).Activate
ActiveSheet.Range("K1").Copy
wb("DATA.xlsm").Activate
ActiveSheet.Range(Range("A" & LstCl2 + 1), Range("A" &
LstCl)).PasteSpecial xlPasteValues
wb(fName).Activate
ActiveSheet.Range("K6").Copy
wb("DATA.xlsm").Activate
ActiveSheet.Range(Range("M" & LstCl3 + 1), Range("M" &
LstCl)).PasteSpecial xlPasteValues
wb(fName).Activate
ActiveSheet.Range("K4").Copy
wb("DATA.xlsm").Activate
ActiveSheet.Range(Range("N" & LstCl4 + 1), Range("N" &
LstCl)).PasteSpecial xlPasteValues
wb(fName).Activate
ActiveSheet.Range("D8").Copy
wb("DATA.xlsm").Activate
ActiveSheet.Range(Range("O" & LstCl5 + 1), Range("O" &
LstCl)).PasteSpecial xlPasteValues
wb(fName).Activate
ActiveSheet.Range("D6").Copy
wb("DATA.xlsm").Activate
ActiveSheet.Range(Range("P" & LstCl6 + 1), Range("P" &
LstCl)).PasteSpecial xlPasteValues
wb(fName).Activate
ActiveSheet.Range("D10").Copy
wb("DATA.xlsm").Activate
ActiveSheet.Range(Range("Q" & LstCl7 + 1), Range("Q" &
LstCl)).PasteSpecial xlPasteValues
wb(fName).Activate
ActiveSheet.Range("K8").Copy
wb("DATA.xlsm").Activate
ActiveSheet.Range(Range("R" & LstCl8 + 1), Range("R" &
LstCl)).PasteSpecial xlPasteValues
wb(fName).Activate
ActiveSheet.Range("K10").Copy
wb("DATA.xlsm").Activate
ActiveSheet.Range(Range("S" & LstCl9 + 1), Range("S" &
LstCl)).PasteSpecial xlPasteValues
Application.CutCopyMode = False
ActiveSheet.Range("A1").Select
wb(fName).Activate
ActiveSheet.Protect Password:="mbc"
wb(fName).Close True
fName = Dir()
Loop

End Sub
 
Reply With Quote
 
 
 
 
Jim Thomlinson
Guest
Posts: n/a
 
      21st Nov 2008
You seem to misunderstand how the workbook object functions. The workbook
object creates a reference to a specific workbook. The same wha tthat you can
use activeworkbook, you will be able to use the workbook object.

Note that the workbook where the code is running will is always
ThisWorkbook. Also by using the workbook objects there is no reason to select
or activate things. finallly if all you are after is the values then just set
the values on your destination workbook equal to the values in your source
books...

dim wb as workbook
dim wksSource as worksheet
dim wksDestination as worksheet

set wksDestination = thisworkbook.sheets("Destination") 'or whatever sheet

set wb = workbooks.open(fldrName & fName)
set wksSource = wb.sheets("Source") 'explicitly define the source sheet
wksdestination.range("A1:A10").value = wkssource.range("B1:B10").value

--
HTH...

Jim Thomlinson


"K" wrote:

> I need correction in macro below. Basically I am tring to open every
> "xlsx" format file in a folder and copy specified ranges of that file
> into specified range of Workbook("DATA") and after pasting data I want
> to close that "xlsx" file with "Save changes = True" and i want this
> to happen untill there is no file left in that folder. I am getting
> error messages when i run this macro below. Please can any friend can
> help that what is wrong with this macro or what am i doing wrong. Any
> help will be much appricated.
>
> Sub Update()
> Dim fldrName As String, fName As String, wb As Workbooks
> fldrName = "F:\TRANSFERS & VIREMENTS RECORD\"
> fName = Dir(fldrName & "*.xlsx")
> LstCl = Cells(Rows.Count, "B").End(xlUp).Row
> LstCl2 = Cells(Rows.Count, "A").End(xlUp).Row
> LstCl3 = Cells(Rows.Count, "M").End(xlUp).Row
> LstCl4 = Cells(Rows.Count, "N").End(xlUp).Row
> LstCl5 = Cells(Rows.Count, "O").End(xlUp).Row
> LstCl6 = Cells(Rows.Count, "P").End(xlUp).Row
> LstCl7 = Cells(Rows.Count, "Q").End(xlUp).Row
> LstCl8 = Cells(Rows.Count, "R").End(xlUp).Row
> LstCl9 = Cells(Rows.Count, "S").End(xlUp).Row
> Do While fName <> ""
> wb.Open (fldrName & fName)
> wb(fName).Activate
> ActiveSheet.Unprotect Password:="mbc"
> ActiveSheet.Range(Range("B15:B" & LstCl), Range("L" & LstCl)).Copy
> wb("DATA.xlsm").Activate
> ActiveSheet.Range("B" & LstCl + 1).PasteSpecial xlPasteValues
> wb(fName).Activate
> ActiveSheet.Range("K1").Copy
> wb("DATA.xlsm").Activate
> ActiveSheet.Range(Range("A" & LstCl2 + 1), Range("A" &
> LstCl)).PasteSpecial xlPasteValues
> wb(fName).Activate
> ActiveSheet.Range("K6").Copy
> wb("DATA.xlsm").Activate
> ActiveSheet.Range(Range("M" & LstCl3 + 1), Range("M" &
> LstCl)).PasteSpecial xlPasteValues
> wb(fName).Activate
> ActiveSheet.Range("K4").Copy
> wb("DATA.xlsm").Activate
> ActiveSheet.Range(Range("N" & LstCl4 + 1), Range("N" &
> LstCl)).PasteSpecial xlPasteValues
> wb(fName).Activate
> ActiveSheet.Range("D8").Copy
> wb("DATA.xlsm").Activate
> ActiveSheet.Range(Range("O" & LstCl5 + 1), Range("O" &
> LstCl)).PasteSpecial xlPasteValues
> wb(fName).Activate
> ActiveSheet.Range("D6").Copy
> wb("DATA.xlsm").Activate
> ActiveSheet.Range(Range("P" & LstCl6 + 1), Range("P" &
> LstCl)).PasteSpecial xlPasteValues
> wb(fName).Activate
> ActiveSheet.Range("D10").Copy
> wb("DATA.xlsm").Activate
> ActiveSheet.Range(Range("Q" & LstCl7 + 1), Range("Q" &
> LstCl)).PasteSpecial xlPasteValues
> wb(fName).Activate
> ActiveSheet.Range("K8").Copy
> wb("DATA.xlsm").Activate
> ActiveSheet.Range(Range("R" & LstCl8 + 1), Range("R" &
> LstCl)).PasteSpecial xlPasteValues
> wb(fName).Activate
> ActiveSheet.Range("K10").Copy
> wb("DATA.xlsm").Activate
> ActiveSheet.Range(Range("S" & LstCl9 + 1), Range("S" &
> LstCl)).PasteSpecial xlPasteValues
> Application.CutCopyMode = False
> ActiveSheet.Range("A1").Select
> wb(fName).Activate
> ActiveSheet.Protect Password:="mbc"
> wb(fName).Close True
> fName = Dir()
> Loop
>
> End Sub
>

 
Reply With Quote
Reply

Thread Tools
Rate This Thread
Rate This Thread:

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

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


Similar Threads
Thread Thread Starter Forum Replies Last Post
Macro correction needed K Microsoft Excel Programming 2 23rd Apr 2010 08:49 AM
CORRECTION NEEDED K Microsoft Excel Programming 4 2nd Jun 2008 07:13 PM
CORRECTION NEEDED IN MACRO K Microsoft Excel Programming 0 17th Apr 2008 10:41 AM
CORRECTION NEEDED K Microsoft Excel Programming 2 22nd Jan 2008 12:54 PM
correction needed K Microsoft Excel Programming 5 16th Dec 2007 08:32 PM


Features
 

Advertising
 

Newsgroups
 


All times are GMT +1. The time now is 11:32 PM.