Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1892to1896
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Dateien Anzeigen, Umbenennen, senden

Dateien Anzeigen, Umbenennen, senden
11.08.2022 13:20:46
Das
Hallo Forum,
habe ein Thema, was ich lösen muss. Ich möchte Fotos aus einem definierten Ordner versenden, welche zuvor den Namen des Ordners als Suffix erhalten (KWXX_Inspection_IMGXXXX). Alle Dateien/Fotos sollen einzeln per Email mit der Benennung im Betreff an eine Emailadresse gesendet werden.
Zur Umbenennung habe ich folgendes Video auf Youtube gefunden: https://www.youtube.com/watch?v=wTPSqjOJfVE und den Code übertragen:

Private Sub commandbutton3_click()
Dim fso As New FileSystemObject
Dim fo As Folder
Dim f As File
Dim last_row As Integer
last_row = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xup).Row
Set fo = fso.getfolder(Worksheet("sheet1").Cells(2, 5).Value)
For Each f In fo.Files
last_row = last_row + 1
Worksheets("Sheet1").Cells(last_row, 1).Value = f.Name
Next
Worksheets("Sheet1").Cells(1, 1).Select
MsgBox ("List of file names is created")
End Sub
Private Sub Schaltfläche4_Klicken()
Dim fso As New FileSystemObject
Dim fo As Folder
Dim f As File
Dim last_row As Integer
last_row = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xup).Row
Set fo = fso.getfolder(Worksheet("sheet1").Cells(2, 5).Value)
Dim new_name As String
For Each f In fo.Files
For i = 2 To last_row
new_name = Worksheet("sheet1").Cells(i, 2).Value
f.Name = new_name
End If
Next
Next
MsgBox ("Done")
End Sub
Hier mein Problem: Ich bekomme immer die Fehlermeldung für "Dim fso As New FileSystemObject": Fehler beim Kompilieren Benutzerdefinierter Typ nicht definiert --> Habe gegoogelt, aber keine Lösung finden können. Hat jemand hier eine helfende Hand für mich?
Hatte diese Frage vor Wochen bereits einmal hier im Forum, wurde aber mittlerweile geschlossen. Keine der Antworten hatte geholfen. Hoffe wir kriegen es diesmal hin.
Danke & Gruß, DasFragezeichen

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateien Anzeigen, Umbenennen, senden
11.08.2022 13:34:42
Rudi
Hallo,
so:

Private Sub commandbutton3_click()
Dim fso As Object, fo As Object, f As Object
Dim last_row As Integer
Set fso = CreateObject("scripting.filesystemobject")
last_row = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xup).Row
Set fo = fso.getfolder(Worksheet("sheet1").Cells(2, 5).Value)
For Each f In fo.Files
last_row = last_row + 1
Worksheets("Sheet1").Cells(last_row, 1).Value = f.Name
Next
Worksheets("Sheet1").Cells(1, 1).Select
MsgBox ("List of file names is created")
End Sub
Gruß
Rudi
AW: Dateien Anzeigen, Umbenennen, senden
11.08.2022 14:38:53
DasFragezeichen
Hallo Rudi,
jetzt geht nichts mehr bei mir. Habe zwei neue Active-X Steuerelemente erzeugt und den Code hinein kopiert. Jetzt bekomme ich in der markierten Zeile einen angezeigt: Laufzeitfehler 1004: Anwendungs oder onjektdefinierter Fehler

Private Sub CommandButton1_Click()
Dim fso As Object, fo As Object, f As Object
Dim last_row As Integer
Set fso = CreateObject("scripting.filesystemobject")
last_row = Worksheets("Tabelle1").Cells(Rows.Count, 1).End(xup).Row ' --> Hier Fehlermeldung
Set fo = fso.getfolder(Worksheets("Tabelle1").Cells(2, 5).Value)
For Each f In fo.Files
last_row = last_row + 1
Worksheets("Sheet1").Cells(last_row, 1).Value = f.Name
Next
Worksheets("Sheet1").Cells(1, 1).Select
MsgBox ("List of file names is created")
End Sub
Was kann ich tun?
Danke
Anzeige
AW: Dateien Anzeigen, Umbenennen, senden
11.08.2022 13:38:45
ChrisL
Hi
Stichwort "Verweise". Schau das Video nochmal ab 10:30.
Witziges Video z.B. Copy-Paste-Especialize :)
cu
Chris
AW: Dateien Anzeigen, Umbenennen, senden
11.08.2022 13:40:32
ChrisL
PS: Und Rudi hat dir soeben die ebenfalls im Video erwähnte "Late Binding" Variante aufgezeigt. Die Option gefällt mir besser...
AW: Dateien Anzeigen, Umbenennen, senden
11.08.2022 14:47:37
DasFragezeichen
Hallo Chris,
danke für den Hinweis. Habe es nochmal geprüft, hatte MS Scripting Runtime markiert. Funktioniert mit der Lösung von Rudi leider noch immer nicht.
Gruß
leider noch immer nicht.
11.08.2022 14:51:50
Rudi
hast du auch den 2. Code entsprechend angepasst?
AW: leider noch immer nicht.
11.08.2022 15:13:11
DasFragezeichen
Hallo Rudi,
hatte bin mir nicht ganz sicher, ob ich Deine Frage richtig verstehe, da ich es so sehe, dass beiden Skripte unabhängig voneinander sind und über Klick 1 und Klick 2 aktiviert werden, oder nicht?
Ich bin derzeit nur im ersten Teil (Click 1), wo die Namen der Dateien aus dem Ordner ausgelesen ausgelesen und in die Liste eingefügt werden sollten.
Hier der aktuellen Code:

Private Sub CommandButton1_Click()
Dim fso As Object, fo As Object, f As Object
Dim last_row As Integer
Set fso = CreateObject("scripting.filesystemobject")
last_row = Worksheets("Tabelle1").Cells(Rows.Count, 1).End(xup).Row
Set fo = fso.getfolder(Worksheets("Tabelle1").Cells(2, 5).Value)
For Each f In fo.Files
last_row = last_row + 1
Worksheets("Sheet1").Cells(last_row, 1).Value = f.Name
Next
Worksheets("Tabelle1").Cells(1, 1).Select
MsgBox ("List of file names is created")
End Sub

Private Sub CommandButton2_Click()
Dim fso As New FileSystemObject
Dim fo As Folder
Dim f As File
Dim last_row As Integer
last_row = Worksheets("Tabelle1").Cells(Rows.Count, 1).End(xup).Row
Set fo = fso.getfolder(Worksheet("Tabelle1").Cells(2, 5).Value)
Dim new_name As String
For Each f In fo.Files
For i = 2 To last_row
new_name = Worksheet("Tabelle1").Cells(i, 2).Value
f.Name = new_name
End If
Next
Next
MsgBox ("Done")
End Sub

Anzeige
AW: leider noch immer nicht.
11.08.2022 15:50:10
ChrisL
Hi
Vollständig durchgetestet habe ich nicht, aber...
End(xup)
korrekt wäre
End(xlUp)
Einmal hast du noch "Sheet1" drin, das wäre wahrscheinlich Tabelle1
Und in E2 sollte ein gültiger Pfad inkl. abschliessendem Backslash drin stehen.
cu
Chris
AW: leider noch immer nicht.
11.08.2022 16:37:56
DasFragezeichen
Hallo Chris,
danke für die Hinweise. - Klick 1 funktioniert jetzt!
Habe eben auch noch festgestellt, dass eine komplette Zeile bei Klick 2 gefehlt hat. Hier habe ich jetzt noch ein Problem bei der Zuordnung. Der Zeile in der if Schleife f.Name = new_name" erzeugt einen Laufzeitfehler 5: Ungültiger Prozeduraufruf oder ungültiges Argument. Ich vermute hier fehlt die Zuordnung?

Private Sub CommandButton2_Click()
Dim fso As New FileSystemObject
Dim fo As Folder
Dim f As File
Dim last_row As Integer
last_row = Worksheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row
Set fo = fso.getfolder(Worksheets("Tabelle1").Cells(2, 5).Value)
Dim new_name As String
For Each f In fo.Files
For i = 2 To last_row
If f.Name = Worksheets("Tabelle1").Cells(i, 1).Value Then
new_name = Worksheets("Tabelle1").Cells(i, 2).Value
f.Name = new_name '--> Hier Laufzeitfehler
End If
Next
Next
MsgBox ("Done")
End Sub
Ich glaube wir haben es bald! :-)
Danke & Gruß!
Anzeige
AW: Dateien Anzeigen, Umbenennen, senden
11.08.2022 16:52:21
DasFragezeichen
Hallo zusammen,
habe den Fehler gefunden! Der Bezug war leer im der Tabelle --> Habe den neuen Namen eingesetzt und alle Files wurden perfekt neu benannt - super!!!!
Für alle, die den Code auch haben wollen:

Private Sub CommandButton1_Click() ' --> Extras --> Verweise --> Microsoft Scripting Runtime suchen und aktivieren
Dim fso As Object, fo As Object, f As Object
Dim last_row As Integer
Set fso = CreateObject("scripting.filesystemobject")
last_row = Worksheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row
Set fo = fso.getfolder(Worksheets("Tabelle1").Cells(2, 5).Value)
For Each f In fo.Files
last_row = last_row + 1
Worksheets("Tabelle1").Cells(last_row, 1).Value = f.Name
Next
Worksheets("Tabelle1").Cells(1, 1).Select
MsgBox ("List of file names is created")
End Sub

Private Sub CommandButton2_Click()
Dim fso As New FileSystemObject
Dim fo As Folder
Dim f As File
Dim last_row As Integer
last_row = Worksheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row
Set fo = fso.getfolder(Worksheets("Tabelle1").Cells(2, 5).Value)
Dim new_name As String
For Each f In fo.Files
For i = 2 To last_row
If f.Name = Worksheets("Tabelle1").Cells(i, 1).Value Then
new_name = Worksheets("Tabelle1").Cells(i, 2).Value
f.Name = new_name
End If
Next
Next
MsgBox ("Done")
End Sub

Anzeige
AW: Dateien Anzeigen, Umbenennen, senden
11.08.2022 16:59:27
DasFragezeichen
Dank den beiden Helfern!
Gruß DF
AW: leider noch immer nicht.
11.08.2022 16:53:10
ChrisL
Hi
Mal vor der Zeile einfügen:
MsgBox new_name
nur um zu prüfen, ob da der neue Name korrekt angezeigt wird oder ob ein "systematisches" Problem vorliegt (z.B. Spalte A/B unvollständig).
Ansonsten würde ich vermuten es könnte an ungültigen Sonderzeichen liegen, welche in Dateinamen nicht erlaubt sind.
cu
Chris

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige