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

Einfügen und speichern in andere Mappe?

Einfügen und speichern in andere Mappe?
27.03.2014 12:46:31
Spenski
Hi
Ist es via vba möglich einen kopierten Bereich in Mappe1(tabelle1) in Mappe2 (tabelle1) einzufügen und dann dort zu Speichern ohne das Mappe2 geöffnet ist?
Danke fürs lesen
Gruß
Christian

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Einfügen und speichern in andere Mappe?
27.03.2014 12:52:39
GuentherH
Hi Christian,
Nein, ohne Öffnen kein Speichern.
Was hindert Dich am Öffnen?
Ohne Anzeigen ginge vielleicht.
Beste Grüße,
Günther

AW: Einfügen und speichern in andere Mappe?
27.03.2014 13:02:18
Spenski
Hallo Günther
Die Mappe2 sollte nicht die ganze Zeit offen sein weil ein anderer Arbeitsplatz damit arbeiten soll.
Wäre es denn möglich via Makro die Mappe2 zu öffnen , einfügen , speichern , mappe 2 schließen ?
Gruß christian

Ja. owT
27.03.2014 13:10:27
Rudi

AW: Einfügen und speichern in andere Mappe?
27.03.2014 13:21:35
Oberschlumpf
Hi christian
versuch mal (ungetestet, weil, du weißt schon, keine Bsp-Dateien vorhanden)
Sub sbSave()
Workbooks.Opoen "Pfad\Dateiname.xls"
ThisWorkbook.Sheets("Blattname").Range("DeinBereich").Copy Range(" _
ZielZelle")
ActiveWorkbook.Close True
End Sub
Das Makro muss in der Datei gespeichert werden, in dem die Daten stehen, die in die andere Datei eingefügt werden sollen.
Für alles fettgedruckte musst du die richtigen Werte eintragen, da wir ja nicht wissen, wo die Datei gespeichert ist, wie die Datei heißt, welcher Bereich kopiert werden soll, welche ZielZelle die Startzelle ist, in die eingefügt werden soll.
Hilfts?
Ciao
Thorsten

Anzeige
AW: Einfügen und speichern in andere Mappe?
27.03.2014 14:49:49
GuentherH
Hallo Christian,
und der andere Arbeitsplatz muss in der Zeit schließen!
Gruß,
Günther

AW: Einfügen und speichern in andere Mappe?
27.03.2014 14:52:39
Oberschlumpf
Hallo
Man kann ne Excel-Datei übrigens auch so konfigurieren, dass mehrere Mitarbeiter sie gleichzeitig öffnen,bearbeiten,speichern können
Das geht über Arbeitsmappe freigeben
Ciao
Thorsten

AW: Einfügen und speichern in andere Mappe?
28.03.2014 00:13:47
Spenski
Hallo ihr beiden
danke für eure hilfe. es hat super funktioniert ausser n kleiner rechtschreibfehler. aber ich hab wieder was gelernt was mich am meisten freut :D
habs jetzt so umgebaut und es funktioniert super
Private Sub CommandButton1_Click()
Workbooks.Open "C:\Users\Spenski\Desktop\Test.xlsx"
Sheets("tabelle1").Cells(65536, 1).End(xlUp).Offset(1, 0) = Now()
Sheets("tabelle1").Cells(65536, 1).End(xlUp).Offset(0, 1) = Now()
Sheets("tabelle1").Cells(65536, 1).End(xlUp).Offset(0, 3) = TextBox1.Text
Sheets("tabelle1").Cells(65536, 1).End(xlUp).Offset(0, 4) = TextBox2.Text
Sheets("tabelle1").Cells(65536, 1).End(xlUp).Offset(0, 5) = TextBox6.Text
Sheets("tabelle1").Cells(65536, 1).End(xlUp).Offset(0, 6) = TextBox3.Text
Sheets("tabelle1").Cells(65536, 1).End(xlUp).Offset(0, 7) = TextBox7.Text
Sheets("tabelle1").Cells(65536, 1).End(xlUp).Offset(0, 8) = TextBox4.Text
Sheets("tabelle1").Cells(65536, 1).End(xlUp).Offset(0, 9) = TextBox5.Text
If OptionButton1.Value = True Then
Sheets("tabelle1").Cells(65536, 1).End(xlUp).Offset(0, 2) = "A"
End If
If OptionButton2.Value = True Then
Sheets("tabelle1").Cells(65536, 1).End(xlUp).Offset(0, 2) = "B"
End If
If OptionButton3.Value = True Then
Sheets("tabelle1").Cells(65536, 1).End(xlUp).Offset(0, 2) = "C"
End If
ActiveWorkbook.Close True
End Sub

Danke
christian

Anzeige
möchtest du....
28.03.2014 07:34:27
Oberschlumpf
...noch etwas lernen?
Guten Morgen Christian
Erst mal freuts mich natürlich für dich, dass du deinen Code so hinbekommen hast, wie du möchtest.
Darf ich dir trotzdem eine Verbesserung (Verschönerung) vorschlagen?
hier, versuch mal
Private Sub CommandButton1_Click()
Dim lloNextRow As Long
Workbooks.Open "C:\Users\Spenski\Desktop\Test.xlsx"
With Sheets("tabelle1")
lloNextRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(lloNextRow, 1) = Now()
.Cells(lloNextRow, 2) = Now()
.Cells(lloNextRow, 4) = TextBox1.Text
.Cells(lloNextRow, 5) = TextBox2.Text
.Cells(lloNextRow, 6) = TextBox6.Text
.Cells(lloNextRow, 7) = TextBox3.Text
.Cells(lloNextRow, 8) = TextBox7.Text
.Cells(lloNextRow, 9) = TextBox4.Text
.Cells(lloNextRow, 10) = TextBox5.Text
If OptionButton1.Value = True Then
.Cells(lloNextRow, 3) = "A"
Else
If OptionButton2.Value = True Then
.Cells(lloNextRow, 3) = "B"
Else
If OptionButton3.Value = True Then
.Cells(lloNextRow, 3) = "C"
End If
End If
End If
End With
ActiveWorkbook.Close True
End Sub

Erst mal habe ich Cells(65536, 1).End(xlUp) gegen Cells(Rows.Count, 1).End(xlUp).Row + 1 ausgetauscht.
Der Grund ist, dass deine Variante so die letzte, benutzte Zeile bis Excel 2003 ermittelt.
Aber du benutzt ja Excel 2007. Und ab 2007 können ja sehr viel mehr Zeilen/Spalten genutzt werden.
Es ist zwar unwahrscheinlich, dass du mehr als 65536 Zeilen nutzen wirst, oder? :-) Aber es wäre zumindest nicht unmöglich ;-)
Die eigentliche "Verschönerung" ist aber With Sheets("tabelle1").
In deinem Code beginnt fast jede Zeile mit Sheets("tabelle1").
Diese Wiederholungen lassen sich mit With ... und End With vermeiden.
Alle Befehle, die innerhalb von With/End With stehen und mit einem . beginnen, beziehen sich auf den Parameter hinter With, hier Sheets("tabelle1").
Stell dir mal vor, aus "tabelle1" wird "tabelle2".
So müsstest du in deinem Code fast jede Codezeile ändern.
Mit der With/End With-Variante müsstest du nur in der Zeile With Sheets("tabelle1") aus 1 eine 2 machen.
Und dann sind da noch die If-Bedingungen.
In deinem Code werden alle If-Bedingungen überprüft. Egal, wenn schon die erste Bedingung zutrifft.
Wenn du meine verschachtelten If-Bedingungen übernimmst, und z Bsp OptionButton1 ist ausgewählt, dann wird nur die Zeile darunter ausgeführt. Der restliche Code wird nicht mehr geprüft, weil ja nicht mehr erforderlich.
So, Christian, wenn du trotz allem weiterhin deinen Code nutzen willst, dann ist das natürlich ok.
Aber mir hats in den Fingern gejuckt, dir noch n paar Verbesserungen zu zeigen :-)
Ciao
Thorsten

Anzeige
AW: möchtest du....
28.03.2014 09:22:57
Spenski
Hallo Thorsten
Danke für deine Mühe für die Tips ich werde es auch jedenfall testen und für spätere Projekte nutzen.
Erst mal habe ich Cells(65536, 1).End(xlUp) gegen Cells(Rows.Count, 1).End(xlUp).Row + 1 ausgetauscht.
Der Grund ist, dass deine Variante so die letzte, benutzte Zeile bis Excel 2003 ermittelt.
Das ist eigentlich der letzte Punkt der mich an diesem Programm stört , da ich ansonsten eigentlich so gut wie fertig bin.
Wie im Makro ja zu sehen trage ich über textboxn in die spalte A bis J ein ...dahinter H bis K stehen Formeln .
Der Bediener hat die Möglichkeit auch A:J zu löschen wodurch freizeilen entstehen. Aber bisher hab ich nur +1 nach letzter benutzter zeile gefunden.
In einem anderen thread hier konnte mir auch nicht wirklich jmd helfen
Gruß christian

Anzeige
AW: möchtest du....
28.03.2014 11:30:00
Oberschlumpf
Hi Christian
Wenn ich dich richtig vertstanden habe, dann...
...hast du eine Tabelle mit z Bsp 100 genutzen Zeilen
...mit deinem Code ermittelst du bis jetzt die nächste, freie Zeile in Spalte A
das wäre in diesem Fall Zeile 101
...wenn aber nun Kollege xy die Werte in den Zellen A100:J100 löscht, dann...
...ist Zeile 100 trotzdem noch benutzt, weil in hinteren Spalten noch Formeln enthalten sind
...der Code ermittelt als nächste, freie Zeile trotzdem Zeile 100, weil ja A100 gelöscht ist
...und somit würde dein Code die neuen Werte, eigentlich für Zeile 101 bestimmt
in Zeile 100 schreiben, und somit ist deine Tabelle durcheinander
Wenn ich damit also richtig liege, dann versuch es so
ändere diese Zeile
lloNextRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1

um in
lloNextRow = .Cells(Rows.Count, AndereSpalte).End(xlUp).Row + 1

für AndereSpalte musst du dann die Spaltenzahl eintragen, in der entweder ein Wert steht, auch wenn A-J gelöscht, oder in der eine Formel steht.
8 = Spalte H
9 = Spalte I
10 = Spalte J
usw
Hilfts?
Wenn nicht, zeig mal bitte eine Bsp-Datei. Dann such ich für dich die nächste, freie Zeile, auch wenn in letzter, benutzter Zeile A-J gelöscht ist.
Ciao
Thorsten

Anzeige
AW: möchtest du....
28.03.2014 18:41:32
Spenski
hallo thorsten, ein schönes wiochenende wünsch ich dir
hier mal die datei...leider zu gross um hier hochzuladen
http://www.file-upload.net/download-8760014/maske2.xlsm.html
also mit den formeln hat das denke ich nix zu tun da sie bis zeile 500 runtergezogen sind.
ich vermute eher das die makros die ich bisher versucht habe die letzte benutzte zeile in spalte "A" suchen und dann +1 offset gehen.
bei der datei ist das aktuelle beispiel das die nächste eingabe in Zeile 6 rein soll aber in Zeile 9 landet.
mfg
christian
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige