Solved

Excel spreedsheet

Posted on 2014-09-08
9
361 Views
Last Modified: 2014-09-10
I have an excel spreadsheet that I have saved as a template. I input people's data in to the worksheet and save it as that persons name. I have a macro on the template that I need to run at the end of each month but it will not work after I save the worksheet under the persons name. how can I get around this problem. Any help would be great. I will attach the macro if that will help. Thank you
Macro.txt
0
Comment
Question by:jodyreid
  • 4
  • 3
9 Comments
 
LVL 13

Expert Comment

by:Russell Fox
ID: 40310743
Make sure you are saving the renamed workbook as a macro-enabled workbook, xlsm, rather than the standard xlsx.
0
 
LVL 50

Expert Comment

by:teylyn
ID: 40310839
Hello,

looks like you run Excel 2003 or earlier, so the only file extension you need is .xls, both for macro and non-macro files.

The code you posted names several files verbatim.  It looks like it has been created by the macro recorder. It  opens a file called

T:\Occupational Therapy\Therapy.xls

and then assumes that another file called

John-Smith 03-08-1944.xls

is already open in another window.  Finally, the file is saved in

T:\Occupational Therapy\Export Files\140544.xls

This macro will not magically adjust if the file name is renamed. If you need a dynamic solution, you need to make the code dynamic.  

Can you explain in words what the macro is supposed to do? Then we can help construct it to work with other files.

cheers, teylyn
0
 

Author Comment

by:jodyreid
ID: 40311736
I have a template that every month we save for every patient in the office under the name of that person. Every day there is data added to that worksheet. At the end of the month i copy the end totals and paste them to a new work sheet and save that new work sheet under the number of the patient. I have the macro open both worksheets and copy the data from one to the other i have it copy the patients number and save the second worksheet under that number. The macro works great for the first patient but when i change the patient it stops at the line John-Smith 03-08-1944.xls. Is there a way to have it runn from all patients every when the worksheets name changes all the time.
Thank you for your time
0
 

Author Comment

by:jodyreid
ID: 40312181
Just checking to see if anyone can help me with this problem. I am not well versed with writing macros or any VBA stuff. Thank you for you time.
0
Control application downtime with dependency maps

Visualize the interdependencies between application components better with Applications Manager's automated application discovery and dependency mapping feature. Resolve performance issues faster by quickly isolating problematic components.

 

Author Comment

by:jodyreid
ID: 40312363
This is my workbook “Template.xlsx”. I need to open Workbook “Data.xlsx” and rename or save it at the end with the person number in cell G3. I then need to copy data from cell H6,H7,H9,H10,H12 and H13 and paste it to cells J5 to j11 in new workbook “451535”. The data in H6 on is in this format “=SUM(C6:G6)” and needs to be changed to the value of the sum so it can be copied over. I am going to be using the 2 workbooks about 60 times each month for the 60 people we will be working with so the macro needs to names and data each time. Is this possible. Thank you.
Template.xlsm
0
 
LVL 50

Expert Comment

by:teylyn
ID: 40313206
What version of Excel are you using? The code you posted above is for 2003 or earlier, but the files you post are 2007 or later. Please clarify. This is important.

What is the structure of the Data.xlsx file?

If you use a template, why don't you use a real template, i.e. an xltx or xltm file, which will create a new file when it is opened?

What are you doing with over 60 workbooks created each month? That looks like a very inefficient way of handling data. Have you considered using a database approach instead of individual files with identical tables?
0
 
LVL 50

Accepted Solution

by:
teylyn earned 500 total points
ID: 40313556
Here is some code I came up with. See attached file with the code in the code module.  

You need to change the file paths in the code to reflect your situation.  You can save the template file with a different name, just remember to save it as a macro-enabled file with the xlsm extension. When you run the macro, the file name of the file that runs the macro does not matter.

Sub SavePatientFile()
'
Dim InputPath As String
Dim InputFile As String
Dim OutputPath As String
Dim OutputFile As String
Dim PatientNumber As String
Dim SourceFile As Workbook
Dim SourceSheet As Worksheet
Dim TargetFile As Workbook
Dim TargetSheet As Worksheet

Set SourceFile = ThisWorkbook  ' This is the file that the macro runs from
Set SourceSheet = SourceFile.Worksheets("Sheet1") ' this is the worksheet with the patient data that we want to copy

InputPath = "T:\dump\input\" ' this is the folder with the Data file.                   **** CHANGE THIS TO REFLECT YOUR PATH ****
InputFile = "Data.xlsx" ' this is the file name of the Data file.                       **** CHANGE THIS TO YOUR DATA FILE NAME ****
PatientNumber = SourceSheet.Range("E3").Value ' the patient number in cell E3 of the current file
OutputPath = "T:\dump\output\" ' this is the folder where the new file must be saved    **** CHANGE THIS TO REFLECT YOUR PATH ****
OutputFile = PatientNumber & ".xlsx" ' this is the file name of the new file, using the patient number

    MsgBox "Patient number is " & PatientNumber ' just checking. Delete this row once you are confident things run fine

    Workbooks.Open Filename:=InputPath & InputFile
    Set TargetFile = ActiveWorkbook ' the newly opened input file becomes the target file for copy and paste
    Set TargetSheet = TargetFile.Worksheets("Sheet1") ' this is the worksheet into which the patient data will be pasted.
    
    SourceSheet.Range("H6:H7").Copy ' copy the first two cells ....
    TargetFile.Activate
    TargetSheet.Range("J5").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False '  ... and paste the values only
    SourceSheet.Range("H9:H10").Copy  ' copy the next two cells
    TargetSheet.Range("J7").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    SourceSheet.Range("H12:H13").Copy
    TargetSheet.Range("J9").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    
' save the data file as a new file in the output folder, with the patient number as the name.
    TargetFile.Activate
    ActiveWorkbook.SaveAs Filename:=OutputPath & OutputFile, FileFormat:= _
        xlOpenXMLWorkbook, CreateBackup:=False
    TargetFile.Close ' close the newly saved file
    SourceFile.Close ' close the source file
End Sub

Open in new window

Template.xlsm
0
 

Author Closing Comment

by:jodyreid
ID: 40314740
Thank you for your help on this. This worked great for me. Thank you again.
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

Meetings to discuss business process can waste time, and often do .  The meeting's dialog can get confusing when participants have different professional perspectives and backgrounds.  A jointly-developed process picture helps wade through the confu…
This article will guide you to convert a grid from a picture into Excel format using Microsoft OneNote and no other 3rd party application.
This Micro Tutorial will demonstrate how to use longer labels with horizontal bar charts instead of the vertical column chart.
This Micro Tutorial will demonstrate in Google Sheets how to use the HYPERLINK function to create live links inside your spreadsheet.

758 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

15 Experts available now in Live!

Get 1:1 Help Now