Makro läuft nicht unter MS Office 16 für Mac

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Makro läuft nicht unter MS Office 16 für Mac
von: Michael Wendring
Geschrieben am: 02.10.2015 20:02:01

Guten Abend, ich habe vor einiger Zeit schon mal Hilfe zu einem Makro hier bekommen und bräuchte mal wieder welche. Und zwar habe ich ein Makro, welches unter Office 2013 wunderbar läuft. Nun würde ich das gerne ab und an auch auf meinem Macbook mit Office 2016 laufen lassen. Bisher erhalte ich immer die Meldung
"Informationen zur Lizensierung dieser Komponente wurden nicht gefunden. Sie verfügen nicht über eine geignete Lizenz, um dieses Funktionsmerkmal in der Entwurfsumgebung zu nutzen"
Ich weiss leider nicht was falsch, oder unzureichend ist, etc.
Und auch gleich noch eine zusätzliche Frage. Ich habe am PC und am notebook unterschiedliche Speicherorte. Ist es möglich den Code so zu verändern, dass automatisch abgefragt wird, welcher Ordner vorhanden ist um dann dort zu speichern? Also wenn ich am Pc sitze, oder am notebook soll im vorhandenen Ordner abgespeichert werden. Später syncronisiere ich die Ordner immer.
Ich hoffe ich habe mich einigermaßen klar ausgedrückt und bin dankbar um jeden Tipp.
Schönen Abend zusammen...
Dies ist der Code:


Sub Check_Folder_And_Save()
Dim myFSO As Object, f As Object
Dim SaveFolder As String, myFileName As String, myLW As String
Set myFSO = CreateObject("Scripting.FileSystemObject")
SaveFolder = "Mein Speicherordner"
ActiveSheet.Copy
myFileName = ActiveSheet.Name & ".xlsx"
myLW = Left(SaveFolder, 2)
ChDrive myLW
If myFSO.folderexists(SaveFolder) Then
    ActiveWorkbook.SaveAs Filename:=SaveFolder & "\" & myFileName
    MsgBox " Aktuelle Rechnung gespeichert in " & SaveFolder & ""
Else
    MkDir SaveFolder
    ActiveWorkbook.SaveAs Filename:=SaveFolder & "\" & myFileName
    MsgBox "Neuer Ordner " & SaveFolder & " erstellt und aktuelle Rechnung darin gespeichert"
End If
End Sub

Bild

Betrifft: Makro läuft nicht....
von: mumpel
Geschrieben am: 02.10.2015 20:54:45
Hallo!
1. "Scripting" ist in Mac-OS nicht möglich/existent.
2. In Mac-OS werden Doppelpunkte als Pfadtrenner verwendet.
Gruß, René

Bild

Betrifft: AW: Makro läuft nicht....
von: Michael
Geschrieben am: 02.10.2015 21:02:18
Hallo Rene´,
danke für die schnelle Antwort. Ich bin leider immer noch absoluter Anfänger in VBA. Könnte man den Code denn umbauen, damit er auf beiden Sytemen läuft? Wofür wird das scripting gebraucht?
Im Grunde soll nur das aktuelle Tabellenblatt unter seinem Dateinamen abgespeichert werden.
Danke und Gruß
Michael

Bild

Betrifft: Nachtrag
von: mumpel
Geschrieben am: 02.10.2015 20:56:08
In Office 2016 für Mac-OS wurde VBA meines Wissens wieder abgeschafft, bzw. sehr stark eingeschränkt.

Bild

Betrifft: AW: Nachtrag
von: Michael
Geschrieben am: 02.10.2015 21:04:37
Vorhanden ist es zumindest noch. Inwieweit der Funktionsumfang reduziert wurde, kann ich nihct wirklich beurteilen

Bild

Betrifft: AW: Makro läuft nicht unter MS Office 16 für Mac
von: fcs
Geschrieben am: 02.10.2015 21:39:37
Hallo Michael,
um das Makro zweigleisig zu machen muss das Betriebssystem geprüft werden.
Den Speicherpfad kannst du über den Computernamen steuern oder evtl auch eine andere Environ-Variable.
Wie bereits von den anderen Helfern erwähnt: Das File-Schripting-System funktioniert nicht auf dem Mac.
Als Erstzt kannst du mit Dir arbeiten, aber auch diese Anweisung funktioniert auf dem Mac anders. Ich hab dann noch etwas auf den Mac zugeschnittenes gefunden, kann es aber mangels Mac nicht testen.
Nachfolgend dein Makro wie es auf beiden Betriebssystemen funktionieren sollte - Mit ? beim Mac.
Gruß
Franz

Sub Check_Folder_And_Save()
    Dim myFSO As Object, f As Object
    Dim SaveFolder As String, myFileName As String, myLW As String
    Dim strComputerName As String
    Dim strOS As String
    
    On Error GoTo Fehler
    
    strComputerName = VBA.Environ("Computername")
    strOS = VBA.Environ("OS")                       'Betriebssystem
    
   
    'Speicherpfad abhängig vom Computernamen
    Select Case strComputerName
        Case "Mein PC"          'anpassen!
            SaveFolder = "Mein Speicherordner PC"
        Case "Mein Notebook"    'anpassen
            SaveFolder = "Mein Speicherordner Notebook"
        Case Else
            SaveFolder = "C:\Users\Public\Test"
    End Select
    
    'Betriebssystem prüfen
    If InStr(strOS, "Windows") > 0 Then
        'Windows.Betriebssystem
        Set myFSO = CreateObject("Scripting.FileSystemObject")
        ActiveSheet.Copy
        myFileName = ActiveSheet.Name & ".xlsx"
        myLW = Left(SaveFolder, 2)
        ChDrive myLW
        If myFSO.folderexists(SaveFolder) Then
            ActiveWorkbook.SaveAs Filename:=SaveFolder & "\" & myFileName, FileFormat:=51
            MsgBox " Aktuelle Rechnung gespeichert in " & SaveFolder & ""
        Else
            MkDir SaveFolder
            ActiveWorkbook.SaveAs Filename:=SaveFolder & "\" & myFileName, FileFormat:=51
            MsgBox "Neuer Ordner " & SaveFolder & " erstellt und aktuelle Rechnung darin  _
gespeichert"
        End If
        Set myFSO = Nothing
    Else
        'Mac Betriebssystem
        ActiveSheet.Copy
        myFileName = ActiveSheet.Name & ".xlsx"
        myLW = Left(SaveFolder, 2)  'mac: ????
        ChDrive myLW                'mac: ????
    'Note: This macro uses the FileOrFolderExistsOnMac function.
        If FileOrFolderExistsOnMac(SaveFolder) = True Then
            ActiveWorkbook.SaveAs Filename:=SaveFolder & Application.PathSeparator _
                    & myFileName, FileFormat:=51
            MsgBox " Aktuelle Rechnung gespeichert in " & SaveFolder & ""
        Else
            MkDir SaveFolder    'Bei mac ggf. anpassen
            ActiveWorkbook.SaveAs Filename:=SaveFolder & Application.PathSeparator _
                    & myFileName, FileFormat:=51
            MsgBox "Neuer Ordner " & SaveFolder & " erstellt und aktuelle Rechnung darin  _
gespeichert"
        End If
    End If
    
Fehler:
    With Err
        Select Case .Number
            Case 0 'Alles ok
            
            Case Else
                MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description, _
                    vbOKOnly, "Fehler Makro: Check_Folder_And_Save"
        End Select
    End With
End Sub
Function FileOrFolderExistsOnMac(FileOrFolderstr As String) As Boolean
'Ron de Bruin : 26-June-2015
'Function to test whether a file or folder exist on a Mac in office 2011 and up
'Uses AppleScript to avoid the problem with long names in Office 2011,
'limit is max 32 characters including the extension in 2011.
    Dim ScriptToCheckFileFolder As String
    Dim TestStr As String
    If Val(Application.Version) < 15 Then
        ScriptToCheckFileFolder = "tell application " & Chr(34) & "System Events" & Chr(34) & _
         "to return exists disk item (" & Chr(34) & FileOrFolderstr & Chr(34) & " as string)"
        FileOrFolderExistsOnMac = MacScript(ScriptToCheckFileFolder)
    Else
        On Error Resume Next
        TestStr = Dir(FileOrFolderstr, vbDirectory)
        On Error GoTo 0
        If Not TestStr = vbNullString Then FileOrFolderExistsOnMac = True
    End If
End Function


Bild

Betrifft: AW: Makro läuft nicht unter MS Office 16 für Mac
von: Michael
Geschrieben am: 03.10.2015 09:59:08
Hallo Franz,
das ist ja unglaublich welche Mühe du dir gemacht hast. Vielen Dank!!!!! dafür. Ich werde nachher mal versuchen es einzubauen und für mich anzupassen. Ich melde mich dann nochmal. Schönen Samstag vorerst.
Besten Gruß Michael

Bild

Betrifft: AW: Makro läuft nicht unter MS Office 16 für Mac
von: Michael
Geschrieben am: 03.10.2015 10:53:26
Hallo Franz,
grundsätzlich scheint es auf dem MacBook zu laufen, aber irgendwie hakt es noch mit dem Speicherpfad. Ich habe einiges ausprobiert, hänge aber immer noch daran. Hier mal der Auszug code, auf den es meiner Meinung nach ankommt. Ich weiß nicht wo der Fehler liegt.
'Speicherpfad abhängig vom Computernamen
Select Case strComputerName
Case "hp"
SaveFolder = "G:\Uli macht Licht\Rechnungen\Rechnungsausgang"
Case "michels MacBook Pro"
SaveFolder = "/Users/michel/UmL/Rechnungen/Rechnungsausgang"
Case Else
SaveFolder = "C:\Users\Public\Test"
End Select
Auch verstehe ich nicht, was die Zeilen
Case Else
SaveFolder ="C:\Users\Public\Test"
bedeuten sollen? Die zwei Speicherorte werden doch schon darüber benannt.
DANKE schonmal

Bild

Betrifft: AW: Makro läuft nicht unter MS Office 16 für Mac
von: fcs
Geschrieben am: 03.10.2015 11:41:10
Hallo Michael,
ich kenne die genaue Syntax für die Schreibweise des Pfades auf einem Mac nicht.
Welches Trennzeichen ist zwischen den Verzeichnissen anzugeben? / \ oder :
Muss der Laufwerksname mit angegeben werrden?
Die Else-Zeile mit einem weiteren Verzeichnis solltest du einbauen, falls die Datei mal auf einem anderen PC geöffnet wird.
Oder zumindest eine Meldung anzeigen und das Makro beenden.
Gruß
Franz

Bild

Betrifft: AW: Makro läuft nicht unter MS Office 16 für Mac
von: mumpel
Geschrieben am: 03.10.2015 16:27:23
Wie ich schon erwähnte nutzt man unter Mac-OS Doppelpunkte als Pfadtrenner. Man kann jetzt aber nicht einfach "C:Test.xls" schreiben. Google weiss mehr darüber.

Bild

Betrifft: AW: Makro läuft nicht unter MS Office 16 für Mac
von: Michael
Geschrieben am: 03.10.2015 17:02:33
Hallo Franz,
eigentlich sollte es / zwischen den Ordnern heißen. Klappt aber bisher leider noch nicht. Und bei meinem PC legt er jetzt den Ordner C:\Users\Public\Test an, obwohl der im code angegebene Ordner vorhanden ist.
Naja, ich werde mal einen befreundeten Macuser fragen, der kann mir vielleicht weiter helfen.
Dir aber noch mal ganz herzlichen Dank für die Hilfe. Ich bin schon einen großen Schritt weiter.
Schönes Wochenende
und Gruß Michael

Bild

Betrifft: AW: Makro läuft nicht unter MS Office 16 für Mac
von: Martin
Geschrieben am: 03.10.2015 19:17:11
Hallo ihr zwei,
nehmt doch einfach "Application.PathSeparator", dann wird automatisch das korrekte Trennzeichen im Datei Pfad gesetzt:


With Application
    SaveFolder = "G:" & .PathSeparator & "Uli macht Licht" & .PathSeparator & "Rechnungen" & . _
PathSeparator & "Rechnungsausgang"
End With
VG Martin

Bild

Betrifft: AW: Makro läuft nicht unter MS Office 16 für Mac
von: Michael
Geschrieben am: 03.10.2015 20:20:43
Hallo Martin,
besten Dank für deinen Tipp. Werde ich testen dann Rückmeldung geben.
Schönen Abend allen
Grüße Michael

Bild

Betrifft: AW: Makro läuft nicht unter MS Office 16 für Mac
von: Michael
Geschrieben am: 05.10.2015 21:22:10
Hallo nochmal Zusammen,
ich habe einiges ausprobiert und auch noch mal jemanden live drüber gucken lassen. Leider bisher alles ohne Erfolg. Ich werde mich vielleicht mal nach einer anderen Lösung umsehen (evtl parallels) und es einifach unter WIndows laufen lassen. Na mal sehen.
Vielen Dank nochmal an alle für ihre Mühe!
Gruß Michael

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Makro läuft nicht unter MS Office 16 für Mac"