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

Makro über mehrere Ordner

Makro über mehrere Ordner
Dominik
Hallo Zusammen,
Ordneraufbau ist folgendermaßen:
Ordner1 > HW-Management > Auftragseingang
Im Ordner1 liegt die Datei in der das Makro ausgeführt wird und soll überprüfen wo die erste freie Zeile in der Datei "HW_Auftragseingang.xls" liegt. "HW_Auftragseingang.xls" liegt aber nicht im selber Verzeichnis wie die Datei in der das Makro ausgeführt wird.
erstefrei = Workbooks("HW-Management\Auftragseingang\HW_Auftragseingang.xls").Sheets("Daten").Cells(Rows.Count, 1).End(xlUp).Row + 1
Was mache ich falsch? Oder funktioniert es nur innerhalb eines Ordners, was mir keinen sinn ergeben würde?!
Folgender Fehler erscheint wenn das Makro durchlaufen wird:
Laufzeitfehler '9':
Index außerhalb des gültigen Bereichs
Danke vorab!
Mit freundlichen Grüßen
Dominik

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

Betreff
Benutzer
Anzeige
AW: Makro über mehrere Ordner
14.10.2010 10:50:15
Oberschlumpf
Hi Dominik
Versuch mal so:

Workbooks.Open ThisWorkbook.Path & "\HW-Management\Auftragseingang\HW_Auftragseingang.xls"
erstefrei = ActiveWorkbook.Sheets("Daten").Cells(Rows.Count, 1).End(xlUp).Row + 1
ActiveWorkbook.Close False

Hilfts?
Ciao
Thorsten
AW: Makro über mehrere Ordner
14.10.2010 13:08:53
Dominik
Hallo Thorsten :)
so funktioniert es fast ...
anstatt:
ThisWorkbook.Path & "\HW-Management\Auftragseingang\HW_Auftragseingang.xls"
gebe ich nun den kompletten Pfad an.
Anders kommt der Fehler das der Pfad nicht gefunden werden kann
Aber danke nun geht es so wie ich es brauch :)
Dominik
Anzeige
ist die Datei offen oder geschlossen?
14.10.2010 10:53:27
Tino
Hallo,
ist die Datei geschlossen,
müsstest Du die Datei öffnen und dann auslesen, am besten dabei den kompletten Pfad verwenden.
Müsste so funktionieren
Dim oApp As Excel.Application, sPath$
Dim ErsteFrei As Long
sPath$ = ThisWorkbook.Path
If Right$(sPath$, 1)  "\" Then sPath$ = sPath$ & "\"
sPath$ = sPath$ & "\HW-Management\Auftragseingang\HW_Auftragseingang.xls"
If Dir(sPath$)  "" Then
Set oApp = New Excel.Application
With oApp.Workbooks.Open(sPath$, ReadOnly:=True)
With .Sheets("Daten")
ErsteFrei = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
End With
.Close False
End With
oApp.Quit
Else
MsgBox "Datei nicht gefunden"
End If

Wenn die Datei in der selben Instanz offen ist müsste es so gehen.
Dim ErsteFrei As Long
With Workbooks("HW_Auftragseingang.xls").Sheets("Daten")
ErsteFrei = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
End With

Gruß Tino
Anzeige
AW: ist die Datei offen oder geschlossen?
14.10.2010 13:18:18
Dominik
Danke Tino ...
eigentlich ist egal ob offen oder nicht.
aber wenn ich nun schon beide möglichkeiten habe, nehme ich die erste :)
Danke
ganz so Egal ist es nicht, ...
14.10.2010 14:55:45
Tino
Hallo,
ist die Datei geöffnet und es werden Änderungen durchgeführt
wird diese Änderung erst nach dem speichern zur Verfügung stehen
wenn Du auf die geschlossene Datei zurückgreifen willst.
Man könnte zuvor prüfen ob diese offen ist.
Gruß Tino
hier noch ein Beispiel dazu...
14.10.2010 15:08:26
Tino
Hallo,
Sub Beispiel()
Dim oApp As Excel.Application, sPath$
Dim ErsteFrei As Long
Dim oWB As Workbook


sPath$ = ThisWorkbook.Path
If Right$(sPath$, 1) <> "\" Then sPath$ = sPath$ & "\"
sPath$ = sPath$ & "\HW-Management\Auftragseingang\HW_Auftragseingang.xls"

Set oWB = Find_WB(Right$(sPath, Len(sPath) - InStrRev(sPath, "\")))

If Not oWB Is Nothing Then
        With oWB.Sheets("Daten")
            ErsteFrei = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
        End With
ElseIf Dir(sPath$) <> "" Then
    Set oApp = New Excel.Application
    With oApp.Workbooks.Open(sPath$, ReadOnly:=True)
        With .Sheets("Daten")
            ErsteFrei = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
        End With
    .Close False
    End With
    
    oApp.Quit
Else
    MsgBox "Datei nicht gefunden"
End If

If ErsteFrei > 0 Then
    MsgBox "Erste freie Zeile = " & ErsteFrei
End If
End Sub

Function Find_WB(strDateiName$) As Workbook
Dim oWB As Workbook
For Each oWB In Workbooks
    If oWB.Name = strDateiName Then
        Set Find_WB = oWB
        Exit For
    End If
Next oWB
End Function
Gruß Tino
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige