Makro für Dateiname aus Zelle
#31
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:
? Thisworkbook.Path


Code:
? Application.PathSeparator

Was gibt er aus? Ich gehe natürlich davon aus, dass du das in einer schon gespeicherten Datei testest.
Top
#32
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]
Top
#33
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:
Top
#34
Bump,

keine Ideen?  Huh
Top
#35
(10.02.2019, 13:31)justuskr schrieb: keine Ideen?  Huh

Hallo, :19:

nicht solange du Office unter Mac nutzt - das ist - und bleibt wahrscheinlich auch - eine Krückenlösung. :21:
Top
#36
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
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste