3.3k Aufrufe
Gefragt in Tabellenkalkulation von nero022 Mitglied (179 Punkte)
Hallo
ich habe hier ein makro was auch sehr gut läuft,aber eine sache
müßte ich geänder habe wo ich nicht weiß wie :(
der Datei name steht ab A5:A jetzt sucht er mir die werte die ich aus
den datein haben möchte und trägt sie mir in E5:E ein.
aber teilweise sind die datein nicht vorhanden oder sind anders
geschrieben unnd wenn er sie nicht findet öffnet er den explorer wo
ich dann selber nach der datei suchen kann.
und das möchte ich umgehen,er soll die daatei einfach
überspringen und die nächste suchen.

Sub DateienLesen()
ActiveSheet.Unprotect "Test"
Application.StatusBar = "Vorbereitung läuft, einen Moment Geduld
bitte "
Worksheets.Application.ScreenUpdating = False
Dim ZellPos As Range
For Each ZellPos In Range("A5:A" &
ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row)
If Range("A" & ZellPos.Row).Value <> 0 Then Range("E" &
ZellPos.Row) = ExecuteExcel4Macro("'C:\Test\Mappe\" & "[" &
ZellPos & ".xlsm]Test" & "'!" & Range("D66").Address(, , xlR66C4))
Next ZellPos
Worksheets.Application.ScreenUpdating = True
Application.StatusBar = False
ActiveSheet.Protect "Test"
End Sub



Danke schon mal für eure Hillfe !!!!!!!!!!!!!!!!!!!!!!!!

10 Antworten

0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi :-)

der pfad waere zu kontrollieren

gruss nighty

Sub DateienLesen()
Dim objFSO As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
ActiveSheet.Unprotect "Test"
Application.StatusBar = "Vorbereitung läuft, einen Moment Geduld "
bitte ""
Worksheets.Application.ScreenUpdating = False
Dim ZellPos As Range
For Each ZellPos In Range("A5:A" &
ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row)
If objFSO.FileExists("C:\Test\Mappe\" & ZellPos & ".xlsm) = True Then
If Range("A" & ZellPos.Row).Value <> 0 Then Range("E" &
ZellPos.Row) = ExecuteExcel4Macro("'C:\Test\Mappe\" & "[" &
ZellPos & ".xlsm]Test" & "'!" & Range("D66").Address(, , xlR66C4))
End If
End If
Next ZellPos
Worksheets.Application.ScreenUpdating = True
Application.StatusBar = False
ActiveSheet.Protect "Test"
End Sub
0 Punkte
Beantwortet von nero022 Mitglied (179 Punkte)
Hallo nighty !!
erst ein mal danke für deine schnelle antwort !!!
ich habe es mal getestet und er zeigt mihr jetzt folgenden fehler an...

Kompilierungs-Fehler in verborgenen Modul1
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi :-)

probier mal,waren vielleicht abgehackte zeilen ^^

gruss nighty

Sub DateienLesen()
Dim objFSO As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
ActiveSheet.Unprotect "Test"
Application.StatusBar = "Vorbereitung läuft, einen Moment Geduld bitte "
Worksheets.Application.ScreenUpdating = False
Dim ZellPos As Range
For Each ZellPos In Range("A5:A" & ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row)
If objFSO.FileExists("C:\Test\Mappe\" & ZellPos & ".xlsm") = True Then
If Range("A" & ZellPos.Row).Value <> 0 Then
Range("E" & ZellPos.Row) = ExecuteExcel4Macro("'C:\Test\Mappe\" & "[" & ZellPos & ".xlsm]Test" & "'!" & Range("D66").Address(, , xlR66C4))
End If
End If
Next ZellPos
Worksheets.Application.ScreenUpdating = True
Application.StatusBar = False
ActiveSheet.Protect "Test"
End Sub
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi :-)

vereinfachte Darstellung der abfrage

gruss nighty

Dim objFSO As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists("C:\Test\Mappe\" & ZellPos & ".xlsm") = True Then
'abfrage
End If
0 Punkte
Beantwortet von nero022 Mitglied (179 Punkte)
Hi nighty, geht leider immer noch nicht...
jetzt sagt er mehrdeutiger name zeilen lesen...???

wie kann ich meinen code hier reinsetzen ohne das er so zusammen geschrieben ist ( abgehackt )
0 Punkte
Beantwortet von nero022 Mitglied (179 Punkte)
Sub DateienLesen()
ActiveSheet.Unprotect "Test"
Application.StatusBar = "Vorbereitung läuft, einen Moment Geduld bitte "
Worksheets.Application.ScreenUpdating = False
Dim ZellPos As Range
For Each ZellPos In Range("A5:A" & ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row)
If Range("A" & ZellPos.Row).Value <> 0 Then Range("E" & ZellPos.Row) = ExecuteExcel4Macro("'C:\Test\Test\" & "[" & ZellPos & ".xlsm]Kalkulation" & "'!" &
Range("D66").Address(, , xlR66C4))
Next ZellPos
Worksheets.Application.ScreenUpdating = True
Application.StatusBar = False
ActiveSheet.Protect "Test"
End Sub
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi :-)

dann schick mir eine dummy Datei im xls Format

gruss nighty

meine email
xxxx
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi :-)

wenn du im sn fenster zeichen eingefuegt hast ,
sind oben Symbole zu sehen,da steht bei einem dann CODE ,
diese Option ist fuer quellcode gedacht

zur weiteren optischen Optimierung gehört smart indenter bzw aehnliche fprmatierungsprogramme

gebe mal bei Google EXCEL SMART INDENTER ein und lade es dir herunter
nach der Installation hast du nun im vb Editor ein neues contexmenue

dort waehlst du indent module an,diese Option formatiert dir alle module der aktiven Mappe

die Syntax ist nun optisch hervorragend eingerückt und gerade fuer anfaenger
ist der code bzw schleifen und abfragestructuren nun schneller sichtbar und erfassbar bzw nachvollziehbarer

gruss nighty
0 Punkte
Beantwortet von nero022 Mitglied (179 Punkte)
Hallo Nighty !! sorry das ich mich jetzt erst melde...!!
also ich habbe es hinbekommen mit deinem makro !!
es mußten nur 2 zeilen verschoben werden und 1x End If gelöcht aam ende !!!


danke dir noch mal für deine hilfe und das anderre werde ich auch mal versuchen !!!
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

eine email zu löschen ist contraproduktiv,da sie ja längere zeit bestand hat ^^

wie auch etliche links zum hochladen contraproduktiv sind ,da diese nur kurze zeit funktionieren :-)

gruss nighty
...