Autor
|
Thema: Speichern mit Makro (2042 mal gelesen)
|
h-ruedi Mitglied
Beiträge: 21 Registriert: 23.01.2005
|
erstellt am: 11. Aug. 2005 21:29 <-- editieren / zitieren --> Unities abgeben:
Hallo, Excel Spezialisten Kann mir jemand weiterhelfen, ich möchte aus zwei Zelleninhalten einen Wert erhalten in einer dritten Zelle. Gibt es dafür eine Formel? Damit nicht genug, ich möchte diesen Wert anschließend mit Hilfe eines Makros über Speichern unter als neue Datei abspeichern. Meine Versuche sind insofern gescheitert, dass ich den Zelleninhalt markieren musste, dann kopieren! (dies macht leider einen Absoluten Wert) um dann im Feld für Dateinamen mit Ctrl v den Wert einzufügen. Aber Leider Sieht das Makro dies als absoluten Wert und nicht als Variablen Wert an. Wie Löse ich dieses Problem? Laufnr. Name sollwert 050127 Hans Meier Hans Meier 050127 Range("C2").Select ActiveCell.FormulaR1C1 = "Hans Meier 050127" Range("C3").Select ChDir "C:\Dokumente und Einstellungen\xx\Eigene Dateien\Excel" ActiveWorkbook.SaveAs Filename:= _ "C:\Dokumente und Einstellungen\xx\Eigene Dateien\Excel\Hans Meier 050127.xls" _ , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _ ReadOnlyRecommended:=False, CreateBackup:=False End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd P Ehrenmitglied V.I.P. h.c. cook-general
Beiträge: 3358 Registriert: 07.06.2001 W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365
|
erstellt am: 12. Aug. 2005 09:01 <-- editieren / zitieren --> Unities abgeben: Nur für h-ruedi
Servus zwei Zelleninhalten einen Wert erhalten Was für einen Wert +-*/ oder was "gröberes"? Aber Leider Sieht das Makro dies als absoluten Wert und nicht als Variablen Wert an. Er mach aus einer Formel einen Wert? Sie dir die Möglichkeit "Inhalteeinfügen" dort gibts einen Punkt (rechts unten) Verküpfen. ------------------ "Warum Einfach es geht auch kompliziert". Schöne Grüsse aus der Steiermark Bernd P. Bitte Supportangaben eintragen, warum siehst du hier Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 12. Aug. 2005 12:20 <-- editieren / zitieren --> Unities abgeben: Nur für h-ruedi
in C1 steht 50127 in C2 steht Hans Maier in C3 willste das haben =VERKETTEN(B3;" ";A3) und das makro: Code: Sub sichereals() newfilename = Range("C3").Value 'wert aus c3 holen ChDir "C:\Dokumente und Einstellungen\xx\Eigene Dateien\Excel" ActiveWorkbook.SaveCopyAs Filename:= _ "C:\Dokumente und Einstellungen\xx\Eigene Dateien\Excel\" & newfilename & ".xls" End Sub
[Diese Nachricht wurde von Thomas Harmening am 12. Aug. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
h-ruedi Mitglied
Beiträge: 21 Registriert: 23.01.2005
|
erstellt am: 12. Aug. 2005 21:59 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas Funktioniert perfekt vielen Dank. Eine Frage hätte ich jedoch noch, muss man dieses Makro schreiben oder ist es möglich mit dem Makro-Recorder auf dieses Ergebnis zu kommen. Wenn JA WIE? Wie ergeben sich die Befehle newfilename / .Value 'wert aus c3 holen / " & newfilename & ".xls"! Gruss Ruedi
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 13. Aug. 2005 02:39 <-- editieren / zitieren --> Unities abgeben: Nur für h-ruedi
Hallo, > muss man dieses Makro schreiben oder ist es möglich > mit dem Makro-Recorder auf dieses Ergebnis zu kommen Du kannst es natürlich abtippsen oder copypaste machen;-) General ist es so, der Recorder zeichnet nix auf was mit zB ChangeDir [ChDir] oder MakeDir[MkDir] zu tun hat, also du kannst in Excel mit dem Recorder nicht aufzeichnen, wenn du mal ein Verzeichniss wechselst oder ein neues erstellst. Dasselbe gilt natürlich für variablen, geh' immer davon aus - der recorder ist 'doof' ;;-)) Naja, oder anders, der ist nicht doof - der kann nur in 'seinem' Rahmen agieren/aufzeichnen. newfilename ist also in Thomas' Beispiel kein Befehl, sondern einfach eine Variablendeklaration, die hat Thomas festgelegt - nicht der Recorder. Dieser Variablen NewFileName weist er dann den Wert der Zelle 'C3' zu. Schlag' dir aus dem Kopf Variablen aufzeichnen zu können,das geht ganz einfach nicht, was gehen könnte, wenns nur immer C3 ist wäre ohne Variable:
Code:
ActiveWorkbook.SaveCopyAs Filename:= _ "C:\Dokumente und Einstellungen\xx\Eigene Dateien\Excel\" & [c3].value & ".xls"
Aber 'aufzeichnen' kannst Du auch das IMHO nicht, da sind dem Recorder einfach Grenzen gesetzt, wär ja sonst auch viel zu einfach & stinklangweilig;-) Gruss Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 13. Aug. 2005 13:31 <-- editieren / zitieren --> Unities abgeben: Nur für h-ruedi
Jap, der Recorder zeichnet nur deine Aktionen auf und das auch nur im begrenzen Rahmen und mit viel 'beimüll'. Somit ist das Ergebnis im Recorder immer nur statisch - es dann dymamisch (in deinem Falle, speichern unter dem Wert aus C3) zu machen liegt dann wieder in den Fingern des ProggerS. Wobei ich oftmals dem Recorder benutze - im Ermangelung einer tieferen Kenntnis in VBA ;-) ;-) @Nancy, ohne recorder wäre es noch 'dööfer' ;-)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
h-ruedi Mitglied
Beiträge: 21 Registriert: 23.01.2005
|
erstellt am: 13. Aug. 2005 18:26 <-- editieren / zitieren --> Unities abgeben:
|
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 14. Aug. 2005 01:56 <-- editieren / zitieren --> Unities abgeben: Nur für h-ruedi
> Wenn ich das richtig verstanden habe, muss oder müsste ich mir Visual Basic aneignen ... Jein - ganz so wild ist das ganze nun eigentlich auch nicht;-) Wenns um 'Dynamik' geht, also wie in deinem Falle eben, reicht es zB die Verkettung der strings vberstanden zu haben und schon bastelt man sich fix einen eigenen String mit einer Variablen draus. Also ich sage mal so, wenn man die gröbsten Grundlagen der Programmierung, damit meine ich vor allem die Variablendeklaration & -übergabe [wobei die Sprache eher sekundär ist], also wenn man das begriffen hat, ist's eigentlich relativ easy, sich den Recordercode aufzuzeichnen und danach mit eigenen Variablen anzupassen. > ... um Flexibler und Umfangreicher Arbeiten zu können. Das ist nun die Frage, wie definierst man flexibel und umfangreich;-) Bei simplen Sachen, s.o. kommt man mit paar Grundkenntnissen schon relativ weit sich die eine oder andrere Sache fix anzupassen. Wenns aber richtig flexibel und richtig umfangreich werden soll und noch viele andere Faktoren, wie Performance, Interaktivität mit anderen Programmen etc. eine Rolle spielen, denke ich kommt man nicht umhin sich tiefer mit der Sprache auseinanderzusetzen. Für den 'Hausgebrauch' reicht es aber wiegesagt imho wenn man mal nur die paar Basics kennt, soo wilde isses nicht hier mal zB ein Tut-Link: http://www.ti5.tu-harburg.de/manual/vba5/httoc.htm Naja und Foren gibbets ja auch noch;-) @Thomas hast recht, ich nutze den Recorder auch oft um mir einzelne/kurze Aktionen aufzuzeichnen, und mir dann die betreffende Zeile die ich wissen wollte rauszupicken. Hab ja auch nicht den Objektkatalog und sämtliche Methoden und deren Parameter im Kopf;-) Aber mal völlig am Rande, ich finde zB die Hilfe/F1/Examples für Autocad/VBA um Längen besser beschrieben, als die von Excel/VBA, wobei halt Acad keinen Recorder hat - Excel aber schon. Vermutlich haben sich die 'Office-Leute' gesagt, wir stellen euch das Werkzeug 'Recorder' zur Verfügung und halten uns dann in der Doku knapp. Und die welche keinen Recorder haben, schrieben aber eine recht gute Hilfe. Naja - kommt ja aber unterm Strich - wie so oft - in etwa dasselbe raus, was dem einen seine Stärke ist des halt des anderen Schwäche;-) Gruss Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
h-ruedi Mitglied
Beiträge: 21 Registriert: 23.01.2005
|
erstellt am: 16. Aug. 2005 21:18 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas Als ich heute dein Makro in Betrieb nehmen wollte, bemerkte einen kleinen Unterschied zu dem was ich erreichen möchte. (dieses Detail ist mir beim ersten Test nicht aufgefallen). Mein Grundgedanke ist, dass ich mich wie durch Speichern unter aus einer Grunddatei eine Datei erzeuge in welcher ich mich nach dem Speicher Makrovorgang noch befinde (also die Grunddatei verlasse) Ich nehme an dieser Teil (" & newfilename & ".xls") des Makros müsste umbenannt werden, aber durch welchen Befehl ?? Gruss
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 16. Aug. 2005 21:36 <-- editieren / zitieren --> Unities abgeben: Nur für h-ruedi
Abend, versuch mal ein 'saveas' statt des 'savecopyas'. Ein SaveAs schliesst aber die aktuelle Datei, deswegen vorher nochmal speichern:
Code:
Sub sichereals() newfilename = Range("C3").Value 'wert aus c3 holen ChDir "C:\Dokumente und Einstellungen\xx\Eigene Dateien\Excel" with activeworkbook if not .saved then .save .saveas Filename:= "C:\Dokumente und Einstellungen\xx\Eigene Dateien\Excel\" & newfilename & ".xls" end with End Sub
HTH Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
h-ruedi Mitglied
Beiträge: 21 Registriert: 23.01.2005
|
erstellt am: 25. Aug. 2005 20:19 <-- editieren / zitieren --> Unities abgeben:
Salü Nancy Sorry das du auf mein Dankeschön so lange warten musstest. Aber bei uns hat es im Moment soviel Wasser und Berge die finden, dass sie nun genug Zeit am gleichen Fleck verbrachten. Leider vergessen sie bei Ihrem Wegzug, dass sie unsere Häuser Platt machen. Dies löst ziemlichen Stress aus. Zurück zum Makro, so wie unten Funktioniert es wie ich es brauche. Sub sichereals() newfilename = Range("C3").Value 'wert aus c3 holen ChDir "C:\Dokumente und Einstellungen\xx\Eigene Dateien\Excel" with activeworkbook .saveas Filename:= "C:\Dokumente und Einstellungen\xx\Eigene Dateien\Excel\" & newfilename & ".xls" end with End Sub Gruss auf ein andermal
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |