I have this huge excel file with macros, it works perfectly on windows, but on MacOs it gives me an error 1004. Can somebody help me to translate following code so that it works on Macos? Or actually, can somebody translate it to work on Excel (Macos), because I have absolute no understanding of coding. If somebody can help me with this, I don't have to install Windows to my Mac :)
Sub SaveAsPdf(train)
'On Error Resume Next
'Windows(ThisWorkbook.Name).Activate
Application.Goto reference:="date"
days = Year(ActiveCell.Value) & Month(ActiveCell.Value) & Day(ActiveCell.Value)
Application.Goto reference:="path"
Path = ActiveCell.Value
If Right(Path, 1) <> "\" Then
Path = Path & "\"
End If
ws = "Train " & train & " Production schedule"
Sheets(ws).Select
Time_Stamp = Format(Now(), "yyyymmdd_HhNn")
TNimi = Path & ws & Time_Stamp & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
TNimi, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
ws = "General Schedule " & train
fname = "General Schedule Train " & train
Sheets(ws).Select
Time_Stamp = Format(Now(), "yyyymmdd_HhNn")
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Path & fname & "_" & Time_Stamp & ".pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Sheets("Break Plan Input").Select
End Sub
Sub SaveQSheet(train)
Sheets("Break Plan Input").Select
Application.Goto reference:="date"
days = Year(ActiveCell.Value) & Month(ActiveCell.Value) & Day(ActiveCell.Value)
Application.Goto reference:="path"
Path = ActiveCell.Value
If Right(Path, 1) <> "\" Then
Path = Path & "\"
End If
Time_Stamp = Format(Now(), "yyyymmdd_HhNn")
Sheets("Inspection and Sold Info").Select
Sheets("Inspection and Sold Info").Copy
Range("A2").Select
ActiveWorkbook.SaveAs Filename:=Path & "Train " & train & " Inspection and Sold Info " & Time_Stamp & ".xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close
Sheets("Break Plan Input").Select
End Sub
Path defined
Related
I wrote a code for PDF export in Excel for Mac Office 2019 with a variable filename. It's working despite Mac's permission bugs with VBA saving as when using the makro for the first time Excel asks for the permission to access the concerning folder.
My question:
Can I anyhow give new users the option to choose their exporting path the first time they are using the makro or do I have to adjust the code for every new user personally?
Here's my (otherwise working) code so far:
Sub als_PDF_speichern_recorded_mac()
ChDir "/Users/Admin/Documents/Dokumente/Finanzen/2021/Rechnungen 2021/"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
"/Users/Admin/Documents/Dokumente/Finanzen/2021/Rechnungen 2021/Rechnung_" & ActiveSheet.Range("D11") & ".pdf" _
, Quality:=xlQualityMinimum, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True
End Sub
EDIT
I might have a solution working universally for Mac users. It's not following my original intent that users can choose the path at first use but it's supposed to be exporting the PDF to the current path of the workbook and creating a folder if not existing already.
Please could someone with Excel for Mac (I'm using 2019) confirm:
Sub exportPDF_mac()
'export to currentpath/greatnewfolder
ChDir "/" & ActiveWorkbook.Path
MakeFolderIfNotExist (ThisWorkbook.Path & Application.PathSeparator & "greatnewfolder")
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
"/" & ActiveWorkbook.Path & "/greatnewfolder/greatfile_" & ActiveSheet.Range("D11") & ".pdf" _
, Quality:=xlQualityMinimum, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True
End Sub
Function MakeFolderIfNotExist(Folderstring As String)
' Ron de Bruin, 2-March-2019
' http://www.rondebruin.nl/mac/mac010.htm
Dim ScriptToMakeFolder As String
Dim TestStr As String
Dim FolderStr As String
If Val(Application.Version) < 15 Then
ScriptToMakeFolder = "tell application " & Chr(34) & _
"Finder" & Chr(34) & Chr(13)
ScriptToMakeFolder = ScriptToMakeFolder & _
"do shell script ""mkdir -p "" & quoted form of posix path of (" & _
Chr(34) & Folderstring & Chr(34) & ")" & Chr(13)
ScriptToMakeFolder = ScriptToMakeFolder & "end tell"
On Error Resume Next
MacScript (ScriptToMakeFolder)
On Error GoTo 0
Else
FolderStr = MacScript("return POSIX path of (" & _
Chr(34) & Folderstring & Chr(34) & ")")
On Error Resume Next
TestStr = Dir(FolderStr & "*", vbDirectory)
On Error GoTo 0
If TestStr = vbNullString Then
MkDir FolderStr
End If
End If
End Function
Thanks in advance!
Thomas
this code used to run perfectly now is having time error 53, file not found. Not sure what is wrong
Sub printxxx()
' Print_quote XXX Macro
ActiveSheet.PageSetup.Orientation = xlLandscape
Worksheets("Quote").PageSetup.PrintArea = "$H$6:$Z$133"
strFile = ThisWorkbook.Path & "\" & strFile
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.Path & "\" & CreateObject("Scripting.FileSystemObject").GetFile(ThisWorkbook.FullName).ParentFolder.Name & " XXXQuote ", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True
ActiveSheet.PageSetup.Orientation = xlPortrait
End Sub
The following code runs perfectly from my desktop or other folder paths. Except in a shared drive that keeps giving me a run-time error 5
The error appears on the following line
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.Path & "\" & Cell & ".pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True
The full code
Private Sub CommandButton1_Click()
Dim ReportSheet As Worksheet
If ThisWorkbook.Worksheets("Cover Page").Range("F11").Value <> vbNullString Then
FormatDate = Format(Sheets("Cover Page").Range("F11"), "MMMM DD, YYYY")
End If
Cell = "Statements - " & FormatDate
ThisWorkbook.Sheets(Array("Sheet1", " Sheet2", " Sheet3”).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.Path & "\" & Cell & ".pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True
Application.Goto Reference:=Sheets("X").Range("A1")
End Sub
i have this code for convering my excel file to pdf but after changing format, i have a pdf file with lots of pages(in every page just 4 coumns with 19 rows while my source file has 30 columns and rows , i want to see same as excel file but in pdf format , any body can help me! thanks in advance
Sub creatpdf()
Dim fName As String
Dim fname1 As String
With Worksheets("Output_" & Date)
fName2 = .Range("D3").Value
fName3 = "_BOM"
End With
BrowseForFolder = "X:\\output\\"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
BrowseForFolder & "\" & fName2 & fName3 & "\" & "\" & fName2 & fName3 & "\" & "BOM" & "\" & fName2 & fName3, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False,
OpenAfterPublish:=False
End Sub
I have the following macro to create a folder within the folder where the Excel file is:
Sub Folder_Test()
If Dir(ThisWorkbook.Path & "\" & "Folder_01", vbDirectory) = "Folder_01" Then
MsgBox "Folder already exists!"
Else
MkDir Application.ThisWorkbook.Path & "\" & "Folder_01"
End If
End Sub
And I have the following macro to create a PDF file:
Sub Button_PDF_200()
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.Path & "\" & "test.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub
Now I want that the PDF file which is created in the second macro will be saved in the folder which is created in the first macro.
Do you have any idea how I can do this?
Maybe just that?
Sub Button_PDF_200()
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.Path & "\" & "Folder_01" & "\" & "test.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub
That is changing the Filename argument within the sub Button_PDF_200 from
ThisWorkbook.Path & "\" & "test.pdf"
to
ThisWorkbook.Path & "\" & "Folder_01" & "\" & "test.pdf"
..
Hi Michi,
also you can try something like this:
pdfName = ActiveSheet.Range("T1")
ChDir "C:\Temp\" 'This is where youo set a defult file path.
fileSaveName = Application.GetSaveAsFilename(pdfName, _
fileFilter:="PDF Files (*.pdf), *.pdf")
If fileSaveName <> False Then
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, fileName:= _
fileSaveName _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True
End If
MsgBox "File Saved to" & " " & fileSaveName
Have fun!