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

VBA Datei öffnen und darin 1. leere Zelle finden

VBA Datei öffnen und darin 1. leere Zelle finden
07.02.2014 12:46:16
Steve
Hello ihr Profis,
ich stehe irgendwie auf dem Schlauch und hoffe ihr könnt helfen. Es soll einfach nur geprüft werden of eine Datei vorhanden ist. Wenn diese NICHT vorhanden ist, soll eine bestimmte Excel Tabelle geöffnet und in dieser nach der ersten freien Zelle gesucht werden. Ich dachte ich läge hiermit richtig:
Private Sub CommandButton3_Click()
Dim lngLast As Long
strFileName = "Gutschriften"
If Dir(ThisWorkbook.Path & "\" & strFileName & "_" & Format(Date, "dd.mm.yyyy") & "_OPEN" & ".xlsx") = "" Then
Workbooks.Open (ThisWorkbook.Path & "\test.xlsx")
lngLast = Cells(Rows.Count, 4).End(xlUp).Row + 1
MsgBox "Erste freie Zelle in Spalte D ist in Zeile: " & lngLast
Else
MsgBox "gibts"
End If
allerdings wird damit im workbook gesucht in dem ich die suche gestartet hab und NICHT in der neu geöffneten datei :(

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Datei öffnen und darin 1. leere Zelle finden
07.02.2014 13:54:48
EtoPHG
Hallo Steve,
Im geöffneten Workbook musst du auch noch bestimmen in welchem Blatt.
Zudem steht der Code ziemlich sicher in einem Tabellenblatt und mit einer nicht-Referenzierung der Zellen/Bereiche sprichst du damit automatisch dieses Blatt an. Also versuch mal:
    With Workbooks.Open(ThisWorkbook.Path & "\test.xlsx")
With .Worksheets(1)             ' ggf anpassen
lngLast = .Cells(.Rows.Count, 4).End(xlUp).Row + 1
End With
End With
MsgBox "Erste freie Zelle in Spalte D ist in Zeile: " & lngLast
Vergiss nicht, das Workbook wieder zu schliessen, sonst bleibt es das aktive!
Gruess Hansueli

Anzeige
AW: VBA Datei öffnen und darin 1. leere Zelle finden
07.02.2014 14:12:29
fcs
Hallo Steve,
wenn der Code unter einem Tabellenmodul steht, dann muss bei einem Zugriff auf die Zellen eines externen Tabellenein die Referenz zum Tabellenblatt vollständig sein.
Gruß
Franz
Private Sub CommandButton3_Click()
Dim lngLast As Long, wbk2 As Workbook
strFileName = "Gutschriften"
If Dir(ThisWorkbook.Path & "\" _
& strFileName & "_" & Format(Date, "dd.mm.yyyy") & "_OPEN" & ".xlsx") = "" Then
Set wbk2 = Workbooks.Open(ThisWorkbook.Path & "\test.xlsx")
With wbk2.Worksheets(1)
lngLast = .Cells(.Rows.Count, 4).End(xlUp).Row
If lngLast = 1 And IsEmpty(.Cells(1, 4)) Then 'Sonderfall Spalte D ist noch leer
lngLast = 1
Else
lngLast = lngLast + 1
End If
End With
MsgBox "Erste freie Zelle in Spalte D ist in Zeile: " & lngLast
Else
MsgBox "gibts"
End If
End Sub

Anzeige
AW: VBA Datei öffnen und darin 1. leere Zelle finden
07.02.2014 15:14:36
Steve
danke, das klappt tatsächlich super. nur leider funktioniert das einfügen von werten von der einen in die andere tabelle nicht. Ich versuchte es hiermit:
MsgBox "Erste freie Zelle in Spalte D ist in Zeile: " & lngLast
ThisWorkbook.Worksheets("COMPLETE").Range("A6:E50").Copy
Workbooks("test.xlsx").Worksheets("Manager").Range(Cells(lngLast, 4)).PasteSpecial Paste:=xlPasteValues
komisch. noch eine Idee? der bereich soll einfach nur an der stelle eingefügt werden in der die erste freie zelle ist.

AW: VBA Datei öffnen und darin 1. leere Zelle finden
07.02.2014 15:19:23
EtoPHG
Hallo Steve,
Das geht dann so:
    ThisWorkbook.Worksheets("COMPLETE").Range("A6:E50").Copy
With Workbooks.Open(ThisWorkbook.Path & "\test.xlsx")
With .Worksheets("Manager")
.Cells(.Rows.Count, 4).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
End With
End With
Gruess Hansueli

Anzeige
AW: VBA Datei öffnen und darin 1. leere Zelle finden
07.02.2014 15:40:24
Steve
Danke hansueli, da bekomme ich jedoch die fehlermeldung, dass die datei bereits geöffnet sei. Gibt es bei "meiner version" nicht einfach nur eine kleine anpassung, die man vornehmen müssten? ich wunder mich nur, weil das geht:
ThisWorkbook.Worksheets("COMPLETE").Range("F3").Copy
Workbooks("test.xlsx").Worksheets("Manager").Range("H6").PasteSpecial Paste:=xlPasteValues
Und das nicht:
ThisWorkbook.Worksheets("COMPLETE").Range("A6:E50").Copy
Workbooks("test.xlsx").Worksheets("Manager").Range(Cells(lngLast, 4)).PasteSpecial Paste:=xlPasteValues
hmm. vielleicht noch einen tipp? tut mir leid, falls ich nerve

Anzeige
AW: VBA Datei öffnen und darin 1. leere Zelle finden
07.02.2014 15:48:24
EtoPHG
Hallo,
So wird Hilfe schwierig. Natürlich bekommst du die Fehlermeldung, wenn du mit einer bereits geöffneten 2ten Mappe das Makro testest. Ich hab schon in meiner ersten Antwort geschrieben, dass sie manuell oder besser kontrolliert-programmatisch wieder geschlossen werden muss.
Warum das 1. geht: Weil Range("A6") klar zur Mappe.Blatt. referenziert ist.
Warum das 2. nicht geht: Weil Cells(lngLast,4) nun wieder auf dein Blatt mit dem Code zeigt und Bereiche/Zellen können nicht in 2 verschiedenen Mappen und/oder Blättern liegen!
Gruess Hansueli

Anzeige
AW: VBA Datei öffnen und darin 1. leere Zelle finden
07.02.2014 15:59:51
fcs
Hallo Steve,
hier ist das Range zuviel, bzw. bei Cells fehlt die Referenz zum korrekten Blatt.
Deswegen hilft hier dann eine With Objekt... end With konstuktion, um Wiederholungen der Objektangabe zu vermeiden.
Workbooks("test.xlsx").Worksheets("Manager").Cells(lngLast, 4).PasteSpecial Paste:=xlPasteValues
Gruß
Franz

AW: VBA Datei öffnen und darin 1. leere Zelle finden
07.02.2014 17:44:58
Steve
super. geht! danke vielmals

409 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige