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

Werte von einer Mappe in eine andere Mappe kopiere

Werte von einer Mappe in eine andere Mappe kopiere
25.08.2013 03:24:26
einer
Hallo an alle, habe mal wieder eine Frage,
Ich möchte die Werte (Ohne Formel und Formatierung) aus folgenden Zellen des aktiven Sheets S20,S23,S26,S28,S30,S32,S35 und S27 in eine andere Mappe (C:\Users\Desktop\Rechnung.xlsm)
kopieren. Die Mappe Rechnung muss noch geöffnet werden und der Sheet wo es reinkopiert werden soll heißt “Rechnung“. In die Rechnung sollen die Werte ab Zelle E14 nacheinander eingefügt werden.
Wie mache ich das?
Vielen Dank euch allen für die Hilfe
Luna

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

Betreff
Datum
Anwender
Anzeige
AW: Werte von einer Mappe in eine andere Mappe kopiere
25.08.2013 05:09:33
einer
Hallo Luna,
hier ein entsprechendes Kopiermakro.
Gruß
Franz
Sub Rechnung_fuellen()
Dim intZelle As Long
Dim arrZellen As Variant
Dim wkbRechnung As Workbook, wksRechnung As Worksheet
Dim wksAktiv As Worksheet
Const strDatei = "C:\Users\Desktop\Rechnung.xlsm"                   'ggf. Anpassen!!!
'Zellen deren Inhalt übertragen werden soll
arrZellen = Array("S20", "S23", "S26", "S28", "S30", "S32", "S35", "S27")
Set wksAktiv = ActiveSheet
'Rechnungsdatei schreibgeschützt öffnen
Set wkbRechnung = Application.Workbooks.Open(Filename:=strDatei, ReadOnly:=True)
Set wksRechnung = wkbRechnung.Worksheets("Rechnung")
'Zellwerte übertragen
For intZelle = 0 To UBound(arrZellen)
wksRechnung.Range("E14").Offset(intZelle, 0).Value _
= wksAktiv.Range(arrZellen(intZelle)).Value
Next
Set wksAktiv = Nothing
Set wkbRechnung = Nothing: Set wksRechnung = Nothing
End Sub

Anzeige
AW: Werte von einer Mappe in eine andere Mappe kopiere
25.08.2013 14:25:55
einer
Hallo Franz,
vielen Dank für deine tolle Arbeit. Funktioniert einwandfrei. Was würde ich nur ohne euch hier im Forum machen. Vielen Dank nochmal.
Luna

AW: Werte von einer Mappe in eine andere Mappe kopiere
25.08.2013 16:41:09
einer
Hallo an alle und ich hoffe ich darf euch am heiligen Sonntag nochmal stören. Dank Franz funktioniert meine Aufgabe schon super, aber wie immer will man dann mehr. Ich habe das Makro ein wenig ergänzt.
Jetzt sieht es so aus.
Sub Rechnung_fuellenTest()
Dim intZelle As Long
Dim arrZellen As Variant
Dim wkbRechnung As Workbook, wksRechnung As Worksheet
Dim wksAktiv As Worksheet
Const strDatei = "C:\Users\Desktop\Excel_VBA Muster\Rechnung.xlsm"
'Zellen deren Inhalt übertragen werden soll
arrZellen = Array("S20", "S23", "S26", "S28", "S30", "S32", "S35", "S37")
Set wksAktiv = ActiveSheet
'Rechnungsdatei schreibgeschützt öffnen
Set wkbRechnung = Application.Workbooks.Open(Filename:=strDatei, ReadOnly:=True)
Set wksRechnung = wkbRechnung.Worksheets("Rechnung")
'Zellwerte übertragen
For intZelle = 0 To UBound(arrZellen)
wksRechnung.Range("E14").Offset(intZelle, 0).Value _
= wksAktiv.Range(arrZellen(intZelle)).Value
Next
ActiveCell.FormulaR1C1 = "abc" 'S20 steht in Verbindung mit abc (feststehender Begriff)
Range("B15:C15").Select
ActiveCell.FormulaR1C1 = "def" 'S23 steht in Verbindung mit def (feststehender Begriff)
Range("B16:C16").Select
ActiveCell.FormulaR1C1 = "ghi" 'S26 "alle gleich wie in den ersten beiden beschrieben"
Range("B17:C17").Select
ActiveCell.FormulaR1C1 = "jkl"       'S28
Range("B18:C18").Select
ActiveCell.FormulaR1C1 = "mno"       'S30
Range("B19:C19").Select
ActiveCell.FormulaR1C1 = "pqr"       'S32
Range("B20:C20").Select
ActiveCell.FormulaR1C1 = "stu"       'S35
Range("B21:C21").Select
ActiveCell.FormulaR1C1 = "vwx"       'S37
Range("B22:C22").Select
Set wksAktiv = Nothing
Set wkbRechnung = Nothing: Set wksRechnung = Nothing
End Sub
Jetzt meine Frage, kann man das auch einfacher gestalten? Ich habe den unteren Teil mit den feststehenden Begriffen mit dem Rekorder aufgezeichnet. Das ist aber kein Problem. Aber kann man die Zellen nur kopieren wenn ein Wert >0 drinsteht? Wenn also in S20 0 steht nicht abc in B14 und 0 in E14 kopieren sondern erst den nächsten Wert >0.
Danke vielmals für eure Mühen
Luna

Anzeige
AW: Werte von einer Mappe in eine andere Mappe kopiere
25.08.2013 17:44:53
einer
Hallo Luna,
hier dein Makro mit den entsprechenden Anpassungen, so dass nur Inhalte bei Werten > 0 übertagen werden.
Gruß
Franz
Sub Rechnung_fuellenTest()
Dim intZelle As Long, intCount As Integer, strText As String
Dim arrZellen As Variant
Dim wkbRechnung As Workbook, wksRechnung As Worksheet
Dim wksAktiv As Worksheet
Const strDatei = "C:\Users\Desktop\Excel_VBA Muster\Rechnung.xlsm"
'Zellen deren Inhalt übertragen werden soll
arrZellen = Array("S20", "S23", "S26", "S28", "S30", "S32", "S35", "S37")
Set wksAktiv = ActiveSheet
'Rechnungsdatei schreibgeschützt öffnen
Set wkbRechnung = Application.Workbooks.Open(Filename:=strDatei, ReadOnly:=True)
Set wksRechnung = wkbRechnung.Worksheets("Rechnung")
'Zellwerte übertragen
intCount = 0
For intZelle = 0 To UBound(arrZellen)
If wksAktiv.Range(arrZellen(intZelle)).Value > 0 Then
wksRechnung.Range("E14").Offset(intCount, 0).Value _
= wksAktiv.Range(arrZellen(intZelle)).Value
strText = ""
Select Case intZelle
Case 0: strText = "abc" 'S20 steht in Verbindung mit abc (feststehender Begriff)
Case 1: strText = "def" 'S23 steht in Verbindung mit def (feststehender Begriff)
Case 2: strText = "ghi" 'S26 "alle gleich wie in den ersten beiden beschrieben"
Case 3: strText = "jkl" 'S28
Case 4: strText = "mno" 'S30
Case 5: strText = "pqr" 'S32
Case 6: strText = "stu" 'S35
Case 7: strText = "vwx" 'S37
Case Else: strText = ""
End Select
If strText  "" Then
With wksRechnung
wksRechnung.Range("B14:C14").Offset(intCount, 0).Value = strText
End With
End If
intCount = intCount + 1
End If
Next
Set wksAktiv = Nothing
Set wkbRechnung = Nothing: Set wksRechnung = Nothing
End Sub

Anzeige
AW: Werte von einer Mappe in eine andere Mappe kopiere
25.08.2013 17:55:31
einer
Wow Franz,ich weiß nicht was ich sagen soll. Spitzenklasse und vielen Dank.
Wenn du mal in Costa Rica bist lade ich dich auf ein paar Bier ein.
Danke Luna

AW: Werte von einer Mappe in eine andere Mappe kopiere
28.08.2013 19:13:06
einer
Hallo Franz und Hallo an alle,
dank Franz seiner Hilfe funktioniert das Makro super. Ich habe es ein wenig erweitert und würde nur gerne wissen ob das so ok ist oder ob man es einfacher machen kann. Es funktioniert so wie es soll, weil ich aber lernen möchte würde mich interessieren wie ihr Profis so etwas schreibt. Die fettgedruckten Zeilen habe ich gebastelt und der Rest, also das ordentliche ist vom Franz.
Sub Rechnung_fuellenTest()
Application.ScreenUpdating = False
Dim intZelle As Long, intCount As Integer, strText As String
Dim arrZellen As Variant
Dim wkbRechnung As Workbook, wksRechnung As Worksheet
Dim wksAktiv As Worksheet
Dim wksStart As Worksheet
Const strDatei = "C:\Users\marichen\Desktop\Excel_VBA Muster\Rechnung.xlsm"
'Zellen deren Inhalt übertragen werden soll
arrZellen = Array("S20", "S23", "S26", "S28", "S30", "S32", "S35", "S37")
ActiveSheet.Range("C2:D2", "C1").Copy
Set wksStart = Worksheets("Startseite")
wksStart.Range("P17").Copy
wksStart.Range("P18").Copy
wksStart.Range("P19").Copy
wksStart.Range("P21").Copy
Set wksAktiv = ActiveSheet
'Rechnungsdatei schreibgeschützt öffnen
Set wkbRechnung = Application.Workbooks.Open(Filename:=strDatei, ReadOnly:=True)
Set wksRechnung = wkbRechnung.Worksheets("Rechnung")
'Zellwerte übertragen
intCount = 0
For intZelle = 0 To UBound(arrZellen)
If wksAktiv.Range(arrZellen(intZelle)).Value > 0 Then
wksRechnung.Range("E14").Offset(intCount, 0).Value _
= wksAktiv.Range(arrZellen(intZelle)).Value
strText = ""
Select Case intZelle
Case 0: strText = "abc" 'S20 steht in Verbindung mit abc (feststehender Begriff)
Case 1: strText = "def" 'S23 steht in Verbindung mit def (feststehender Begriff)
Case 2: strText = "ghi" 'S26 "alle gleich wie in den ersten beiden beschrieben"
Case 3: strText = "jkl" 'S28
Case 4: strText = "mno" 'S30
Case 5: strText = "pqr" 'S32
Case 6: strText = "stu" 'S35
Case 7: strText = "vwx" 'S37
Case Else: strText = ""
End Select
If strText  "" Then
With wksRechnung
wksRechnung.Range("B14:C14").Offset(intCount, 0).Value = strText
End With
End If
intCount = intCount + 1
End If
Next
wksRechnung.Range("E3") = wksAktiv.Range("C2") & "-" & wksAktiv.Range("D2")
wksRechnung.Range("E7") = wksAktiv.Range("C1")
wksRechnung.Range("E11") = wksStart.Range("P17")
wksRechnung.Range("E10") = wksStart.Range("P21")
wksRechnung.Range("E8") = wksStart.Range("P18")
wksRechnung.Range("E9") = wksStart.Range("P19")
Application.CutCopyMode = True
Set wksAktiv = Nothing
Set wkbRechnung = Nothing: Set wksRechnung = Nothing
Set wksStart = Nothing
End Sub
Danke für eure Mühe und Geduld mit mir
Luna

Anzeige
AW: Werte von einer Mappe in eine andere Mappe kopiere
29.08.2013 08:28:12
einer
Hallo Luna,
ein wenig optimieren kann man schon noch.
Oberer Abschnitt
Da du im oberen Abschnitt nach den Copy-Anweisungen keine Zieladresse angibst bzw. in einer nachfolgenden Zeile keine Paste-Anweisungen angegeben hast kannst du diese Zeilen weglassen.
  Set wksStart = Worksheets("Startseite")
unterer Abschnitt
Dieser ist soweit in Ordnung. Man kann hier das Tabellenblatt, das in jeder Zeile vorkommt, über eine With - End With Anweisung angeben.
  With wksRechnung
.Range("E3") = wksAktiv.Range("C2") & "-" & wksAktiv.Range("D2")
.Range("E7") = wksAktiv.Range("C1")
.Range("E11") = wksStart.Range("P17")
.Range("E10") = wksStart.Range("P21")
.Range("E8") = wksStart.Range("P18")
.Range("E9") = wksStart.Range("P19")
End With

Die nächste Zeile
  Application.CutCopyMode = True
ist wahrscheinlich überflüssig, ich kann mich nicht erinnern diese Anweisung je benutzt zu haben.
Wenn man Zellen kopiert hat -speziell wenn große Zellbereiche betroffen sind- dann ist nach dem Einfügen ein
  Application.CutCopyMode = False

sinnvoll, um die Zwischenablage zu leeren und ggf. blöde Nachfragen von Excel zu vermeiden.
Gruß
Franz
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige