Registriert seit: 03.05.2019
Version(en): Office 2013
Hallo zusammen, ich habe mir ein Account erstellt um euren Rat zu meinem Problem anzuhören. Ich bin seit Längerem an einem Excel-Projekt beschäftigt, welches ein Excelformat (Kalkulation einer anderen Abteilung) automatisch überträgt auf eine andere (für uns notwendige) Vorlage. Die Kalkulation kann aus verschiedenen Tabellen innerhalb einer Datei bestehen, muss es aber nicht. Ich habe es mithilfe von verschiedensten Funktionen und Übersetzungstabellen hingekriegt, dass bei der Übernahme dieser Kalkulationstabellen die Übertragung in unsere Vorlage stattfindet. Allerdings muss aktuell jede Tabelle der Kalkulationsdatei händisch per copy paste in meine Vorlage eingefügt werden. Jetzt zu meinem Problem: Ich habe gehört, dass es möglich ist diesen Schritt per VBA über einen Button erfolgen zu lassen. Allerdings reichen meine Kenntnisse ich bis jetzt nur so weit, dass ich herausgefunden habe wo ich draufklicken muss um ein Makro (Modul?) zu schreiben :18: . Sollte ich mich eurer Meinung nach in die VBA Geschichte einlesen oder meint ihr mein Vorhaben ist zu kompliziert, als dass es sich für ein Befehl lohnt sich den Kopf darüber kaputt zu machen? Perfekt wäre es natürlich, wenn einer aus dem Forum so versiert ist und mir dabei hilft einen geeigneten Makro zu schreiben. Vielen lieben Dank für eure Antworten!!
Registriert seit: 25.01.2018
Version(en): 2013
03.05.2019, 12:05
(Dieser Beitrag wurde zuletzt bearbeitet: 03.05.2019, 12:06 von elamigo.)
schau dir mal die Makro recorder an, ansonsten kannst du den Code hier nehmen. Code: Sub kopieren ()
Range("XXX").SpecialCells(xlCellTypeVisible).Copy 'X die Zellen anpassen welche du kopieren willst (hier gibt es mehrer "Arten" zu kopieren, nimm das welches du brauchst (https://docs.microsoft.com/de-de/office/vba/api/excel.range.specialcells) Workbooks.Open Filename:="XX" 'XX Den Pfad der Datei/Vorlage in welche kopiert werden soll Worksheets("XXX").Select 'XXX das Tabellenblatt auswählen in welches kopiert werden soll Range("XXXX").Select 'XXXX Zelle auswählen in welche kopiert werden soll z.B. "A2" ActiveSheet.Paste
End Sub
dann über die Entwicklertools ein Commandbutton einfügen und das Makro darauf laufen lassen.
Folgende(r) 1 Nutzer sagt Danke an elamigo für diesen Beitrag:1 Nutzer sagt Danke an elamigo für diesen Beitrag 28
• Ilyas55
Registriert seit: 27.12.2018
Version(en): 2003,2010
Hallo Ilyas,
dein Vorhaben scheint relativ trivial zu sein, ich beobachte häufig Anfragen zu dem Thema "Kopiere Daten von A nach B".
Nehmen wir mal an, dir programmiert jemand eine Lösung, die du wahrscheinlich nicht verstehst (oder hast du den Code von elamingo verstanden?), wie gehst du dann damit um wenn sich was ändern soll/muss? Wieder im Forum nachfragen??
Wenn von deiner Seite keine Bereitschaft vorhanden ist, dich von null an in das Thema einzuarbeiten (und mehr oder weniger Zeit zu investieren), dann lass die Finger davon. Sonst bist du immer von externer Hilfe abhängig. Du hast eine funktionierende (wenn auch unbequeme) Lösung.
vg, MM
Folgende(r) 2 Nutzer sagen Danke an mmat für diesen Beitrag:2 Nutzer sagen Danke an mmat für diesen Beitrag 28
• elamigo, Ilyas55
Registriert seit: 25.01.2018
Version(en): 2013
da stimme ich mmat zu, wenn du wirklich keine Bereitschaft an den Tag legst, dich damit zu befassen, dann muss du ohne VBA weiter machen.
Folgende(r) 1 Nutzer sagt Danke an elamigo für diesen Beitrag:1 Nutzer sagt Danke an elamigo für diesen Beitrag 28
• Ilyas55
Registriert seit: 03.05.2019
Version(en): Office 2013
03.05.2019, 13:33
(Dieser Beitrag wurde zuletzt bearbeitet: 03.05.2019, 13:46 von Ilyas55.)
Vielen vielen Dank!
Ich werde mich am Montag mit deinem Vorschlag beschäftigen. Ich habe ganz nebenbei auch was von einem Makro Recorder gehört. Soweit ich das verstanden ist das eine Funktion, welches meine Schritte, die ich in Excel vornehme, aufzeichnet und in einem Befehl speichert. Diesen Befehl immer wieder ausführen lassen. Mein Problem ist allerdings, dass sich die Anzahl der zu kopierenden Tabellen ständig ändert. Ich sehe in deinem Code, dass die Range innerhalb eines Worksheets kopiert wird. Gibt es auch eine Möglichkeit zu sagen: wenn Worksheet 1 in Workbook X vorhanden (vorlage, die ich kopieren möchte); dann range (ab) in worksheet 1 von workbook Y übertragen und wenn worksheet 2 in Workbook X vorhanden (vorlage, die ich kopieren möchte); dann range (ab) in worksheet 2 von workbook Y übertragen
usw. bis maximal 10 Tabellen, die eingefügt werden können.
So würde ich theoretisch alles abdecken. Funktioniert das bei VBA?
LG
Danke auch für deine Antwort!
Ich möchte mich so weit damit beschäftigen, dass mein Problem gelöst werden. Die Funktion, die mir vorgeschlagen wird versuche ich natürlich zu durchschauen um gegebenenfalls Änderungen vorzunehmen. Der Code von elamingo erscheint mir recht simpel. (Auch wenn ich die Syntax nicht verstehe) Ich habe mal ein wenig reingeschnuppert und habe festgestellt, dass das ein Riesenthema ist, was man im übrigen sogar studieren kann :46: Die Frage ist bloß: Was davon brauche ich und wie viel Aufwand wird benötigt um zu dem Punkt zu kommen diese Übertragungsgeschichte selber vorzunehmen.
LG
Registriert seit: 11.04.2014
Version(en): Office 365
Hallo Ilyas,
aus meiner Sicht eignet sich der Makrorekorder nur sehr bedingt zum lernen von VBA. Der Rekorder erstellt so etwas wie eine Logdatei, in der alle Tastendrücke gespeichert werden. Das hat mit programmieren nichts zu tun.
Viele Grüße Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
Registriert seit: 03.05.2019
Version(en): Office 2013
Danke Klaus Dieter,
so ähnlich habe ich mir das auch vorgestellt. Im Grunde wäre mir das sogar egal, wenn sich dadurch mein Problem löst. Aber wie vorhin beschrieben kann ich mit dem Rekorder nur einen spezifischen Fall abdecken und das reicht mir nicht.
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
03.05.2019, 15:39
(Dieser Beitrag wurde zuletzt bearbeitet: 03.05.2019, 15:39 von Käpt'n Blaubär.)
Hallo, Zitat:Aber wie vorhin beschrieben kann ich mit dem Rekorder nur einen spezifischen Fall abdecken und das reicht mir nicht. ... was Du aber machen kannst, ist, den von Dir aufgezeichneten Code hier vorzustellen. Das Anpassen des Codes an Deine Wünsche wäre dann ein nächster Schritt. Im Übrigen, es ist uns allen bekannt, daß der vom Recorder gelieferte Code ziemlich holperig daherkommt und der Anpassung bedarf.
Registriert seit: 27.12.2018
Version(en): 2003,2010
Meine abschließende MEINUNG .
Lass die Finger davon. Einen Minimalansatz gibt's nicht. Es gib immer ein neues Problem, von dem du heute noch nicht weißt, das es existiert. Ohne halbwegs fundierte Grundkenntnisse mit Code rumbasteln der im professionellen Umfeld eingesetzt wird, ist sicher nicht der Weisheit letzter Schluss.
Und ja, programmieren lernen ist aufwändig. Es setzt auch eine gewisse Bereitschaft voraus, sich mit Problemen auseinanderzusetzen, die man gar nicht hat, einfach nur um des Lernens willen.
Ansonsten gibt's im Internet sicher irgendwo einen Einführungslehrgang ... Sich damit weitestgehend selbstständig zu beschäftigen, sehe ich auch als Voraussetzung an.
vg, MM
Folgende(r) 1 Nutzer sagt Danke an mmat für diesen Beitrag:1 Nutzer sagt Danke an mmat für diesen Beitrag 28
• Ilyas55
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
03.05.2019, 16:14
(Dieser Beitrag wurde zuletzt bearbeitet: 03.05.2019, 16:15 von Käpt'n Blaubär.)
Hallo MM, Zitat:Und ja, programmieren lernen ist aufwändig. Es setzt auch eine gewisse Bereitschaft voraus, sich mit Problemen auseinanderzusetzen, die man gar nicht hat, einfach nur um des Lernens willen. das sich mit der Materie beschäftigen hatte ich als zwingend vorausgesetzt. Ist das vom TE nicht gewünscht, stimme ich Dir vollumfänglich zu. Dafür gibt es dann letztendlich Dienstleister.
|