Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Problemlösung gesucht für VBA Code unter MAC

Forumthread: Problemlösung gesucht für VBA Code unter MAC

Problemlösung gesucht für VBA Code unter MAC
lr154318
Hallo!
Ich habe eine Excel-Applikation geschrieben in der sich ein Code befindet, mit dessen Hilfe ich die Datei-Namen von PDF-Dateien eines Ordners auslese. Seit meiner Umstellung auf Mac, läuft das Makro leider nicht mehr.
Kennt Jemand aus dem Stehfreif einen analogen Code, der auch auf Mac läuft?
Vielen Dank für Eure Hilfe und viele Grüße
Lars
Anzeige
AW: Problemlösung gesucht für VBA Code unter MAC
01.06.2011 11:54:28
Rudi
Hallo,
Kennt Jemand aus dem Stehfreif einen analogen Code,

Wir kennen ja nicht mal deinen.
Gruß
Rudi
AW: Problemlösung gesucht für VBA Code unter MAC
01.06.2011 12:04:18
lr154318
Danke für dein Antwort!
Hier ist er mein selbst zusammengeschusteter Code. Nicht schön aber selten - und er lief:
Sub alle_dokumete_einlesen()
midlänge = 27
Application.ScreenUpdating = False
Sheets("sort").Visible = True
Sheets("sort").Select
Cells.Select
Selection.Delete Shift:=xlU
UserForm3.ListBox4.Clear
Dim j As Integer
j = 1
Dim strDatei As String
Dim lngZ As Long
Dim Pfada As String
ActiveSheet.Columns(1) = ""
Application.ScreenUpdating = False
strDatei = Dir("C:\Dokumente und Einstellungen\....\" & UserForm3.ComboBox1 & "\")
Do Until strDatei = ""
lngZ = lngZ + 1
Pfad = "C:\Dokumente und Einstellungen\....\" & UserForm3.ComboBox1 & "\" & strDatei
strDatei = Dir
Pfada = Pfad
Dim iBksl As Integer
Dim sDatei As String
Dim sPfad As String
Dim Dokument As String
iBksl = Len(Pfad) - Len(Application.WorksheetFunction.Substitute(Pfad, "\", ""))
Pfad = Application.WorksheetFunction.Substitute(Pfad, "\", "?", iBksl)
sDatei = Mid(Pfad, InStr(1, Pfad, "?") + 1)
If UserForm3.ComboBox1 "" Then
If Mid(Mid(sDatei, 1, midlänge), 13, 4) = UserForm3.ComboBox1 Then
If Mid(Mid(sDatei, 1, midlänge), 3, 2) = UserForm3.TextBox3 Or Mid(Mid(sDatei, 1, midlänge), 3, 2) = UserForm3.TextBox4 Or Mid(Mid(sDatei, 1, midlänge), 3, 2) = UserForm3.TextBox5 Then
Sheets("sort").Select
Dim datum As Date
Cells(j, 1) = Pfada
Cells(j, 2) = Mid(sDatei, 1, midlänge)
Cells(j, 3) = Mid(Mid(sDatei, 1, midlänge), 13, 4)
Cells(j, 4) = Mid(Mid(sDatei, 1, midlänge), 17, 3) * 1
Cells(j, 5) = Mid(Mid(sDatei, 1, midlänge), 20, 3) * 1
datum = Mid(Mid(sDatei, 1, midlänge), 5, 2) & "." & Mid(Mid(sDatei, 1, midlänge), 7, 2) & "." & Mid(Mid(sDatei, 1, midlänge), 9, 4)
Cells(j, 6) = datum
Cells(j, 9) = Mid(Mid(sDatei, 1, midlänge), 23, 2)
Anzeige
AW: Problemlösung gesucht für VBA Code unter MAC
01.06.2011 13:34:03
KlausF
Hallo Lars,
unabhängig von deinem Code, den ich zur Zeit nicht testen kann folgende Anmerkungen:
1. Die Pfadangaben unter dem Mac haben eine anderes aussehen. Gehe mal zu
https://www.herber.de/forum/archiv/312to316/t312173.htm
und schreibe die Formeln in eine Zelle, dann siehst du das Ergebnis.
2. Wenn sich im Code auf ein Pfadtrennzeichen bezogen wird (z.B. Substitute(Pfad, "\", "")
dann verwende statt "\" ein ":" oder besser den Ausdruck Application.PathSeparator, dann ist es
auch plattformübergreifend gültig (wird hier leider von fast allen ignoriert)
3. Userformen, Buttons und ähnliches können manchmal Probleme bereiten, da es unter dem Mac
nicht alle Formen gibt, die Windows bietet (Bill Gates sei Dank)
4. Es gibt auch noch andere Restriktionen. Am besten hier mal schauen:
http://www.xlam.ch/pos/vbawinmac.htm
Gruß
Klaus
Anzeige
AW: Problemlösung gesucht für VBA Code unter MAC
01.06.2011 14:56:53
lr154318
Hallo Klaus,
vielen dank für dien Hilfe. ein bisschen weiter bin ich nun gekommen. leider noch nicht zum ziel.
er hängt sich immer an neuen befehlen auf. jetzt beleibt er bei strdatei = Dir hängen.
was kann man noch tun. die datei ist echt wichtig für mich...
danke!
Gruß
Lars
Anzeige
AW: Problemlösung gesucht für VBA Code unter MAC
01.06.2011 15:31:58
KlausF
Hallo Lars,
es ist von außerhalb nicht möglich dein Problem zu lösen, da wir nicht an deinem Rechner sitzen.
Gibt es den Pfad? Gibt es die Dateien? Hat er Probleme mit der Userform? Und und und.
Auf der Xlam-Seite z.B. steht:
Mit Dir kann Pfadname und Dateiname aus einem Dateipfad ermittelt werden. Der folgende Programmcode funktioniert auf beiden Plattformen:
Sub SplitPathAndFile()
Dim strFull As String
strFull = Application.GetOpenFilename
MsgBox "Pfad und Datei: " & strFull
MsgBox "Datei: " & Dir(strFull)
MsgBox "Pfad: " & Left(strFull, Len(strFull) - Len(Dir(strFull)) - 1)
End Sub
Du musst dich schon Schritt für Schritt alleine vorarbeiten. Ich sitze momentan nicht vor Excel
und mein VBA-Level ist auch nicht hoch genug um das mal eben aus dem Ärmel zu schütteln.
Sorry. Aber mit ein wenig Probieren kommst du sicherlich weiter ...
Gruß
Klaus
Anzeige
AW: Problemlösung gesucht für VBA Code unter MAC
03.06.2011 12:36:58
KlausF
Hallo Lars,
nachfolgenden Code habe ich noch in meiner Sammlung gefunden. Er funktioniert auch unter dem Mac und
listet auf Sheet "Liste" (anpassen) in Spalte A die Ordner und in Spalte B alle Dateien von Cur(Dir) auf.
Es muss nur noch der Pfad angepasst werden und die Begrenzung auf PDF-Dateien ...
Gruß
Klaus
https://www.herber.de/bbs/user/75150.xls
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Problemlösung für VBA Code unter Mac


Schritt-für-Schritt-Anleitung

Wenn du mit VBA auf einem Mac arbeitest, können sich einige Dinge von der Windows-Version unterscheiden. Hier ist eine grundlegende Schritt-für-Schritt-Anleitung, um deinen VBA Code unter Mac lauffähig zu machen:

  1. Überprüfe den Pfad: Stelle sicher, dass der Pfad zu den Dateien korrekt ist. Unter Mac sind die Pfadangaben anders. Verwende Application.PathSeparator anstelle von \.

    Beispiel:

    Pfad = "Macintosh HD:Users:deinBenutzername:Documents:deinOrdner:"
  2. Nutze Application.GetOpenFilename: Um eine Datei auszuwählen, kannst du den Befehl Application.GetOpenFilename verwenden. Das funktioniert plattformübergreifend und ist besonders unter Mac nützlich.

    Beispiel:

    Sub DateiAuswaehlen()
       Dim strDatei As String
       strDatei = Application.GetOpenFilename("PDF-Dateien (*.pdf), *.pdf")
       MsgBox "Ausgewählte Datei: " & strDatei
    End Sub
  3. Vermeide bestimmte Formularelemente: Einige UserForm-Elemente sind unter Mac nicht verfügbar. Achte darauf, die richtigen Elemente zu verwenden.

  4. Debugging: Nutze die Debugging-Tools in Excel, um Fehler zu identifizieren. Füge Debug.Print ein, um den Status deiner Variablen zu überprüfen.


Häufige Fehler und Lösungen

Hier sind einige häufige Probleme und deren Lösungen:

  • Problem: strDatei = Dir funktioniert nicht
    Lösung: Überprüfe, ob der Pfad korrekt ist. Stelle sicher, dass die Datei existiert und die Pfadangaben dem Mac-Format entsprechen.

  • Problem: UserForms funktionieren nicht richtig
    Lösung: Verwende nur die grundlegenden Steuerelemente, da einige Windows-spezifische Steuerelemente unter Mac nicht unterstützt werden.

  • Problem: Application.ScreenUpdating hat keinen Effekt
    Lösung: Dies kann ein bekanntes Problem in der Mac-Version von Excel sein. Teste, ob das Deaktivieren und Aktivieren der Bildschirmaktualisierung funktioniert.


Alternative Methoden

Falls du mit VBA auf dem Mac auf Schwierigkeiten stößt, gibt es alternative Methoden:

  • AppleScript: Du kannst AppleScript verwenden, um auf Dateien und Verzeichnisse zuzugreifen und diese zu manipulieren. Dies kann eine gute Ergänzung zu deinem VBA Code sein.

  • Python mit openpyxl: Wenn du eine flexible Lösung suchst, kannst du Python verwenden, um Excel-Dateien zu bearbeiten. openpyxl ist eine Bibliothek, die dir viele Möglichkeiten bietet.


Praktische Beispiele

Hier sind einige praktische Beispiele, die dir helfen können, deinen VBA Code auf dem Mac anzupassen:

  1. Dateipfad kopieren:

    Sub DateipfadKopieren()
       Dim strDatei As String
       strDatei = Application.GetOpenFilename
       MsgBox "Dateipfad: " & strDatei
    End Sub
  2. PDF-Dateien auflisten:

    Sub ListePDFs()
       Dim strDatei As String
       strDatei = Dir("Macintosh HD:Users:deinBenutzername:Documents:*.pdf")
       Do While strDatei <> ""
           Debug.Print strDatei
           strDatei = Dir
       Loop
    End Sub

Tipps für Profis

  • Verwende Option Explicit: Dies zwingt dich dazu, alle Variablen zu deklarieren und hilft, Fehler zu vermeiden.

  • Plattformübergreifende Codes: Achte darauf, deinen Code so zu gestalten, dass er sowohl auf Windows als auch auf Mac funktioniert. Nutze Application.PathSeparator und Application.GetOpenFilename.

  • Teste regelmäßig: Teste deinen Code häufig in der Excel-Version, die du verwendest, um sicherzustellen, dass alles funktioniert.


FAQ: Häufige Fragen

1. Funktioniert VBA auf allen Mac-Versionen?
Ja, VBA ist in den meisten aktuellen Versionen von Excel für Mac verfügbar, aber einige Funktionen sind möglicherweise nicht identisch zur Windows-Version.

2. Wie kann ich den Dateipfad auf einem Mac anzeigen?
Verwende den Befehl Application.GetOpenFilename, um den Dateipfad auszuwählen und anzuzeigen.

3. Gibt es Einschränkungen bei UserForms auf dem Mac?
Ja, einige Steuerelemente sind unter Mac nicht verfügbar. Verwende die Standardsteuerelemente für die beste Kompatibilität.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige