Solved

Compile error variable not defined

Posted on 2013-01-23
15
398 Views
Last Modified: 2013-01-23
Hi Experts

I am getting a compile error "variable not defined" with the following vba code

On line  If strFilename <> wkDst.Name Then

The workbooks ate saved in excel 2007 as . Xlsm file....here is the link to the original question :-
http://www.experts-exchange.com/Software/Office_Productivity/Office_Suites/MS_Office/Excel/Q_28003426.html

Sub Conso()
Dim wbDst As Workbook
Dim wbSrc As Workbook
Dim strFilename As String

    Set wbDst = ThisWorkbook  ' Workbooks.Open("C:\Documents and Settings\Test\Master Template.xls")
   
    strFilename = Dir("C:\Documents and Settings\Test\*.xls")
   
     While strFilename <> ""
   
        If strFilename <> wkDst.Name Then
       
            Set wbSrc = Workbooks.Open("C:\Documents and Settings\Test\" & strFilename)

on error resume next        
wbSrc.Worksheets("cm").UsedRange.Copy wbDst.Worksheets("cm1").Range("A" & wbDst.Rows.Count).End(xlUp).Offset(1)
                 
wbSrc.Worksheets("orange").UsedRange.Copy wbDst.Worksheets("orange1").Range("A" & wbDst.Rows.Count).End(xlUp).Offset(1)

wbSrc.Worksheets("apple").UsedRange.Copy wbDst.Worksheets("apple1").Range("A" & wbDst.Rows.Count).End(xlUp).Offset(1)
on error goto 0
           
             wbSrc.Close
        End If
       
        strFilename = Dir()
       
    Wend
                 
End Sub
0
Comment
Question by:route217
  • 11
  • 4
15 Comments
 
LVL 24

Expert Comment

by:Steve
Comment Utility
wkDst.Name is not deifned.. you have used wbDst

Use the same spelling and all will be fine.
0
 

Author Comment

by:route217
Comment Utility
Ok fixed the compile error -

Now the macro is not copying the data from source WBk to master workbook...taking this as an example
wbSrc.Worksheets("cm").UsedRange.Copy wbDst.Worksheets("cm1").Range("A" & wbDst.Rows.Count).End(xlUp).Offset(1)

I have changed a to m18 in the range only...
0
 

Author Comment

by:route217
Comment Utility
Thanks Barman...
Kindly refer to second post
0
 
LVL 24

Expert Comment

by:Steve
Comment Utility
How have you changed the code? You say M18? This will likely error.
Can you show the code as it is in error.
0
 

Author Comment

by:route217
Comment Utility
Hi Barman... There is no error just the data is not being copied across...
0
 

Author Comment

by:route217
Comment Utility
I have just changed the range part of the code nothing else...and worksheet from .xls to . Xlsm
0
 

Author Comment

by:route217
Comment Utility
Apologies Barman...I hope my last message was not confusing ...
0
Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

 

Author Comment

by:route217
Comment Utility
Hi Barman

As a final point I  not just copying row A but the entire spreadsheet data starting a row a??...
The two spreadsheets in both workbooks are the same "apples for apples"
0
 
LVL 24

Accepted Solution

by:
Steve earned 500 total points
Comment Utility
ok to explain the copy lines:

wbSrc.Worksheets("cm").UsedRange.Copy wbDst.Worksheets("cm1").Range("A" & wbDst.Rows.Count).End(xlUp).Offset(1)

Open in new window


comes in two parts

The Copy (From)
wbSrc.Worksheets("cm").UsedRange.Copy

Open in new window

This takes the UsedRange of data on sheet named cm

And the Paste (To) which is straight after the copy sepertaed by space:
wbDst.Worksheets("cm1").Range("A" & wbDst.Rows.Count).End(xlUp).Offset(1)

Open in new window

This takes the copied data and pastes it to the destination file worksheet cm1 in a range Sarting with a top left position in Column A and Row number one down from the last row of the destination sheet.

It is very important to have the two sheet names correct in destination and source workbooks... ie the current code goes from cm to cm1 or from apple to apple1
If the sheets do not exist there will be no copy.

So check the sheet names match correctly (including case sensitivity) and it should be OK.
If you need to change the top left starting column just change the A but do not add a number to it.

If you have added M18 in place of A you will start pasting data a long way furthur down your sheet as if you data starts at row 18 it will paste to row M1818!
0
 

Author Comment

by:route217
Comment Utility
Thanks for the constructive feedback..positive as always...I have double checked the sheet names and about to change the M18 to m... To see final results..
0
 

Author Comment

by:route217
Comment Utility
Ok tested the macro by changing a to m on the copy range and still the macro copies the data from source worksheet m18 into destination worksheet row m 32...and then closes the first work and opens the second workbook and copy the data from m18 and pastes the data into the workbook in col m row 64....
0
 

Author Comment

by:route217
Comment Utility
Point to note the starting point of the actual data less any headers info is cell m18...on both sheets diff workbooks...
0
 

Author Comment

by:route217
Comment Utility
Hi Barman

Thanks for assistance on thus question... Going to post a better worded question...
0
 
LVL 24

Expert Comment

by:Steve
Comment Utility
Could you please provide a sample of source and destination workbooks.

This will allow me to test and re-code.

I think your bigest issues are the selection of the ranges in the from and to of the copy.
i.e... the use of UsedRange is not great as it can pick up rows and columns which it shouldn't.
and the Rows.Count xlUp method may be selecting the wrong row.

Sample workbooks will get us to the best solution fastest as I will not be "flying blind"

Thanks,
Steve.
0
 

Author Comment

by:route217
Comment Utility
Barman

I'll cannot upload a test file until this evening...
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Suggested Solutions

Drop Down List with Unique/Distinct Values (Part II - ComboBox or ListBox and Data Validation List Bonus!) David Miller (dlmille) Intro This article focuses on delivering unique, sorted lists to list objects (e.g., ComboBox, ListBox) and Dat…
This article descibes how to create a connection between Excel and SAP and how to move data from Excel to SAP or the other way around.
This Micro Tutorial will demonstrate how to use a scrolling table in Microsoft Excel using the INDEX function.
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

6 Experts available now in Live!

Get 1:1 Help Now