• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 490
  • Last Modified:

Compile error variable not defined

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
route217
Asked:
route217
  • 11
  • 4
1 Solution
 
SteveCommented:
wkDst.Name is not deifned.. you have used wbDst

Use the same spelling and all will be fine.
0
 
route217Author Commented:
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
 
route217Author Commented:
Thanks Barman...
Kindly refer to second post
0
Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

 
SteveCommented:
How have you changed the code? You say M18? This will likely error.
Can you show the code as it is in error.
0
 
route217Author Commented:
Hi Barman... There is no error just the data is not being copied across...
0
 
route217Author Commented:
I have just changed the range part of the code nothing else...and worksheet from .xls to . Xlsm
0
 
route217Author Commented:
Apologies Barman...I hope my last message was not confusing ...
0
 
route217Author Commented:
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
 
SteveCommented:
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
 
route217Author Commented:
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
 
route217Author Commented:
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
 
route217Author Commented:
Point to note the starting point of the actual data less any headers info is cell m18...on both sheets diff workbooks...
0
 
route217Author Commented:
Hi Barman

Thanks for assistance on thus question... Going to post a better worded question...
0
 
SteveCommented:
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
 
route217Author Commented:
Barman

I'll cannot upload a test file until this evening...
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

  • 11
  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now