Anzeige
Archiv - Navigation
904to908
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
904to908
904to908
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

laufzeitfehler 13

laufzeitfehler 13
06.09.2007 14:04:00
Markus
hallo zusammen,
--------------------------------------------------------------------------------------
diesen beitrag gabs zwar heute schon mal, doch leider hab ich mir ne antwort selbst gegeben und
so stand es nicht mehr unter offene fragen.
---------------------------------------------------------------------------------------
Hajo schrieb darauf: Du hast Zugriffsrechte? Ich würde niemals eine Variable in einer Funktion den gleichen Namen geben wie scho eine vorhandene Variable.
zugriffsrechte habe ich, aber die info "die gleiche variable in einer funtion" hab ich dummi leider auch nicht verstanden.
--------------------------------------------------------------------------------------
Const strPath As String = "z:\Kalkutest"

Private Sub ComboBox6_Change()
End Sub



Private Sub ComboBox7_Change()
End Sub



Private Sub ComboBox9_Change()
End Sub



Private Sub CommandButton1_Click()
Dim stWert As String, strFileName As String
stWert = FileIndex(strPath)
Range("H4") = stWert
strFileName = Application.GetSaveAsFilename(InitialFileName:=strPath & "\" & "Angebote" & "-" & _
_
Range("D2") & "-" & Range("A18") & "-" & stWert & ".xls", FileFilter:="Excel Dateien (*.xls), * _
.xls)", Title:="Speicherort wählen")
If strFileName  "Falsch" Then ThisWorkbook.SaveAs strFileName
End Sub



Private Function FileIndex(strPath As String) As String
Dim FS As FileSearch, lngFiles As Long, lngMax As Long
Set FS = Application.FileSearch
With FS
.LookIn = strPath
.Filename = "*.xls"
.SearchSubFolders = True
If .Execute > 0 Then
For lngFiles = 1 To .FoundFiles.Count
If Left(Right(.FoundFiles(lngFiles), 9), 5) * 1 > lngMax Then
lngMax = Left(Right(.FoundFiles(lngFiles), 9), 5) * 1
End If
Next lngFiles
End If
End With
FileIndex = Format(lngMax + 1, "_00000")
End Function



Private Sub CommandButton2_Click()
Workbooks.Open Filename:="z:\Adressen\Adressen.xls"
End Sub


-------------------------------------------------------------------------
klappt einwandfrei. ändere ich aber den pfad Const strPath As String = "z:\Kalkutest"
in ein anderes verzeichnis in dem jede menge unterverzeichnisse und dateien sind, so bringt er laufzeitfehler 13 und verweist auf die zeile:
If Left(Right(.FoundFiles(lngFiles), 9), 5) * 1 > lngMax Then
leider bin ich ein absoluter vba-loser und wenn man obiges nicht genau versteht fälllt die fehlersuche schwer. und bei einem solchen fehler konnte mir google auch nicht weiter helfen.
wer kann mir helfen?
gruß markus

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: laufzeitfehler 13
06.09.2007 14:45:00
Hajo_Zi
Hallo Markus,
Deine Konstante hat den Namen "strPath" und in der Funktion FileIndex definierst Du auch eine Variable strPath.

AW: laufzeitfehler 13
06.09.2007 21:00:00
Gerd
Hallo Markus,
If Left(Right(.FoundFiles(lngFiles), 9), 5) * 1 > lngMax
dürfte voraussetzen, dass fünf Zeichen links von ".xls" Ziffern sind.
Und dies ist evtl. nicht bei jeder Datei so ?
Gruß Gerd

AW: laufzeitfehler 13
07.09.2007 09:32:00
Markus
guten morgen,
genau das muß es sein. er setzt voraus das die letzten fünf zeichen ziffern sind, und das ist bei den meisten vorhandenen dateien nicht der fall.
vieleicht würde es funktionieren wenn vorher die bedingung verwendet würde das er nur die dateinamen durchsucht die an 6. stelle von rechts einen unterstrich haben denn der wird nur bei den neu erzeugten dateinamen an 6. stelle verwendet.
fragt sich nur wie?
markus

Anzeige
AW: laufzeitfehler 13
07.09.2007 11:35:43
Gerd
Hallo Markus,
bei .Filename = könntest natürlich auch versuchen, einzuschränken.

Private Function FileIndex(strPath As String) As String
Dim FS As FileSearch, lngFiles As Long, lngMax As Long
Set FS = Application.FileSearch
With FS
.LookIn = strPath
.Filename = "*.xls"
.SearchSubFolders = True
If .Execute > 0 Then
For lngFiles = 1 To .FoundFiles.Count
If Len(.FoundFiles(lngFiles)) > 9 Then
If Left(Right(.FoundFiles(lngFiles), 10), 1) = "_" Then
If IsNumeric(Left(Right(.FoundFiles(lngFiles), 9), 5)) Then
If Left(Right(.FoundFiles(lngFiles), 9), 5) * 1 > lngMax Then
lngMax = Left(Right(.FoundFiles(lngFiles), 9), 5) * 1
End If
End If
End If
End If
Next lngFiles
End If
End With
FileIndex = Format(lngMax + 1, "_00000")
End Function


Gruß Gerd

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige