Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
820to824
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
820to824
820to824
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro bearbeiten

Makro bearbeiten
26.11.2006 19:27:45
Thorsten_Z
Moin Forum,
Mit folgendem Code frage ich insgesamt elf Datein ab, und übertrage die Daten in eine andere Mappe. Funktioniert auch einwandfrei. Aber auch nur, sofern alle elf Datein vorhanden sind. Hier mal ein Ausschnitt:
Sub HolenJanuar()
Sheets("Geholt").Select
Cells.Select
Selection.ClearContents
Range("A1").Select
Workbooks.Open Filename:="C:\Programme\Elli\Sammler\SammlungZzs\Anna.xls"
Range("B3:M7").Select
Selection.Copy
ActiveWindow.Close
Range("A1:L5").Select
ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:= _
False
Workbooks.Open Filename:="C:\Programme\Elli\Sammler\SammlungZzs\Bernadette.xls"
Range("B3:M7").Select
Selection.Copy
ActiveWindow.Close
Range("A6:L10").Select
ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:= _
False
Range("A11").Select
...u.s.w.
Was muß ich in diesem Code einfügen, damit, wenn Anna.xls nicht vorhanden ist, er bei Bernadette.xls weitermacht?
Die ganzen Select´s werden euch Profis sicher zum schmunzeln bringen, aber NOCH bin ich nicht so firm in VBA. Darum bitte ich an dieser Stelle schonmal um Nachsicht :-)
Wie gesagt. Es geht mir nur um den Code, der mich über eine nicht vorhandene Datei rettet und somit nicht der debugger anspringt.
Bin für jeden Tip dankbar
Gruß Thorsten

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro bearbeiten
26.11.2006 19:53:40
fcs
Hallo Thorsten,
Mit der Dir-Methode kannst du prüfen ob eine Datei vorhanden ist. Wird als Ergebnis ein Leerstring zurückgegeben, dann existiert die Datei nicht.
Packe den Code für jede Datei die abgearbeitet werden soll in einen entsprechenden If-Block. Beispiel:

Datei = "C:\Programme\Elli\Sammler\SammlungZzs\Anna.xls"
If Dir(pathname:=Datei) <> "" Then
Workbooks.Open FileName:=Datei
Range("B3:M7").Select
Selection.Copy
ActiveWindow.Close
Range("A1:L5").Select
ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:=False
End If

Gruss
Franz
Anzeige
AW: Makro bearbeiten
26.11.2006 20:51:37
Thorsten_Z
Hallo Franz,
Prima Sache. Genau so geht es.
Mal wieder vielen Dank an dich.
gruss Thorsten
AW: Makro bearbeiten
26.11.2006 21:03:57
Daniel
Hallo
viele Bestandteile sind ja gleich, daher solltest du das ganze als Schleife anlegen, dann sparst du dir viel Schreibarbeit.
die Fehlermeldung kannst du einfach umgehen, wenn du On Error Goto verwendest und dann eine Sprungmarke am Ende der Schleife setzt. Dann wird, wenn die Datei nicht vorhanden ist und bei Workbooks.Open der Fehler kommt, der andere Bereich übersprungen und mit der nächsten Datei weitergemacht.
Das ginge natürlich auch ohne Schleife, wäre bei der Eingabe aber viel zu aufwendig.

Sub Test()
Const Pfad = "C:\Programme\Elli\Sammler\SammlungZzs\"
Dim Datei(11) As String
Dim Bereich(11) As String
Dim i As Long
Datei(1) = Pfad & "Anna.xls"
Datei(2) = Pfad & "Bernadett.xls"
'...und so weiter
Bereich(1) = "A1:L5"
Bereich(2) = "A6:L10"
'... und so weiter
On Error GoTo Überspringen
For i = i To 11
Workbooks.Open Filename:=Datei(i)
Range("B3:M7").Copy
ActiveWorkbook.Close
Range(Bereich(i)).Select
ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:=False
Überspringen:
Next
On Error GoTo 0
End Sub

Gruß, Daniel
Anzeige
AW: Makro bearbeiten
26.11.2006 22:14:29
Thorsten_Z
Hallo Daniel,
das sieht ziemlich "einfach" aus und würde mir wirklich viel Arbeit ersparen. Ich werde es auf jedenfall ausprobieren. In den restlichen Makros (Februar, März,...) kommt eine kopierroutine hinzu. Bin gespannt, ob ich es hinkriege. Wenn nicht gibs ja noch dieses Forum :-) zum Glück.
Danke für deinen Beitrag
Gruß
Thorsten_Z
@Daniel Eisert... (Andere natürlich auch)
27.11.2006 09:06:57
Thorsten_Z
Moin Daniel,
hab deinen Code ausprobiert. Klappt wunderbar wenn alle Datein vorhanden sind. Fehlt eine, hält er trotz der "on Error" Anweisung an.
Wirf doch bitte nochmal einen Blick drauf.
Was habe ich übersehen?
On Error GoTo Überspringen
For i = i To 11
Workbooks.Open Filename:=Datei(i) 'Hier hält er an, wenn eine der elf Datein fehlt
Range("B3:M7").Copy
ActiveWorkbook.Close
Range(Bereich(i)).Select
ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:=False
Überspringen:
On Error GoTo 0
Next
gruss Thorsten
Anzeige
AW: @Daniel Eisert... (Andere natürlich auch)
27.11.2006 11:29:03
fcs
Hallo Thorsten,
ich tippe mal, dass du die Zeile
On Error GoTo Überspringen
noch mit in die For-Next-Schleife reinnehmen muss.

For i = i To 11
On Error GoTo Überspringen
Workbooks.Open Filename:=Datei(i)

Hier kannst du aber auch meinen 1. Vorschlag einbauen, der prüft ob die Datei existiert. Dann kann das Abfangen des Fehlers entfallen.

For i = i To 11
If Dir(pathname:=Datei(i)) <> "" Then
Workbooks.Open Filename:=Datei(i)
Range("B3:M7").Copy
ActiveWorkbook.Close
Range(Bereich(i)).Select
ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:=False
End If
Next

Gruß
Franz
Anzeige
AW: @Daniel Eisert... (Andere natürlich auch)
27.11.2006 11:59:28
Thorsten_Z
Hallo Franz,
nun ist ein Schuh draus geworden. Mußte die on Error Anweisung trotzallerdem in deinen ersten Vorschlag mit einfügen. Sonst hatte er immer noch gemeckert. ABER NUN IST ALLES GUT.
Prima Vielen Dank
gruss Thorsten

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige