Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Aus Excel heraus per Makro Dateiinformationen ermitteln und in Tabelle speichern

Mitglied: kruder77

kruder77 (Level 1) - Jetzt verbinden

13.09.2007, aktualisiert 18.09.2007, 15956 Aufrufe, 5 Kommentare

Hallo,

Wie kann man aus Exel heraus zum ersten einen Dateinamen und zum zweiten die Größe der entsprechenden Datei finden und an einer vorher bestimmten Stelle innerhalb der Exel-Datei speichern?

Vielen Dank fürs Antworten
Kruder










[Edit Biber 15.9.2007] Von "Entwicklung" nach "Excel" verschoben und auf "gelöst" gesetzt".[/Edit]
Mitglied: ISpawn
13.09.2007 um 10:44 Uhr
Hi,
wenn ich dich richtig verstanden habe meinst du das :

Sub Test()
Dim xlName As String
Dim xlSize As String
Dim oSheet As Worksheet
Dim i As Integer

On Error GoTo fail

xlName = Application.ActiveWorkbook.FullName
xlSize = FileSystem.FileLen(xlName)
Set oSheet = Application.ActiveWorkbook.Sheets.Add
For i = 1 To oSheet.Columns.Count
Cells(i, i).Value = xlName
Cells(i + 1, i).Value = xlSize '(bytes)
Next i
Exit Sub

fail:
Call MsgBox(Err.Description, vbInformation, "Fehler")

End Sub
Bitte warten ..
Mitglied: kruder77
13.09.2007 um 11:07 Uhr
Hallo ISpawn,

erstmal, danke fürs schnelle Antworten!

Ich würde gerne z.B. aus C:\Documents\Test\ eine Reihe von zb. *.doc (können auch beliebige andere Dateien/Pfade sein) so verwerten, dass ich in der Exel-Tabelle dann das so stehen habe:


Dateiname1 Dateigröße
Dateiname2 Dateigröße
usw.

Ich muss dazu sagen, das ich von VBA überhaupt keine Ahnung habe. Es wäre echt super wenn Du evt. den Code ein ganz klein wenig dokumentieren könntest.

Vielen Vielen Dank
Kruder
Bitte warten ..
Mitglied: ISpawn
13.09.2007 um 11:45 Uhr
Hi,


Kopiere den Code mal in deinen VBA Editor und starte die Sub FillMe.
vorrausgesetzt du hast einen C:\temp\ Ordner auf deiner Platte ansonsten musst du die Variable sucheIn bzw sucheNach anpassen .

Gruß
Micha (btw.... hab sogar ein paar comments geschrieben... bei Fragen, fragen)

01.
Option Explicit
02.
Dim fso As Object 'FileSystemObject
03.
'------------------------------------------
04.
Sub FillMe()
05.
    On Error GoTo fail
06.
      Set fso = CreateObject("Scripting.FilesystemObject") 'New FileSystemObject
07.
      
08.
      Dim sFiles() As String  'Speicher für die Dateinamen
09.
      Dim sSize() As String   'Speicher für die Dateigrößen
10.
      
11.
      'Init der Speicher auf 0
12.
      ReDim sFiles(0)
13.
      ReDim sSize(0)
14.
     
15.
      Dim sucheIn As String
16.
      Dim sucheNach As String
17.
      
18.
      sucheIn = "C:\temp\" 'Order in dem nach Dateien gesucht werden soll
19.

20.
      sucheNach = "*.*"    'Dateityp nachdem gesucht werden soll
21.
      '(abc*.* wird nicht Funktionieren!)
22.
      '*.*, *.doc oder *.blabla
23.
      Call SucheHier(sucheIn, sucheNach, sFiles(), sSize(), True)
24.
      
25.
        
26.
        
27.
        If UBound(sFiles()) - 1 < 0 Then
28.
            'Nix gefunden
29.
            Exit Sub
30.
        Else
31.
            'Damit Excel nicht flackert ....
32.
            Application.ScreenUpdating = False
33.
            Dim owb As Workbook
34.
            Dim oSheet As Worksheet
35.
            Dim i As Integer
36.
            
37.
            'Neues Workbook anlegen (damit man nix überschreibt)
38.
            Set owb = Application.Workbooks.Add
39.
            'ein neues sheet hinzufügen
40.
            Set oSheet = owb.Sheets.Add
41.
               'Spalte 2 selektieren damit diese Spalte als Text definiert wird
42.
                Columns("B:B").Select
43.
                Selection.NumberFormat = "@"
44.
                'Selektion aufheben
45.
                Range("A1").Select
46.
            'Für alle gefundenen Dateien in die Zelle i des Sheets den Dateinamen eintragen.
47.
            For i = 0 To UBound(sFiles()) - 1
48.
                oSheet.Cells(i + 1, 1) = sFiles(i)      'DateiName
49.
                oSheet.Cells(i + 1, 2).Value = sSize(i) 'KBytes
50.
            Next i
51.
            Application.ScreenUpdating = True 'Aktualisierung wieder aktivieren
52.
        End If
53.
        
54.
fail:
55.
Application.ScreenUpdating = True 'Aktualisierung wieder aktivieren
56.
End Sub
57.
'-----------------------------
58.
Sub SucheHier(ByVal sFolder As String, ByVal sFiletype As String, ByRef oRetFiles() As String, ByRef oRetSize() As String, Optional ByVal SubFolder As Boolean = False)
59.
'sFolder = sucheIn
60.
'sFileType = sucheNach
61.
'oRetFiles() = String Array für die gefundenen Dateien
62.
'oRetSize() = String Array für die Dateigrößen-information
63.
'SubFolder = Boolean Flag (default = False = keine Unterverzeichnisse durchsuchen)
64.
'-----------------------------
65.

66.
On Error GoTo fail 'bei einem Fehler gehts bei fail: weiter
67.
Dim oFolder As Object 'Folder
68.
Dim oFile As Object 'File
69.

70.
       'Für jeden file in dem Folder
71.
        For Each oFile In fso.GetFolder(sFolder).Files
72.
            'nur wenn der dateiname = *.blabla oder *.* (alle) ist.
73.
            If LCase("*." & fso.GetExtensionName(oFile.ShortName)) = LCase(sFiletype) Or sFiletype = "*.*" Then
74.
               'Rückgabe Array vergrößern
75.
                ReDim Preserve oRetFiles(UBound(oRetFiles()) + 1)
76.
                ReDim Preserve oRetSize(UBound(oRetSize()) + 1)
77.
                     'Hinzufügen ins Array
78.
                      oRetFiles(UBound(oRetFiles()) - 1) = oFile.ShortPath
79.
                      oRetSize(UBound(oRetSize()) - 1) = oFile.Size / 1024
80.
            End If
81.
        Next
82.
        
83.
       'Falls der aktuelle Ordner weitere Ordner beinhaltet ( ....subFolders.Count > 0)
84.
       'und der Parameter SubFolder = True übergeben worden ist ab in einer Rekursion bis kein Ordner mehr vorhanden ist
85.
        If SubFolder = True And fso.GetFolder(sFolder).SubFolders.Count > 0 Then
86.
           For Each oFolder In fso.GetFolder(sFolder).SubFolders
87.
              'Rekursion
88.
               Call SucheHier(oFolder.Path, sFiletype, oRetFiles, oRetSize, SubFolder)
89.
           Next oFolder
90.
        End If
91.

92.
fail:
93.
'Falls mal was daneben geht
94.
End Sub
Bitte warten ..
Mitglied: kruder77
15.09.2007 um 07:31 Uhr
Hi Micha,

vielen Dank für deine Hilfe!!! Klappt wunderbar - bin leider ebengerade erst zum ausprobieren gekommen. Kannst Du mir vielleicht ein Buch empfehlen welches mir bei VBA die Grundlagen relativ gut vermittelt? Ich nehme mal an, dass Du eines durchgearbeitet hast...

Danke & ein schönes We

Kruder
Bitte warten ..
Mitglied: ISpawn
18.09.2007 um 07:34 Uhr
Hi,

reine VBA Bücher bringen meineserachtens nicht soviel, wenn schon solltest du eher nach den VB6 Büchern suchen und dir damit kleine SpielProggies machen.

Wenn du das geschafft hast und dich mit den Methoden / Properties auskennst, brauchst du 'meistens' nur noch den Richtigen Verweis setzen und im Objekt-Katalog (F2 im VBA Editor) dir anschauen wozu zb ein Excel.Application Objekt alles in der Lage ist.....

Gruß
Micha
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Excel-Makro
gelöst Frage von yuki13Microsoft Office7 Kommentare

Hallo Zusammen!! :-) Ich bin nicht so fit in Excel Makros und wollte mich hier erkundigen, ob mir jemand ...

Microsoft Office
Excel Makro Hilfe
gelöst Frage von freshman2017Microsoft Office8 Kommentare

Moin Moin! Ich würde gerne mit Excel - Kombinationen für Artikelnummern erstellen. Könnte hierbei bereits heraus finden, dass ein ...

Microsoft Office
Excel Makro zerstört SVerweis
gelöst Frage von schwalbepilotMicrosoft Office4 Kommentare

Hallo, anbei ein Makro welches sich alle Excel Dateien eines Ordners vornimmt und einen Zellbereich färbt und die Formel ...

VB for Applications

Excel Makro Kreisdiagramm für Fortgeschrittene

gelöst Frage von StefanHVB for Applications3 Kommentare

hallo zusammen, habe mal wieder ein excel / makro problem  ich möchte ein kuchendiagramm / kreisdiagramm erstellen, das ...

Neue Wissensbeiträge
Humor (lol)
Preisvertipper
Information von Dilbert-MD vor 1 TagHumor (lol)6 Kommentare

Moin! weil heute Freitag ist, zeige ich Euch den Preisvertipper der Woche: vergesst den Acer Predator 21x, der ist ...

Windows Update
Sicherheitsupdate für SQL Server 2014 SP3
Information von sabines vor 2 TagenWindows Update2 Kommentare

Für den SQL Server 2014 existiert ein Sicherheitsupdate. Laut KB Artikel wird es als CU3 angezeigt: Server 2014 SP3 ...

Backup

Veeam Agent für MS Windows - neue Version verfügbar (bedingt jedoch offenbar .NET Framework 4.6)

Information von VGem-e vor 3 TagenBackup1 Kommentar

Moin Kollegen, einer unserer Server zeigte grad an, dass für o.g. Software ein Update verfügbar ist. Ob ein evtl. ...

Python

Sie meinen es ja nur gut - Microsoft hilft python-Entwicklern auf unnachahmliche Weise

Information von DerWoWusste vor 4 TagenPython2 Kommentare

Stellt Euch vor, Ihr nutzt python unter Windows 10 und skriptet damit regelmäßig Dinge. Nach dem Update auf Windows ...

Heiß diskutierte Inhalte
Windows Update
WSUS - erforderlich Updates
Frage von emeriksWindows Update24 Kommentare

Hi, ein gängiges Verfahren, welche Updates man am WSUS-Server genehmigen soll und welche nicht, beruft sich darauf, dass man ...

Off Topic
Installationskosten Verkabelung
Frage von Xaero1982Off Topic14 Kommentare

Moin Zusammen, ich bräuchte mal ein paar Meinungen, weil ich mir da gerade echt nicht ganz sicher bin. Ich ...

Debian
Alle Verbindungen bis auf eine IP Adresse blockieren
Frage von BananenmeisterDebian13 Kommentare

Hallo Zusammen, Ich habe einen Hyper-V Server auf dem ein debian (ohne desktop) läuft. Dort drauf ist ein Webserver ...

Windows 7
Windows 7: Keine Anmeldung mehr möglich
Frage von hreinartWindows 711 Kommentare

hallo, bei meinem win7 rechner (medion laptop) kann ich mich nicht mehr anmelden. er fährt ohne fehlermeldungen hoch, bringt ...