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

Forumthread: Auslesen Ersteller Besitzer einer Datei

Auslesen Ersteller Besitzer einer Datei
alexander
Hallo,
ich habe folgendes Problem. Ich möchte den Besitzer / Ersteller einer Textdatei auslesen.
Ich finde aber leider nichts passendes.
die letzte Änderung kann man ja z.B. mit auslesen
cells(1,1) = datei.DateLastModified
Soetwas muss es ja auch über für den in Windows angzeigten Besitzer / Ersteller der Datei geben.
Vielen Dank für eure Hilfe
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Auslesen Ersteller Besitzer einer Datei
27.04.2010 09:54:02
Beverly
Hi Alexander,
meinst du das:
    MsgBox ActiveWorkbook.BuiltinDocumentProperties("Author").Value



AW: Auslesen Ersteller Besitzer einer Datei
27.04.2010 09:58:33
alexander
Hallo Beverly,
das habe ich schon probiert. Leider lese ich Textdateien aus einem Ordner, von daher wird das so leider nichts.
Mein bisheriger Code sieht so aus. In der fett markierten Zeile lese ich gerade den Anmeldenamen aus, und da soll halt der Ersteller der ausgelesen INP Datei rein.
'*****************
' alle Dateien des Ordners anzeigen in Indexdatei
Dim fs As Object
Dim sPath As Object
Dim datei As Object
Dim datdatei As Date
Dim datschreib As Date
Pfad = Cells(3, "B")
Set objShell = CreateObject("Shell.Application")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set fs = CreateObject("Scripting.FileSystemObject")
Set sPath = fs.GetFolder("\\DEKLI1S5020\5020-App$\Coscom\CNC\WINTOOL\" & Pfad & "\")
'abbruchbedingung
If sPath = "" Then GoTo ende
For Each datei In sPath.Files
If LCase(datei) Like "*.inp" And DateValue(datei.DateLastModified) = DateValue(Var1) Then
'Dateiname auslesen
daten = Right$(datei, Len(datei) - InStrRev(datei, "\"))
prognam = "'" & Right(Left$(daten, InStrRev(daten, ".") - 1), 6)
larX = 1 + Cells(Rows.Count, 1).End(xlUp).Row
Cells(larX, 1) = prognam
Cells(larX, 1).Interior.Color = 15773696
Cells(larX, 2) = Date
Cells(larX, 3) = "X"
Cells(larX, 6) = Environ("USERNAME")
End If
Next
Anzeige
AW: Auslesen Ersteller Besitzer einer Datei
27.04.2010 10:12:30
xr8k2
Hallo Alex,
mit Excel-Bordmitteln wirst du das für txt-Files nicht gebacken kriegen ...
Hier sind zwei Links ... die VB-Tipps mit unterschiedlichen Verfahrensweisen lassen sich auch ohne weiteres in VBA umsetzen:
ActiveVB - per API
ActiveVB - per WMI
Gruß,
xr8k2
Anzeige
AW: Auslesen Ersteller Besitzer einer Datei
27.04.2010 10:15:39
Anton
Hallo Alexander,
mit diesem Code werden einige Eigenschaften von Dateien angezeigt,
ob dabei auch Besitzer / Ersteller sind, musst du testen:
Code:

Dim i As Long  
Sub dateien_auflisten()
  Dim objShell, objFolder
  Dim BrowseDir, varName
  Set objShell = CreateObject("Shell.Application")  
  Set BrowseDir = objShell.BrowseForFolder(0, "Ordner auswählen", &H1000, 17)  
  If Not BrowseDir Is Nothing Then    
    Application.ScreenUpdating = False
    Cells.Clear
    i = 0
    Set objFolder = objShell.Namespace(BrowseDir.items().Item().Path)
    i = i + 1
    Cells(i, 1) = "Pfad"
    For k = 1 To 50  
      Cells(i, k + 1) = objFolder.GetDetailsOf(, k)
    Next
    Set objFolder = Nothing  
    If MsgBox("Unterordner duchsuchen?", vbYesNo, "Abfrage") = vbYes Then  
      rekursiv BrowseDir.items().Item().Path, True
    Else
      rekursiv BrowseDir.items().Item().Path, False
    End If  
    Application.ScreenUpdating = True
    Columns.AutoFit
  End If  
  Set objShell = Nothing  
End Sub  
Function rekursiv(ordner, unterordner As Boolean)  
  Set objShell = CreateObject("Shell.Application")  
  Set objFolder = objShell.Namespace(ordner)
  For Each varName In objFolder.items  
    If varName.Type = "Dateiordner" And unterordner = True Then    
      rekursiv varName.Path, True
    ElseIf varName.Type <> "Dateiordner" Then    
      i = i + 1
      Cells(i, 1) = varName.Path
      For k = 1 To 50  
        Cells(i, k + 1) = objFolder.GetDetailsOf(varName, k)
      Next
    End If  
  Next
  Set objFolder = Nothing  
End Function  


mfg Anton
Anzeige
AW: Auslesen Ersteller Besitzer einer Datei
27.04.2010 10:49:47
alexander
Hallo Anton,
danke das Makro ist echt Klasse, auch wenn es ein Moment dauerte dahinter zu steigen.
Hier für alle auch noch einmal die Lösung, wie ich es jetzt umgesetzt habe.
Sub NCProg()
Dim Eingabeaufforderung As Date
Var1 = InputBox("Geben Sie das Datum was sie einlesen möchten", "Abfrage", Date)
If Var1  "" Then
GoTo anfang
End If
If Var1 = "" Then
GoTo ende
End If
anfang:
'Alle Meldungen aus
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.EnableEvents = False
'Alte Daten löschen
' alle Dateien des Ordners anzeigen in Indexdatei
Dim datei As Object
Dim objShell, objFolder As Object
Pfad = Cells(3, "B")
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace("\\DEKLI1S5020\5020-App$\Coscom\CNC\WINTOOL\" & Pfad & "\ _
")
If objFolder = "" Then GoTo ende
For Each datei In objFolder.items
If LCase(datei) Like "*.inp" And DateValue(objFolder.GetDetailsOf(datei, 5)) =  _
DateValue(Var1) Then
'Dateiname auslesen
prognam = "'" & Right(Left$(datei, InStrRev(datei, ".") - 1), 6)
'Besitzer auslsen
besitzer = objFolder.GetDetailsOf(datei, 8)
larX = 1 + Cells(Rows.Count, 1).End(xlUp).Row   'Letzte Zeile
'Daten schreiben
Cells(larX, 1) = prognam
Cells(larX, 1).Interior.Color = 15773696
Cells(larX, 2) = Date
Cells(larX, 3) = "X"
Cells(larX, 6) = Mid(besitzer, 8, (Len(besitzer) - 7))
End If
Next
ende:
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Ersteller einer Datei in Excel auslesen


Schritt-für-Schritt-Anleitung

Um den Ersteller einer Datei in Excel auszulesen, kannst du den folgenden VBA-Code verwenden. Dieser Code nutzt die GetDetailsOf-Methode, um den Besitzer einer Datei (z.B. einer INP-Datei) zu ermitteln.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul ein, indem du auf Einfügen > Modul klickst.
  3. Kopiere und füge den folgenden Code in das Modul ein:
Sub NCProg()
    Dim Eingabeaufforderung As Date
    Var1 = InputBox("Geben Sie das Datum was sie einlesen möchten", "Abfrage", Date)
    If Var1 = "" Then GoTo ende

    Dim datei As Object
    Dim objShell As Object
    Dim objFolder As Object
    Dim Pfad As String
    Pfad = Cells(3, "B").Value
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.Namespace("\\DEKLI1S5020\5020-App$\Coscom\CNC\WINTOOL\" & Pfad & "\")

    If objFolder Is Nothing Then GoTo ende

    For Each datei In objFolder.Items
        If LCase(datei) Like "*.inp" And DateValue(objFolder.GetDetailsOf(datei, 5)) = DateValue(Var1) Then
            'Besitzer auslesen
            Dim besitzer As String
            besitzer = objFolder.GetDetailsOf(datei, 8)
            Dim larX As Long
            larX = 1 + Cells(Rows.Count, 1).End(xlUp).Row
            'Daten schreiben
            Cells(larX, 1) = datei.Name
            Cells(larX, 2) = Date
            Cells(larX, 3) = "X"
            Cells(larX, 6) = Mid(besitzer, 8, (Len(besitzer) - 7))
        End If
    Next

ende:
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
    Application.EnableEvents = True
End Sub
  1. Schließe den VBA-Editor und führe das Makro aus.

Häufige Fehler und Lösungen

  • Fehler: „Objekt nicht gefunden“.

    • Lösung: Überprüfe den Pfad zur Ordnerstruktur, um sicherzustellen, dass er korrekt ist.
  • Fehler: Keine INP-Dateien gefunden.

    • Lösung: Stelle sicher, dass sich tatsächlich INP-Dateien im angegebenen Ordner befinden und dass das Datum korrekt eingegeben wurde.

Alternative Methoden

Wenn du den Ersteller einer Datei in Excel nicht mit VBA auslesen möchtest, kannst du auch auf externe Tools oder Skripte zurückgreifen. Es gibt zahlreiche Online-Ressourcen und APIs, die dir helfen können, Datei-Metadaten auszulesen.

  • API-Methode: Du kannst Windows APIs verwenden, um auf die Datei-Metadaten zuzugreifen. Das erfordert jedoch zusätzliche Programmierung.

  • WMI (Windows Management Instrumentation): Eine weitere Möglichkeit ist die Verwendung von WMI, um Informationen über Dateien abzurufen. Hierzu kannst du entsprechende WMI-Abfragen in VBA integrieren.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du den Ersteller einer Datei mit Excel VBA auslesen kannst:

Sub ErstellerAuslesen()
    Dim datei As Object
    Set datei = CreateObject("Scripting.FileSystemObject").GetFile("C:\Pfad\zu\deiner\datei.inp")

    MsgBox "Ersteller: " & datei.Attributes
End Sub

Dieses Beispiel zeigt dir, wie du auf die Attribute einer spezifischen Datei zugreifen kannst. Du kannst den Code anpassen, um den Ersteller oder andere Informationen zu lesen.


Tipps für Profis

  • Nutze die Excel VBA GetDetailsOf-Methode, um spezifische Dateieigenschaften auszulesen. Dies kann dir helfen, nicht nur den Ersteller, sondern auch andere wichtige Informationen zu erhalten.

  • Experimentiere mit verschiedenen Dateiformaten und passe deinen Code entsprechend an, um eine breitere Palette von Dateieigenschaften auszulesen.

  • Halte deinen Code sauber und dokumentiere ihn gut, um spätere Anpassungen zu erleichtern.


FAQ: Häufige Fragen

1. Wie kann ich den Ersteller einer Datei in Excel herausfinden? Du kannst den Ersteller einer Datei in Excel herausfinden, indem du VBA verwendest und die GetDetailsOf-Methode aufrufst, um die entsprechenden Dateieigenschaften auszulesen.

2. Funktioniert dieser Code auch mit anderen Dateiformaten? Ja, der Code kann an andere Dateiformate angepasst werden. Stelle jedoch sicher, dass die Eigenschaften, die du abrufen möchtest, für das jeweilige Dateiformat verfügbar sind.

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