I have this code written to take save as file name from excel range and copy pivot ranges and paste in template workbook (with macro in it) and save file in New Folder.
Now I want to call macro from that workbook in this Macro (which is in another workbook). Is it possible ? TIA
Sub Data()
Dim WB1 As Workbook
Dim WB2 As Workbook
Dim WB3 As Workbook
Dim WB4 As Workbook
Dim Temp As Workbook
Dim fname As String
Dim Path As String
Application.DisplayAlerts = False
Set WB1 = Workbooks.Open("C:/VB Code/WB1 Master.xlsm")
Set WB2 = Workbooks.Open("C:/VB Code/WB2 Master.xlsx")
Set WB3 = Workbooks.Open("C:/VB Code/WB3 Master.xlsx")
Set WB4 = Workbooks.Open("C:/VB Code/WB4 Master.xlsx.xlsx")
Set Temp = Workbooks.Open("C:/VB Code/Template_Blank.xlsm")
WB1.Sheets("Analysis").Range("J1").Copy
Temp.Sheets("PPT").Range("B1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=True, Transpose:=False
WB1.Sheets("Analysis").Range("A11:M71").Copy
Temp.Sheets("Data").Range("B4").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=True, Transpose:=False
WB2.Sheets("Analysis").Range("B17:M17").Copy
Temp.Sheets("Data").Range("X27").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=True, Transpose:=False
WB3.Sheets("Analysis").Range("B9:M9").Copy
Temp.Sheets("Data").Range("X37").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=True, Transpose:=False
WB4.Sheets("Analysis").Range("B6:B17").Copy
Temp.Sheets("Data").Range("X16").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=True, Transpose:=True
Workbooks("Template_Blank.xlsm").Activate
Sheets("PPT").Activate
Range("A1").Activate
ActiveWorkbook.RefreshAll
Path = "C:/VB Code/New folder/"
fname = Range("B1") & ".xlsm"
ActiveWorkbook.SaveAs Filename:=Path & fname
Application.DisplayAlerts = True
End Sub
Sub SaveFiles()
Call Data
*** There's a macro in Temp workbook called CreatePPT (which is saved after pasting data from different workbooks), I want to call that Macro here from that saved workbook***
End Sub
Should be close:
Sub Data()
Const SAVE_PATH As String = "C:/VB Code/New folder/"
Dim WB1 As Workbook, WB2 As Workbook, WB3 As Workbook, WB4 As Workbook
Dim Temp As Workbook, fName As String
Application.DisplayAlerts = False
Set WB1 = Workbooks.Open("C:/VB Code/WB1 Master.xlsm")
Set WB2 = Workbooks.Open("C:/VB Code/WB2 Master.xlsx")
Set WB3 = Workbooks.Open("C:/VB Code/WB3 Master.xlsx")
Set WB4 = Workbooks.Open("C:/VB Code/WB4 Master.xlsx.xlsx")
Set Temp = Workbooks.Open("C:/VB Code/Template_Blank.xlsm")
CopyValues WB1.Sheets("Analysis").Range("J1"), Temp.Sheets("PPT").Range("B1")
CopyValues WB1.Sheets("Analysis").Range("A11:M71"), Temp.Sheets("Data").Range("B4")
CopyValues WB2.Sheets("Analysis").Range("B17:M17"), Temp.Sheets("Data").Range("X27")
CopyValues WB3.Sheets("Analysis").Range("B9:M9"), Temp.Sheets("Data").Range("X37")
CopyValues WB4.Sheets("Analysis").Range("B6:B17"), Temp.Sheets("Data").Range("X16")
Temp.Activate
Temp.RefreshAll
With Temp.Sheets("PPT")
.Select
.Range("A1").Activate
fName = .Range("B1") & ".xlsm"
End With
Temp.SaveAs Filename:=SAVE_PATH & fName
Application.Run "'" & Temp.Name & "'!CreatePPT" 'run Sub in saved file...
Application.DisplayAlerts = True
End Sub
'utility sub for copying values from `rngFrom` to `rngTo`
Sub CopyValues(rngFrom As Range, rngTo As Range)
With rngFrom
rngTo.Resize(.Rows.Count, .Columns.Count).Value = .Value
End With
End Sub
Good resource for Application.Run
- https://www.rondebruin.nl/win/s9/win001.htm