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

Probleme mit GetDetailsOf

Forumthread: Probleme mit GetDetailsOf

Probleme mit GetDetailsOf
Uppe
Hallo Experten,
ich habe ein Problem mit der Funktion "GetDetailsOf".
Wir verwenden Excel in der Version 2003 und 2007.
Ich möchte von Dateien den Besitzer und den Autor auslesen und verwende dazu auf einem Rechner mit Excel2003 GetDetailsOf(Dateiname, 8) für Besitzer und GetDetailsOf(Dateiname, 10) für Autor.
Auf dem Rechner mit Excel2007 wird für GetDetailsOf(varName, 8) "nicht verfügbar" ausgegeben und für GetDetailsOf(varName, 10) erscheint der Besitzer.
Wie kann ich das umgehen? Ich brauche mit beiden Excel-Versionen Besitzer und Autor. Kann man GetDetailsOf mit Bezeichnungen statt Zahlen versorgen?
Danke und Gruß
Uppe
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Probleme mit GetDetailsOf
20.01.2011 09:28:04
Holger,
Hallo Uppe,
warum fragst du im Code nicht nach der Office Version ab und
verwendest die eine oder andere Funktion in Abhängigkeit der Version?
AW: Probleme mit GetDetailsOf
20.01.2011 09:50:56
Uppe
Hallo Holger,
das wäre eine Möglichkeit.
Leider weiß ich aber nicht wie ich in Excel2007 den Autor auslesen kann. Bis GetDetailsOf(Dateiname,30) wurde kein Autor ausgegeben :-(
Gruß Uppe
Anzeige
Probleme mit GetDetailsOf
20.01.2011 10:00:58
Anton
Hallo Uppe,
probier's so:
Code:

Sub b()
  Dim objShell, objFolder, objDatei
  Dim datei, ordner
  Set objShell = CreateObject("Shell.Application")  
  datei = "E:\VBA\Excel\Listbox.xls"
  ordner = Left(datei, InStrRev(datei, "\"))
  Set objFolder = objShell.Namespace(ordner)
  Set objDatei = objFolder.ParseName(Mid(datei, InStrRev(datei, "\") + 1))  
  For i = 0 To 300  
    If objFolder.GetDetailsOf(, i) = "Autor" Then  
      MsgBox objFolder.GetDetailsOf(objDatei, i)
      Exit For  
    End If  
  Next
  For i = 0 To 300  
    If objFolder.GetDetailsOf(, i) = "Besitzer" Then  
      MsgBox objFolder.GetDetailsOf(objDatei, i)
      Exit For  
    End If  
  Next
  Set objShell = Nothing  
End Sub  


mfg Anton
Anzeige
AW: Probleme mit GetDetailsOf
20.01.2011 10:06:26
Kawensmann
Hallo,
sind auf den Rechnern nur unterschiedliche Office-Versionen oder auch unterschiedliche Betriebssysteme?
Schau mal hier, vielleicht hilft das weiter:
https://www.herber.de/forum/archiv/1116to1120/t1118875.htm
Gruß
Kawensmann
Anzeige
Danke!
20.01.2011 10:13:52
Uppe
Vielen Dank an alle!
Mit Antons Code habe ich die Autoren auch in Version 2007 ausfindig gemacht.
Ich habe den Code jetzt so umgeschrieben, dass ich die Version abfrage und mit der Information zum Auslesen des Besitzers und des Autors verzweige.
Danke und Gruß
Uppe
Hinweis
20.01.2011 10:19:51
Anton
Hallo Uppe,
dass ich die Version abfrage ...
Ich kann mir gut vorstellen , dass diese Eigenschaften vom Betriebssystem abhängig sind , nicht von der Officeversion.
mfg Anton
Anzeige
;
Anzeige

Infobox / Tutorial

Probleme mit GetDetailsOf in Excel VBA


Schritt-für-Schritt-Anleitung

Um die Funktion GetDetailsOf in Excel VBA zu verwenden und sowohl den Besitzer als auch den Autor von Dateien abzurufen, kannst du folgenden Code verwenden. Dieser Code funktioniert in Excel 2003 und 2007:

Sub GetFileDetails()
    Dim objShell As Object, objFolder As Object, objFile As Object
    Dim filePath As String, folderPath As String
    Dim i As Integer

    ' Dateipfad anpassen
    filePath = "E:\VBA\Excel\Listbox.xls"
    folderPath = Left(filePath, InStrRev(filePath, "\"))

    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.Namespace(folderPath)
    Set objFile = objFolder.ParseName(Mid(filePath, InStrRev(filePath, "\") + 1))

    ' Autor auslesen
    For i = 0 To 300
        If objFolder.GetDetailsOf(, i) = "Autor" Then
            MsgBox "Autor: " & objFolder.GetDetailsOf(objFile, i)
            Exit For
        End If
    Next i

    ' Besitzer auslesen
    For i = 0 To 300
        If objFolder.GetDetailsOf(, i) = "Besitzer" Then
            MsgBox "Besitzer: " & objFolder.GetDetailsOf(objFile, i)
            Exit For
        End If
    Next i

    Set objShell = Nothing
End Sub

In diesem Beispiel wird GetDetailsOf verwendet, um Informationen über die Datei abzurufen. Stelle sicher, dass du den Dateipfad entsprechend anpasst.


Häufige Fehler und Lösungen

  • Problem: "Nicht verfügbar" bei GetDetailsOf.

    • Lösung: Überprüfe die Excel-Version und stelle sicher, dass du die richtigen Indizes für die GetDetailsOf-Funktion verwendest. In Excel 2007 kann es sein, dass einige Details anders behandelt werden.
  • Problem: Fehler bei der Ausführung des Codes.

    • Lösung: Stelle sicher, dass die Datei existiert und der Pfad korrekt angegeben ist. Auch die Berechtigungen sollten stimmen.

Alternative Methoden

Falls du GetDetailsOf nicht verwenden kannst oder möchtest, kannst du auch PowerShell nutzen, um Dateiinformationen abzurufen. Hier ein einfaches Beispiel:

Get-Item "E:\VBA\Excel\Listbox.xls" | Select-Object Owner, Author

Diese Methode ist besonders nützlich, wenn du mit mehreren Dateien arbeiten möchtest und die Informationen in einer CSV-Datei speichern möchtest.


Praktische Beispiele

Ein weiteres Beispiel für die Verwendung von GetDetailsOf ist das Abrufen von Dateigrößen. Du kannst den Code wie folgt anpassen:

' Dateigröße auslesen
For i = 0 To 300
    If objFolder.GetDetailsOf(, i) = "Größe" Then
        MsgBox "Dateigröße: " & objFolder.GetDetailsOf(objFile, i)
        Exit For
    End If
Next i

Hier wird die Größe der Datei ausgegeben, indem das entsprechende Detail über GetDetailsOf abgerufen wird.


Tipps für Profis

  • Überlege, wie du die Version von Excel abfragen kannst, um den Code je nach Version zu optimieren. Dies kann helfen, Komplikationen bei der Verwendung von GetDetailsOf zu vermeiden.
  • Nutze die ParseName-Methode, um sicherzustellen, dass du die korrekte Datei referenzierst, insbesondere wenn du mit mehreren Dateien arbeitest.

FAQ: Häufige Fragen

1. Kann ich GetDetailsOf mit Bezeichnungen anstelle von Zahlen verwenden? Ja, du kannst die Bezeichnungen verwenden, indem du eine Schleife über die verfügbaren Details machst und nach dem gewünschten Namen suchst, wie im obigen Beispiel gezeigt.

2. Gibt es Unterschiede in der Funktionalität zwischen Excel 2003 und 2007? Ja, es gibt Unterschiede, und einige Details sind möglicherweise nicht in beiden Versionen verfügbar. Daher ist es ratsam, die Version abzufragen und den Code entsprechend anzupassen.

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