Hallo, :19:
öffne den
VBA Editor, drücke
Befehl+G (Befehl =
Apfel- bzw. Propeller-Taste), es erscheint ein leeres Fenster, da gibst du folgende Befehle
nacheinander - jeweils mit
Return abgeschlossen -
ein: :21:
Code:
? Thisworkbook.FullName
Code:
? Application.PathSeparator
Was gibt er aus? Ich gehe natürlich davon aus, dass du das in einer schon gespeicherten Datei testest.
Hallo, :19:
so, ich habe mir nun mal die Mühe gemacht und hier im Forum "
gesucht" - und siehe da: :21:
Laufzeitfehler 1004...
Der
1004rer kommt wohl doch von der "
Sandbox". Darauf hatte ich aber in
#19 schon hingewiesen.
Nutze einfach den Code von
Ron de Bruin - und fertig. Du brauchst von
hier eigentlich nur:
Code:
Sub SaveActiveSheetAsPDFInMacExcel2016()
'Ron de Bruin : 29-July-2017
'Test macro to save the ActiveSheet as pdf with ExportAsFixedFormat
'Note : if set it save the printarea
Dim FileName As String
Dim FolderName As String
Dim Folderstring As String
Dim FilePathName As String
'If my ActiveSheet is landscape, I must attach this line
'for making the PDF also landscape, seems to default to xlPortait
ActiveSheet.PageSetup.Orientation = ActiveSheet.PageSetup.Orientation
'Name of the folder in the Office folder
FolderName = "PDFSaveFolder"
'Name of the pdf file
FileName = ActiveSheet.Name & " " & Format(Now, "dd-mmm-yyyy hh-mm-ss") & ".pdf"
Folderstring = CreateFolderinMacOffice2016(NameFolder:=FolderName)
FilePathName = Folderstring & Application.PathSeparator & FileName
'expression A variable that represents a Workbook, Sheet, Chart, or Range object.
'the parameters are not working like in Excel for Windows
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
FilePathName, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False
MsgBox "You find the PDF file in this location : " & FilePathName
End Sub
Function CreateFolderinMacOffice2016(NameFolder As String) As String
'Function to create folder if it not exists in the Microsoft Office Folder
'Ron de Bruin : 8-Jan-2016
Dim OfficeFolder As String
Dim PathToFolder As String
Dim TestStr As String
OfficeFolder = MacScript("return POSIX path of (path to desktop folder) as string")
OfficeFolder = Replace(OfficeFolder, "/Desktop", "") & _
"Library/Group Containers/UBF8T346G9.Office/"
PathToFolder = OfficeFolder & NameFolder
On Error Resume Next
TestStr = Dir(PathToFolder, vbDirectory)
On Error GoTo 0
If TestStr = vbNullString Then
MkDir PathToFolder
'You can use this msgbox line for testing if you want
'MsgBox "You find the new folder in this location :" & PathToFolder
End If
CreateFolderinMacOffice2016 = PathToFolder
End Function
Damit wird das
aktive Tabellenblatt als PDF gespeichert - unter Berücksichtigung der speziellen
Anforderungen.
Wenn Du mehr mit VBA machen willst/musst, dann empfehle ich dir mal nach "
Parallels" oder, die kostenfreie Alternative von Apple, "
Boot Camp" zu suchen. Da kannst Du Windows unter OSX laufen lassen und dann auch Excel in der Windowsversion nutzen. Das ist wesentlich entspannter. :21: [url=http://www.chip.de/downloads/Boot-Camp-Support-Software_31571788.html][/url]
Moin,
Vielen Dank, Case! Diese Variante funktioniert immerhin schon mal!
Es wird ein Ordner (am Arsch der Heide, aber immerhin) erstellt, wo dann tatsächlich das gewünschte Blatt als PDF erscheint.
Nur habe ich noch nicht hinbekommen, den Pfad zu ändern, damit die Datei auch da gespeichert wird, wo ich sie haben will.
Wenn ich dies tue, also z.B. "/Documents/1234/" kopiere, so:
Zitat:OfficeFolder = MacScript("return POSIX path of (path to desktop folder) as string")
OfficeFolder = Replace(OfficeFolder, "/Desktop", "") & _
"/Documents/1234/"
Dann wird vom Mac nach der Berechtigung für diesen Ordner gefragt und
angezeigt.
Markiert wird dann folgender Bereich:
Zitat: ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
FilePathName, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False
Jemand eine Idee?
Vielen Dank!
P.S.: Nächster Schritt wäre dann, dass auch der Name der Datei derjenige ist, den ich haben will, nämlich der Inhalt aus Zelle D20, aber eins nach dem anderen :23:
(10.02.2019, 12:31)justuskr schrieb: [ -> ]keine Ideen?
Hallo, :19:
nicht solange du
Office unter
Mac nutzt - das
ist - und bleibt wahrscheinlich auch - eine Krückenlösung. :21:
Falls es jemanden noch interessieren sollte oder was nützt, ich hab mir das jetzt so vom Ron de Bruin rausgefrickelt und es funktioniert. Manchmal muss man zwar den neu erstellten Ordner wieder löschen und der Sandbox die Rechte neu erteilen, aber das ist das geringere Übel!
Zitat:Sub BlattAlsPDF()
Dim FileName As String
Dim FolderName As String
Dim Folderstring As String
Dim FilePathName As String
ActiveSheet.PageSetup.Orientation = ActiveSheet.PageSetup.Orientation
FolderName = "Neue Rechnungen"
FileName = "RE_" & Range("D20") & ".pdf"
Folderstring = CreateFolderinMacOffice2016(NameFolder:=FolderName)
FilePathName = Folderstring & Application.PathSeparator & FileName
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
FilePathName, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False
End Sub
Function CreateFolderinMacOffice2016(NameFolder As String) As String
Dim OfficeFolder As String
Dim PathToFolder As String
Dim TestStr As String
OfficeFolder = MacScript("return POSIX path of (path to desktop folder) as string")
OfficeFolder = Replace(OfficeFolder, "/Desktop", "") & _
"/Documents/..../..../"
PathToFolder = OfficeFolder & NameFolder
On Error Resume Next
TestStr = Dir(PathToFolder, vbDirectory)
On Error GoTo 0
If TestStr = vbNullString Then
MkDir PathToFolder
End If
CreateFolderinMacOffice2016 = PathToFolder
End Function