Datensatz aus Excel in andere Exceldatei übertragen und speichern

M--G

Lieutenant
Dabei seit
Dez. 2006
Beiträge
706
Hallo zusammen,

nachdem die ersten paar Versuche gescheitert sind, hat mich zumindest einer der Befehle zu einer guten Microsoftwebsite und Codeschnipsel geführt.
Workbooks. Open-Methode (Excel) | Microsoft Docs

Kurz aber was ich machen möchte.
Ich habe eine Exceldatei, welche als Eingabeformular und Druckformular dient und eine weitere Exceldatei als Datenbank.

Ich möchte nun, dass meine im Eingabeformular (Wochenplan.xlsm) anhand eines Datums via Commandbutton in der Datenbank (Datenbank.xlsx)

- Spalte A der Datenbank.xlsx von oben nach unten durchsucht wird und die Zeilen mit den entsprechenden Treffer teilweise in Zielzellen des Eingabeformulars Wochenplan.xlsm kopiert wird.
(Forschleifen sollte weniger das Problem für werden)
- mit einem anderen Commandbutton die Daten aus dem Wochenplan.xlsm (ich hoffe mal, dass ich mit For-Schleifen und Ifs die entsprechende Position in der Datenbank finde ggf neue Zeilen einfügen oder löschen kann und keine Hilfe dafür benötige) in die Datenbank.xlsx eintrage (Muss dafür die DatenbankDatei geöffnet, (Daten übertragen, Datei gespeichert) und geschlossen werden?)

Mit dem Codeschnipsel bekomme ich zumindest schonmal das Kopieren von einem Tabellenblatt der Datenbank hin.
Auch die Eingabe des Pfads, Namens und sogar Tabs mag ich.

Bloß stehe ich nun an, mit welchen Befehlen ich einzelne Zellen rauskopieren und auch reinkopieren und speichern kann.
Idealerweise ist die Datenbank nicht oder nur kurz offen, da an bis zu drei Stellen/von drei Personen Daten ein- und ausgelesen werden in der Datenbank (unterschiedliche und teils gleiche Bereiche der Datenbank).

Vielen vielen herzlichen Dank für weitere Codeschnipsel/Hilfe.
Bleibt gesund und bis später :) :) :) :)

Private Sub CommandButton1_Click()

'Equivalent der Spalten/Buchstaben zu den Nummern
'A1,B2,C3,D4,E5,F6,G7,H8,I9,J10,K11,L12,M13,N14,O15,P16,Q17,R18,S19,T20,U21,V22,W23,X24,Y25,Z26


' This macro will import a file into this workbook
Sheets("Tabelle1").Select
PathName = Range("D3").Value
Filename = Range("D4").Value
TabName = Range("D5").Value
ControlFile = ActiveWorkbook.Name
Workbooks.Open Filename:=PathName & Filename
ActiveSheet.Name = TabName
Sheets(TabName).Copy After:=Workbooks(ControlFile).Sheets(1)
Windows(Filename).Activate
ActiveWorkbook.Close SaveChanges:=False
Windows(ControlFile).Activate



End Sub
 

Cordesh

Lt. Commander
Dabei seit
Feb. 2011
Beiträge
1.528
Ich habe vor Jahren auch mal ein Projekt so angefangen, bis ich merkte, dass Excel einfach keine Datenbank ist wie tRITON richtig schreibt.
Bin dann zu Access gewechselt und konnte mein Projekt erfolgreich beenden.
 

Janush

Lieutenant
Dabei seit
Mai 2008
Beiträge
513
Ach was. Sowas kann man durchaus gut mit Excel machen. Kommt halt nur drauf an wie viele Leute gleichzeitig auf die Datenbank zugreifen sollen und wie komplex die Datenbankstruktur ist. Der Makro-Rekorder wird dich dabei aber nicht wirklich weit bringen.

Man kann über einen Connection string von Excel aus auf eine Datenbank deiner Wahl zugreifen und das könnte auch ein anderes Excel sheet sein. Du schreibst, dass du eh schon viel in VBA machen musstest...wie weit kennst du dich aus?

Das Gute an Excel ist halt, dass es jeder im Büro benutzt und kennt. Meistens ist es eh den ganzen Tag offen. Wenn du dem einfachen Angestellten mit Access kommst, haben die meistens schon keinen Bock mehr sich das überhaupt anzuschauen, denn "damit haben wir ja noch nie gearbeitet". Zumindest war es bei uns immer so.
 

Cordesh

Lt. Commander
Dabei seit
Feb. 2011
Beiträge
1.528
Das Gute an Excel ist halt, dass es jeder im Büro benutzt und kennt. Meistens ist es eh den ganzen Tag offen. Wenn du dem einfachen Angestellten mit Access kommst, haben die meistens schon keinen Bock mehr sich das überhaupt anzuschauen, denn "damit haben wir ja noch nie gearbeitet". Zumindest war es bei uns immer so.
Meine Anwender bekamen gar nichts von Access mit, sie bekamen von mir eine fertige Anwendung mit Masken, Formularen und Menüs.
Die meisten wussten gar nicht, dass da Access hinter steht.

Das Problem bei Excel als "Datenbank" ist der gleichzeitige Zugriff auf Dateien/Daten.
Das lässt sich eben nur mit einer echten Datenbank lösen.
 

M--G

Lieutenant
Ersteller dieses Themas
Dabei seit
Dez. 2006
Beiträge
706
Hallo zusammen,
danke für die vielen Inputs :)
gleichzeitiger Zugriff wird eher kein Problem, da ein Nutzer vielleicht alle 1,5 h einmal Daten einliest und speichert und der Hauptnutzer mit seinem Formular auch nicht häufiger Daten ablegt/einliest.

Bin in VBA nicht mehr so fit wie in C++, allerdings sind viele Dinge auch einfacher.
Kurzum, ich hoffe mit ein paar Stupsern in die Richtung und den richtigen Codeschnipseln die restlichen Herausforderungen selbst bewältigen zu können.

Spannend wird es dann noch beim Daten inkl. Zeilen einfügen und löschen.
Da liegt es aber eher an mir eine clevere Struktur und Abfrage mir zu überlegen hoff

Danke für kommende Codeschnipselvorschläge :) :) :)
 

tRITON

Lieutenant
Dabei seit
Mai 2010
Beiträge
917
Du kannst C++? Super, dann sagt die ja FileAccess und Concurrend File Access Violations etwas? Und du kennst das und kannst das in C++ im Schlaf schreiben für z.B CSV-Dateien? Prima! Dann hast Du ja das Rezept. Du weißt, wie die Fehlerbehandlung in VBA funktioniert und hast schon Userdialoge in VBA geschrieben?

Das musst Du nun "nur noch" umsetzten in VBA. Dazu gibt es hervorragende Dokus bei Microsoft und im Internet.

So weit so gut. Dann frage ich mich, warum du aber schon mit dem öffnen der Datei Probleme hast, das meine ich nicht böse. Meinst Du nicht, der Rat, der Dir hier gegeben wird evtl. ein anderes Produkt von MS zu verwenden wäre nicht besser? Wenn du mit den Basics nicht klar kommst?

Du brauchst keine Hilfe, sondern eine Lösung.

Es gibt seit O365 so viele Optionen, das was du möchtest mit MS umzusetzen und du suchst Dir halt die 1990er Methode aus. Aber da Du ja C++ kannst fühlst Du dich da sicher mehr zu Hause, als in dem Modernen kram (geht mir jedenfalls immer so :) )

Ich sage nur Sharepoint Listen um eine Option, neben dem Access zu nennen.

Am Ende bleibt eines übrig: Excel ist keine Datenbank. Warum sage ich das? Rate mal, wie oft Benutzer schon angerannt kamen, weil ihre "Excel Datenbank" mit einem halben Jahr Arbeit kaputt war? Jemand halt halt "irgendwann" mal ein Kopie Paste in die Datei gemacht und das ganze wurde dann brav immer weiter gesichert. Nur halt eben falsch, bis es kein Original mehr gab.
 

M--G

Lieutenant
Ersteller dieses Themas
Dabei seit
Dez. 2006
Beiträge
706
Ja mir ist die Basics gehen nach 10 Jahren C++ und 20 Jahren VBA auch flöten ;D
Excel bin ich altmodisch, allein schon wegen Pivot für anschließende Datenauswertungssauereien.

Ich wurschtel mich solange mal mit den Such und Kopieralgorythmen durch, da brauche ich schon lang genug, bis das im Prinzip funktioniert und hoffe immernoch dort autonom durchzukommen ;)

Danke für etwaige Hinweise zum Befehlssatz den ich suche :)
 

Cordesh

Lt. Commander
Dabei seit
Feb. 2011
Beiträge
1.528
Ich bin da schon lange raus, aber mir half bei früheren Excel-Sachen immer der Excel Herber...
Das ist sozusagen der Godfatherofgrandfatherofmaster... von Excel. :D
https://www.herber.de/
 

Janush

Lieutenant
Dabei seit
Mai 2008
Beiträge
513
Um wieviele Datensätze handelt es sich eigentlich und was ist dein Primärschlüssel? Das Datum? Wenn ja in welcher Form legst du dieses Datum ab? Großartige Suchalgorythmen brauchst du da eigentlich nicht, nur eine stabile Funktion welche nicht gleich den Debugger auslöst wenn ein kleiner Fehler auftritt.

Wo wird die "Datenbank" abgelegt und hat dann jeder der darauf zugreift seine eigene Exceldatei?

Ein bisschen mehr Input könnte es schon sein. Dei Code-Beispiel oben sagt nichts aus. Wenn du das ganze Tool so zusammenklickst, hilft dir keine Datenbank der Welt.
 

M--G

Lieutenant
Ersteller dieses Themas
Dabei seit
Dez. 2006
Beiträge
706
Das Datum ist zwar ein Kriterium, jeder Datensatz hat aber eine eindeutige Nummer, über die die Identifikation läuft.
Die Datenbank liegt auf einem Netzwerklaufwerk, mit besagten Codeschnipsel kann ich immerhin schonmal vom lokalen Rechner auf die Datei dort zugreifen.

Ja jeder hat seine eigene Datei, mit der ein spezieller Teil des Datensatzes ausgefüllt wird.

Danke :) werde auch auf erneut der Seite von Herrn (godfather......) Heber tiefer stöbern ;) solange alles in einer Datei vorbereiten, so dass dann nur noch das "Auskoppeln" auf mehrere Dateien fehlt. Sonst läufts bisher recht rund, für meine Kenntnisse.

p.s. mir gefällt der Schnipsel oben (1. Post) mehr und mehr.
Wenn man die Datenbankmappe in die aktuelle Excel einfügt und mit der dort die Einträge vornimmt.
Fehlt "nur" noch die Mappe in der Datenbank wieder zu ersetzen.
 
Zuletzt bearbeitet:
Top