Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1600to1604
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

Codekontrolle (Fehler)

Codekontrolle (Fehler)
11.01.2018 16:38:30
Jan
Guten Tag zusammen,
ich habe ein Problem mit einem Makro, was ich mir aus mehreren Internetquellen zusammengebastelt habe, vielleicht kann mir wer helfen:
Sub DateienUmbenennen()
Dim sPath As String, sPattern As String, sFile As String, sComp As String, sOldName As  _
String, sNewName As String
Dim iCount As Integer
With Application.FileDialog(msoFileDialogFolderPicker)
sPath = ""
If .Show = -1 Then
sPath = .SelectedItems(1)
If Right(sPath, 1)  "\" Then sPath = sPath & "\"
End If
End With
sPattern = "*.*"
sFile = Dir(sPath & sPattern)
Do Until sFile = ""
For iCount = 1 To 222
            sComp = Cells(i, 1).Value
If sComp = sFile Then
sOldName = sPath & sFile
sNewName = sPath & Cells(i, 2).Text
Name sOldName As sNewName
End If
Next
Loop
End Sub
Der Code ist nicht schön, wahrscheinlich unmöglich langsam und laienhaft, aber am schlimmsten: Er funktioniert nicht.
Die fett markierte Zeile wird mir immer mit "Laufzeitfehler 1004: Anwendungs- oder Objektdefinierter Fehler" markiert. Hat das was mit der Speicherung im String zu tun? Ich habe das Makro in meiner PERSONAL.xlsb gespeichert und starte es von einem Worksheet in einem Workbook, was in Spalte 1 alter und Spalte 2 neue Namen enthält. In dem Ordner, den ich auswähle sind zusätzlich Dateien, die in der Liste nicht auftauchen, also unberührt bleiben sollen.
In der markierten Zeile habe ich auch bereits mit CStr() und sämtlichen Varianten von Cells(i, 1).text/value oder sonstigem rumprobiert..
Danke im Voraus und entschuldigt die umständliche Frage..
Gruß,
Jan

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

Betreff
Datum
Anwender
Anzeige
AW: Codekontrolle (Fehler)
11.01.2018 16:45:04
Werner
Hallo Jan,
du hast die Variable i weder deklariert, noch hast du ihr einen Wert zugewiesen.
Somit ist i = 0 und eine Zelle B0 gibt es nicht.
Zudem ist absolut unklar was du mit dieser Laufvariablen eigentlich willst. Im gezeigten Code wird die nämlich nirgendwo hochgezählt, was ja Sinn einer Laufvariablen ist.
Gruß Werner
AW: Codekontrolle (Fehler)
11.01.2018 16:55:47
Jan
Oh man..
Danke dir! Ich schiebe das jetzt mal auf einen wirklich langen Tag..
Ich habe irgendwann i in iCount umbenannt und dann nicht alle Instanzen umbenannt.
Entschuldigt den Datenmüll.
Gruß,
Jan
Gerne u. Danke für die Rückmeldung. o.w.T.
11.01.2018 16:56:47
Werner
AW: Codekontrolle (Fehler)
11.01.2018 16:47:06
Hajo_Zi
die Variable I ist 0, sie ist auch nicht Dim.

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Also ich schreibe keine Beiträge mit dem Betreff "Gerne u. Danke für die Rückmeldung....."
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben,
mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
Beiträge von Werner, Luc, robert und folgende lese ich nicht.
Anzeige
AW: Codekontrolle (Fehler)
11.01.2018 16:58:13
Jan
Auch dir natürlich vielen Dank, war eindeutig meine eigene Dummheit (Wie sooft ;) )
Gruß,
Jan
AW: Codekontrolle (Fehler)
11.01.2018 17:18:11
UweD
Hallo
Der Fehler war..
nicht Variable i sondern icount
sComp = Cells(iCount, 1).Value
...
sNewName = sPath & Cells(iCount, 2).Text
So geht es aber schneller
Sub DateienUmbenennen()
    Dim sPath As String, sPattern As String, sFile As String, sComp As String
    Dim sOldName As String, sNewName As String
    Dim iCount As Integer
    Dim RNG As Range, Zeile As Double

    With ActiveWorkbook.ActiveSheet
        Set RNG = .Range("A1:A222")
    
        With Application.FileDialog(msoFileDialogFolderPicker)
                sPath = ""
                If .Show = -1 Then
                    sPath = .SelectedItems(1)
                    If Right(sPath, 1) <> "\" Then sPath = sPath & "\"
                End If
        End With

        sPattern = "*.*"
        sFile = Dir(sPath & sPattern)
        
        Do Until sFile = ""
            If WorksheetFunction.CountIf(RNG, sFile) > 0 Then
                Zeile = WorksheetFunction.Match(sFile, RNG, 0) 'wo 
                sOldName = sPath & sFile
                sNewName = sPath & .Cells(Zeile, 2)
                Name sOldName As sNewName
            End If
            sFile = Dir() 'nächste Datei 
        Loop
    End With
End Sub

LG UweD
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige