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

speichern

speichern
07.11.2005 08:55:42
lisa
hallo zusammen,
Ich habe da mal eine Frage. Vieleicht hat ja mal jemand Zeit sich meiner anzunehmen?
Ich möchte nach und nach Daten in eine Datenbank einspeichern.
Dazu wollte ich mit dem Recorder nich angrenzende Zellen kopieren, wo ich aber gemeldet bekommen habe, dass das nicht geht.
Hat da jemand einen Tip für mich
Dazu kommt das ich wenn es funktionieren sollte es über en Befehlsbutton steuern will.
Wenn ich auf den Button drücke, soll also eine neue Mappe geöffnet und kopiert werden, das bekomme ich hin,
nur wie bekomme ich es hin, dass beim kopieren immer wieder eine neue Zeile genommen wird.
Vielen Dank schon mal für eure Mühe
Gruß Lisa

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: speichern
07.11.2005 10:25:46
Erich
Hallo Lisa,
noch ohne Button, aber sonst läuft das:
(frei nach https://www.herber.de/mailing/235004h.htm )

Sub KopieMehrfach()
Dim wb As Workbook, rng As Range, iRowZ As Integer
'                                            neue Mappe anlegen
Set wb = Workbooks.Add(xlWBATWorksheet)
iRowZ = 1
'                                            Quellmappe aktivieren
ThisWorkbook.Activate
With wb.Sheets(1)
'                                      Schleife über Bereiche
For Each rng In Selection.Areas
rng.Copy Destination:=.Cells(iRowZ, 1)
iRowZ = iRowZ + rng.Rows.Count
Next rng
End With
'                                            Quellmappe aktivieren
wb.Activate
'                                            aufräumen
Set wb = Nothing
Set rng = Nothing
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: speichern
07.11.2005 10:53:18
lisa
Ganz herzlichen Dank für deine Mühe, das ist sehr lieb,
aber nach dem ich meinen Button mit deinem Code belegt habe und ihn auch betätigt habe öffnet sich eine neue Mappe die auch aktiv bleibt aber es wird nichts eingespeichert und dann gehe ich wieder in meine Mappe drücke noch einmal den Button und es öffnet sich wieder eine neue Mappe aber es wird nichts gespeichert.
Ich glaube ich habe mich falsch ausgedrückt, da ich nicht immer eine neue Mappe haben wollte sondern in immer eine neue Zeile.
Vieleicht könntest du mir noch einmal diesbezüglich helfen.
Ich muß aber nur bestimmte Zellen kopieren nicht die ganze Mappe.
gruß lisa
Anzeige
AW: speichern
07.11.2005 12:11:01
Erich
Hallo Lisa,
ein wenig klarer hätte deine Frage schon sein können, dann hätte ich mir einige Arbeit erspart...
Da sind noch einige Fragen offen:
Wo befindet sich dein Button? (in der Mappe "Datenbank.xls", auf welchem Blatt?)
(Da wäre dann wohl auch der Code im Klassenmodul der Tabelle.)
Wie bestimmst du die Quellmappe, deren Bereiche du kopieren willst? Gibt es dafür z. B. einen Dialog?
Wie bestimmst du die zu kopierenden Bereiche der Quellmappe? Sind das bei jeder Quellmappe dieselben?
Welche Form haben die zu kopierenden Bereiche? Fangen die immer in Spalte A an?
So wie ich das jetzt verstehe, müsstest du keine nicht zusammenhängenden Bereiche selektieren. Stattdessen kannst du alle gewünschten (zusammenhängenden) Bereiche nacheinander kopieren - ohne Selektion.
Kann die letzte in "Datenbank" belegte Zeile abhängig nur von Spalte A bestimmt werden? Dann kannst du die jeweilige Anfangszeile des Kopierziels so berechnen:
iRowZ = Cells(Cells.Count, 1).End(xlUp).Row
Es wäre sicher sinnvoll gewesen, wenn du deinen Code hier gepostet hättest, besser noch zwei Beispielmappen.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: speichern
07.11.2005 13:18:59
lisa
hallo und Endschuldigung
aber ich habe nicht daran gedacht, dass ihr gar nicht wissen könnt was ich vor habe.
Endschuldigung.
Also zu meinem ersten Problem, in meiner Tabelle, in der auch mein Button ist, gebe ich Daten ein.
Da die Cellen die ich kopieren will nicht angrenzend sind, kann ich dem Recorder nicht sagen nimm zum Beispiel, a1 und a10 und c2 und kopiere die Inhalte, sondern ich kann nur Bereiche auswählen, jedenfalls mit meiner Version.
Nun habe ich noch eine zweite Tabelle, die als Datenbank dienen soll, in die dann diese Daten gespeichert werden sollen.
Wenn ich aber mit dem Recorder aufzeichne kann ich immer nur eine Celle aktivieren und nicht sagen beim nächsten mal bitte Zeile 1 dann bitte zeile 2 dann 3 usw.
Naja, das ist der Code vom Recorder, aber der Hilft hicht wirklich weiter, oder?
Wenn du/ihr nicht zu verärgert bist/seid, vieleicht könntest du/ihr es ja noch einmal versuchen.
Range("A1:C10").Select
Selection.Copy
ChDir "C:\Dokumente und Einstellungen\lisa\Desktop"
Workbooks.Open Filename:= _
"C:\Dokumente und Einstellungen\lisa\Desktop\Datenbank.xls"
Range("A2").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
ActiveWorkbook.Save
ActiveWindow.Close
Range("A1:C10").Select
Application.CutCopyMode = False
Selection.ClearContents
Range("A1").Select
End Sub
mfG. lisa
Anzeige
AW: speichern
07.11.2005 13:47:35
Erich
Hallo Lisa,
verärgert bin ich nicht, wundere mich aber schon darüber, dass du auf meine Fragen kaum eingegangen bist... Also hab ich meinen Code mal nach Gutdünken abgeändert. Er kopiert die VOR dem Aufruf der Funktion selektierten Bereiche.

Sub KopieMehrfach()
Dim wb As Workbook, rng As Range, iRowZ As Integer
'                                            Zielmappe öffnen
Set wb = Workbooks.Open(Filename:= _
"C:\Dokumente und Einstellungen\lisa\Desktop\Datenbank.xls")
With wb.Worksheets(1)
'                                      erste freie Zeile des Zielblatts
iRowZ = .Cells(Rows.Count, 1).End(xlUp).Row + 1
'                                      Quellmappe aktivieren
ThisWorkbook.Activate
'                                      Schleife über Bereiche
For Each rng In Selection.Areas
rng.Copy Destination:=.Cells(iRowZ, 1)
iRowZ = iRowZ + rng.Rows.Count
Next rng
End With
'                                            Zielmappe schließen+sichern
wb.Close SaveChanges:=tru
'                                  Werte im selektierten Bereich löschen
Selection.ClearContents
'                                            aufräumen
Cells(1, 1).Select
Set wb = Nothing
Set rng = Nothing
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: speichern
07.11.2005 15:15:29
lisa
hallo noch einmal,
ich dachte eigentlich ich hätte dir alles gesagt, aber dann wohl doch nicht.
denn auch mit deinem jetzigen code werden die daten nicht so gespeichert wie ich es gerne wollte.
Mappe 1 heißt eingabe,
mappe 2 datenbank
Kopiere von eigabe celle a1 a10 c2
in mappe datenbank in a1 b1 c1 schließe mappe datenbank und speichere
gehe zurück zu mappe eingabe
wenn der button wieder gedrückt wird mache das gleiche wieder dann aber bitte in der mappe datenbank in a2 b2 c3 und so weiter
wobei ich mich aber nicht a1 a10 c2 usw. festlegen möchte das könnte sein das sich das auch noch ändert oder erweitert
mfG lisa
Anzeige
AW: speichern
07.11.2005 17:44:13
Erich
Hallo Lisa,
mit deinem Beispiel wurde es schon deutlicher.
Du willst also die zu kopierenden Bereiche in "Datenbank.xls" nebeneinander haben. Das ist klar, wenn die Bereiche wir im Beispiel jeweils aus einer Zelle bestehen, und auch dann noch, wenn jeder Bereich mehrere Spalten, aber nur eine Zeile umfasst (z. B. C3:F3).
Wenn ein Bereich mehrere Zeilen hat (z. B. A3:A5 oder C3:F7), werden "Datenbank.xls" auch mehrere Zeilen verbraucht.
Welche Bereiche kopiert werden sollen, kannst du jetzt im Makro bei den Vorgaben festlegen. Dort bestimmst du auch, ob nur Werte (mit PasteSpecial) oder auch Formate und Formeln (normales Copy) kopiert werden sollen.

Sub KopieListeBereiche()
Dim wb As Workbook, anzRg As Integer, rng() As Range, ii As Integer
Dim iRow As Long, iCol As Integer, mitFormaten As Boolean
'  #################################################  Vorgaben Anfang
anzRg = 3
ReDim rng(1 To anzRg) ' muss so bleiben
Set rng(1) = [A1]
Set rng(2) = [A10]
Set rng(3) = [c2]
mitFormaten = False
'  #################################################  Vorgaben Ende
'                                            Zielmappe öffnen
Set wb = Workbooks.Open(Filename:= _
"C:\Dokumente und Einstellungen\lisa\Desktop\Datenbank.xls")
With wb.Worksheets(1)
'                                      erste freie Zeile des Zielblatts
iRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
While WorksheetFunction.CountBlank(.Rows(iRow)) < Columns.Count
iRow = iRow + 1
Wend
'                                      Quellmappe aktivieren
ThisWorkbook.Activate
'                                      Kopieren in ... ab Spalte A
iCol = 1
'                                      Schleife über Bereiche
For ii = 1 To anzRg
If mitFormaten Then
rng(ii).Copy Destination:=.Cells(iRow, iCol)
Else
rng(ii).Copy
.Cells(iRow, iCol).PasteSpecial Paste:=xlValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End If
iCol = iCol + rng(ii).Columns.Count
'                                   Werte in Quellbereich löschen
rng(ii).ClearContents
Set rng(ii) = Nothing
Next ii
Application.CutCopyMode = False
End With
'                                            Zielmappe schließen+sichern
wb.Close SaveChanges:=True
'                                            aufräumen
Cells(1, 1).Select
Set wb = Nothing
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: speichern
07.11.2005 18:16:34
lisa
hallo Erich,
es ist schön das es mir gelungen ist, es doch noch verständlich rüberzubringen.
herzlichen dank für deine Mühe und dein Verständnis.
Ich habe alles einkopiert und bin gerade am Testen.
Im Moment wird zwar gerade gemeldet das er den Pfad nicht findet aber das werde ich wohl hinbekommen.
Wenn alles klappt melde ich mich wieder das schon mal vorab ich wollte dich nicht solange warten lassen
danke mfG lisa
AW: speichern
07.11.2005 19:42:38
lisa
hallo Erich, noch mal,
das mit dem Pfad muß eine andere Ursache haben , da ich es schon 5 x angepasst habe aber es klappt nicht.
Set wb = Workbooks.Open(Filename:= _
"C:\Dokumente und Einstellungen\ich\Desktop\Datenbank.xls"
die Mappe existiert und ist geschlosen aber es kommt immer dies Fehlermeldung, also er bleibt beim Pfad stehen deshalb denke ich das es daran liegt oder?
Kannst du dir das noch einmal ansehen, bitte.
gruß lisa
Anzeige
AW: speichern
07.11.2005 22:59:54
Erich
Hallo Lisa,
kann es sein, dass du auf deinem Rechner zwei Benutzer hast: "lisa" und "ich"?
Aus deinem Makro sehe ich, dass du bei der Aufzeichnung wohl unter "lisa" angemeldet warst, dort heißt die Mappe
"C:\Dokumente und Einstellungen\lisa\Desktop\Datenbank.xls". Vielleicht gibt es die Mappe
"C:\Dokumente und Einstellungen\ich\Desktop\Datenbank.xls" gar nicht? Oder ist es vielleicht gerade umgekehrt?
Wie auch immer: Wenn du unter dem Benutzer angemeldet bist, unter dem die Datenbank.xls gespeichert ist, müsstest du sie auf der Arbeitsöberfläche in Windows sehen können. Dort ist sie nämlich gespeichert - auf dem Desktop.
Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: speichern
08.11.2005 07:12:31
lisa
schönen guten Morgen,
Ich bin nun wieder auf Arbeit und hier bin ich nun wieder mit lisa angemeldet. Dokumente Einstellungen\ich ist zu Hause.
Nun habe ich es hier auch noch mal ausprobiert aber leider klappt es nicht und zwar habe ich eine Syntaxfehlermeldung "Fehler beim Kompilieren" und der Pfad ist blau unterlegt.
Vieleicht hast du ja noch eine Idee was da blockieren könnte. Vieleicht liegt es gar nicht am Pfad.
Schönen Dank für deine Mühe
Gruß lisa
AW: speichern
08.11.2005 08:12:58
Erich
Hallo Lisa,
ja, wenn da ein Kompilierungsfehler ist, kann es am Pfad nicht liegen, auch
Set wb = Workbooks.Open(Filename:="abc")
würde richtig kompiliert und sogar laufen, wenn es eine Mappe "abc" gibt.
Fehlt da vielleicht die abschließende Klammer in der Zeile ...\Datenbank.xls") ?
Grüße von Erich aus Kamp-Lintfort
es funktioniert. danke recht herzlich! oT. lisa
08.11.2005 08:24:34
lisa
Danke für Info - aber: nicht mehr offen! (oT)
08.11.2005 09:31:34
Erich

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige