Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Excel - variable to apply to active workbook?

Posted on 2014-12-04
2
Medium Priority
?
79 Views
Last Modified: 2014-12-04
Hello Experts,

I have two workbooks - one with a macro and a button to trigger it (wkbk1), and one with data (wkbk2 - it's actually a csv file).  The following works just fine when I run it from within wkbk2:

Dim LR As Long
LR = Range("A" & Rows.Count).End(xlUp).Row
'open the csv file and begin formatting the data
'the following line is commented out when running it from within the csv file
'but is un-commented when I run it from the external workbook
'Workbooks.Open Filename:="F:\Folder\File.csv"

'shift column M to the right
Columns("M:M").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

'insert formula into M2
Range("M2").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-1]=0,""No"",""Yes"")"

'paste the formula down column M to the last populated cell
Range("M2").AutoFill Destination:=Range("M2:M" & LR)

'copy header from L1 to M1
Range("L1").Select
Selection.Copy
Range("M1").Select
ActiveSheet.Paste
Range("A2").Select

'turn off alerts to save over the existing file
Application.DisplayAlerts = False

'save the csv file as an xlsx file
ChDir "F:\Folder"
ActiveWorkbook.SaveAs Filename:="F:\Folder\File.xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

'turn on alerts again
Application.DisplayAlerts = True

'close the workbook
Workbooks("File.xlsx").Close

'exit Excel
Application.Quit

Open in new window


But I need it to run from another workbook (wkbk1).  However, it places the formula in M2, copies it to M1, and then moves on to the next step (copying the column header from L1 to M1) without pasting the formula down column M.  It appears that LR is based on column A of wkbk1 and not wkbk2.  I need LR to be based on column A in wkbk2, the active workbook, not wkbk1.  

Any help would be greatly appreciated.

I am using Excel 2010 on Windows 7.

Thanks,
J
0
Comment
Question by:ferguson_jerald
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 18

Accepted Solution

by:
Simon earned 2000 total points
ID: 40481204
Move line 2 of your code to just below line 6, so that the row count isn't done until the csv file is opened.

Like this:
Dim LR As Long

'open the csv file and begin formatting the data
'the following line is commented out when running it from within the csv file
'but is un-commented when I run it from the external workbook
Workbooks.Open Filename:="F:\Folder\File.csv"
LR = Range("A" & Rows.Count).End(xlUp).Row --Count the used rows in the newly opened file.

'shift column M to the right
Columns("M:M").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

Open in new window

0
 

Author Closing Comment

by:ferguson_jerald
ID: 40481217
Excellent!  Thanks!
0

Featured Post

Important Lessons on Recovering from Petya

In their most recent webinar, Skyport Systems explores ways to isolate and protect critical databases to keep the core of your company safe from harm.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Some code to ensure data integrity when using macros within Excel. Also included code that helps secure your data within an Excel workbook.
In Part II of this series, I will discuss how to identify all open instances of Excel and enumerate the workbooks, spreadsheets, and named ranges within each of those instances.
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…
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…

715 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