Daten aus einer Mappe in eine andere kopieren

Carsten55

Cadet 1st Year
Registriert
Aug. 2013
Beiträge
14
Hallo an alle, habe mal wieder eine Idee und weiß nicht wie ich sie umsetzen soll. Ich hoffe ihr könnt mir helfen.
Folgendes möchte ich machen: Ich möchte Daten aus einer Aktiven Tabelle in eine andere noch zu öffnende Tabelle kopieren/einfügen.
Zuerst mal eine Übersicht wie meine Aktive Tabelle aufgebaut ist. In den folgenden Zellen stehen meine Summen, die ich ohne Formel aber mit Verbindung der in Klammern stehenden Positionen in eine andere Excel Tabelle kopieren möchte.
S20 (Materialien); S23 (Übernachtungen); S26 (Verpflegung); S28 (Sonstiges); S30 (Kursgebühren)
S32 (Fremdkosten); S35 (xyz); S37 (abc).
Das ist glaube ich nicht das Problem. Aber ich möchte die Position und Summe nur kopieren(einfügen) wenn auch ein Wert größer als 0 drinsteht.
Die Tabelle wo es hinein kopiert werden soll liegt im Pfad (C:\Users\Desktop\Rechnung.xlsm)
Dort sollen die Positionen (Materialien, Übernachtungen usw) ab Zelle B14 und die dazu gehörigen Summen ab Zelle E14 eingetragen werden. Das bedeutet, wenn zB in S20 20Euro steht soll er mir in meine Rechnung in B14 Materialien schreiben und in E14 20. Steht in S20 0Euro passiert nichts und das Makro sucht die nächste Zelle. Indem Fall also S23, steht dort eine Summe größer als 0 drin fügt er mir in die nächste freie Zelle in B(B14-B29) Übernachtungen ein und in E(E14-E29) die Summe. Das ganze solange bis die 8 Positionen durch sind.
Ich hoffe ich konnte erklären was ich möchte. Ist so etwas machbar?
Als nächsten Schritt (Neues Makro in Rechnung) würde ich dann gerne diese Muster Rechnung umbenennen und hinter den Sheet kopieren aus dem ich die Daten hole. So das meine Muster Rechnung immer dort bleibt
Danke für eure Hilfe
Carsten
 
Von welchem Programm sprichst du?
 
Hallo Gizmo
ich hoffe wir verstehen uns richtig. Ich habe Excel 2010. Und nur damit keine Missverständnisse aufkommen. Es ist eine rein private Spielerei für das Büro meiner Freundin und ich bin dankbar über jeden Ansatz, zB wie ich den Kopiervorgang lösen kann. Aus allen Vorschlägen bastel ich mir dann schon was zusammen.
Danke dir Gizmo und allen ander auch im voraus
Carsten
 
Grmbl… Datenbankjobs muss man ja immer in XL abbilden wollen… Und ich weiß was ein Mitarbeiter da programmiert hat um etwas zu stricken das noch aufwändiger ist als dein Plan.

Zuerst mal musst du mit deine Regeln klarkommen und an Ausnhamen denken:
Aber ich möchte die Position und Summe nur kopieren(einfügen) wenn auch ein Wert größer als 0 drinsteht.
Also soll dieser Datensatz übergangen werden!?

in eine andere Excel Tabelle kopieren möchte
Was willst du ›kopieren‹ - nur Werte oder sollen es Bezüge zum Quellwert/zur Quellformel sein?

Die Tabelle wo es hinein kopiert werden soll liegt im Pfad (C:\Users\Desktop\Rechnung.xlsm)
Reden wir also von Tabellen oder von Mappen in die die Daten sollen?

Kernfrage: die Daten die irgendwo hin verteilt werden sollen kommen woher? Wird da ein Blatt quasi täglich gepflegt und dann monatlich eine Bilanz gezogen?

Bemühe ich unsere Tools gibt es eine Verwaltungsmappe die Leerblätter in einer Leermappe anlegt (und formatiert) um dann aus Quellmappen (wo die Daten gesammelt werden) diese Daten einzusammeln die dann dort tabuliert und schließlich ausgewertet werden.
Das ist von der Grundmechanik relativ einfach. Du müsstet mal eher einen logischen Ablaufplan konstruieren der dann verwirklicht wird. Besagte Verwaltungsmappe nimmt Einstellungen wie einen Standort und eine Monat entgegen, erwartet im Gegenzug bestimmte Dateinamen und Dateiorte. Ist das alles klar rattert das Makro auf Knopfdruck los und erzeugt die Ergebnismappen mit wiederum bestimmten Namen.

CN8
 
Hallo CN8
vielleich habe ich es auch komplizierter erklärt wie es ist.
Zu deiner esten Frage: Ich möchte einfach nur die Summe in Verbindung mit der festen Position in eine andere Mappe kopieren. Da die andere Mappe die Rechnung darstellt möchte ich nur nicht das er mir zB Materialien 0 Euro kopiert. Sondern wenn keine Summe drin steht auch nicht kopieren.
Und Entschuldigung, es sind natürlich 2 Mappen die im selben Ordner liegen.
Die Daten die in die Rechnung verteilt werden kommen aus der Mappe des Teilnehmers, wo alles detailliert steht. In der Rechnung habe ich es dann nur unter dem Oberbegriff.
Das bedeutet die Quelldatei(Teilnehmer Mappe) ist geöffnet, bei den 8 Punkten wo ein Wert drinsteht der wird nacheinander in die nächste freie Zelle in die zu öffnende Mappe (Rechnung) eingefügt und fertig.

Danke das du dir so eine Mühe machst
Carsten

Nochmal als Beispiel.
Teilnehmer Mappe ist geöffnet und Lehrgang beendet. Also Rechnung schreiben. Alle Daten stehen in der Teilnehmermappe ganz detailliert.
Jetzt Mappe Rechnung(Pfad(C:\Users\Desktop\Rechnung.xlsm) öffnen und die Summen die in den Zellen S20, S23 usw durchgehen und wo eine Summe drinsteht in die erste freie Zelle der Rechnung kopieren in Verbindung mit den festen Oberbegriffen. Die Oberbegriffe (Lehrmittel usw) ab Zelle B14 (Rechnung) und die Summe ab Zelle E14 (Rechnung). Das ist das was ich gerne hätte.
 
Hallo Carsten,

nach dem derzeitigen Stand deiner Beschreibungen würde ich sagen, dass ein Autofilter in der Teilnehmertabelle die einfachste Lösung wäre.

Und wie CN8 schon anmerkte, ist Excel für so etwas nicht wirklich professionell. Eine Datenbank könnte da wesentlich mehr leisten.

Und ach ja, ich werde nie verstehe, warum so viele Frager immer und immer wieder die Vorstellungskraft der potenziellen Helfer derart herausfordern, eine (anonymisierte) Mustertabelle wäre wesentlich effektiver.
 
Danke dir Günther und CN8. Ich gebe euch Recht das es mit einer Mustertabelle einfacher ist. Sorry das ich das nicht gemacht habe. Dachte ich hätte es gut erklärt. Wir können dieses Problem aber jetzt beenden da es beseitigt ist. Nur für die die es interessiert stelle ich die Lösung ein.

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\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

Ich verspreche mich zu bessern
Carsten
 
Zurück
Oben