Makro-richtige Zuordnung fehlt!
Hallo,ich brauch mal wieder Hilfe!!
Hab mir mit eurer Hilfe ein Makro zusammengebaut,
was auch gut und schnell arbeitet.(im Versuch)
Also
1 Schritt- Speichern OK
2 Schritt- Drucken OK
3 Schritt- Datenblock zusammenstellen und verschieben OK
jetzt kommt's -jetzt auf die Ursprungsmappe zurück den erstellten Datenblock löschen und C5 aktivieren.(neuen Eingabe beginnen)
Also wenn ich die Mappe gespeichert habe heißt sie nicht mehr
"Einzelteil". Wie kann das Makro also die oben gespeicherte Mappe finden.
Danke schon mal für euere Mühe
Schönen Abend
Gruß
Ulle
Sub DateiSpeicherDruckenGIVspeichern()
Dim verz, dname As String
verz = Cells(76, 5)
dname = Cells(75, 5) & ".xls"
ActiveWorkbook.SaveAs Filename:=("g:\" & verz & "\" & dname) ', FileFormat:=xlNormal
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Application.ScreenUpdating = False
ActiveSheet.Range("B57:J58").Copy 'Angebot
'Sheets("DATENSAMMLUNG").Select
Range("c65536").End(xlUp).Select
Cells(ActiveCell.Row + 3, ActiveCell.Column + 3).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("C65536").End(xlUp).Select
Cells(ActiveCell.Row + 3, ActiveCell.Column - 2) = ActiveSheet.Range("C6").Value
Range("C65536").End(xlUp).Select
Cells(ActiveCell.Row + 3, ActiveCell.Column - 1) = ActiveSheet.Range("C5").Value
Range("c65536").End(xlUp).Select
Cells(ActiveCell.Row + 3, ActiveCell.Column + 12) = ActiveSheet.Range("E60").Value
Range("C65536").End(xlUp).Select
Cells(ActiveCell.Row + 3, ActiveCell.Column + 2) = ActiveSheet.Range("E10").Value
Range("C65536").End(xlUp).Select
Cells(ActiveCell.Row + 3, ActiveCell.Column + 1) = ActiveSheet.Range("C10").Value
Range("c65536").End(xlUp).Select
Cells(ActiveCell.Row + 3, ActiveCell.Column + 0) = ActiveSheet.Range("G5").Value
Range("c65536").End(xlUp).Select
Cells(ActiveCell.Row + 1, ActiveCell.Column + 0) = ActiveSheet.Range("C45").Value
Range("c65536").End(xlUp).Select
Cells(ActiveCell.Row + 1, ActiveCell.Column + 0) = ActiveSheet.Range("C42").Value
Range("c65536").End(xlUp).Select
Cells(ActiveCell.Row + 1, ActiveCell.Column + 0) = ActiveSheet.Range("C43").Value
Range("C65536").End(xlUp).Select
Cells(ActiveCell.Row + 1, ActiveCell.Column + 0) = ActiveSheet.Range("C44").Value
ActiveSheet.Range("B30:B40").Copy
Range("C65536").End(xlUp).Select
Cells(ActiveCell.Row + 1, ActiveCell.Column + 0).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("C65536").End(xlUp).Select
Cells(ActiveCell.Row + 1, ActiveCell.Column + 0) = "."
Range("C65536").End(xlUp).Select
Sheets("Einzelteil").Select
Application.CutCopyMode = False
ActiveSheet.Range("A131:O145").Copy
Windows("Stammdaten.xls").Activate
Sheets("Datensammlung").Select
Range("C65536").End(xlUp).Select
Cells(ActiveCell.Row + 3, ActiveCell.Column - 2).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Windows("Einzelteil.xls").Activate
Sheets("Einzelteil").Select
Range("A131:O145").Select
Application.CutCopyMode = False
Selection.ClearContents
Application.CutCopyMode = False
Range("C5").Select
End Sub
Antwort schreiben
Antwort 1 von nighty vom 05.03.2021, 14:51 Options
hi ulle ^^
ThisWorkbook
ist die mappe woraus das makro gestartet worden ist
ein beispiel der syntax
ThisWorkbook.ActiveSheet.Range("B30:B40").Copy
und wenn es darum ginge den zuletzt gespeicherten dateinamen festzuhalten
dann halte den dateinamen mit einer variablen fest,auf der du spaeter zugreifen kannst
gruss nighty
Antwort 2 von Ulle-gt5 vom 05.03.2021, 20:34 Options
Hallo nighty,
das hast du schön gesagt und so habe ich es mir auch vorgestellt . Ich kann lesen und nachschlagen was ich will, ich begreife es erst wenn ich es mal gesehen habe.Das ganze VBA macht ja Sinn, wenn man es verstanden hat.
Könntest du mir an Hand meines Makros mal die Variable festlegen und zeigen wie man sie aufruft (die Variable oder Datei)
schon mal Danke
Gruß
Ulle
Antwort 3 von nighty vom 06.03.2021, 11:42 OptionsLösung
hi Ulle ^^
2 beispiele
gruss nighty
Sub Beisp0fuerEineDatei()
Dim SaveDaten As String 'zum anfang setzen
SaveDaten = "g:\" & verz & "\" & dname 'vor der zeile setzen wo gespeichert wird.SaveDaten beinhaltet nun den kommpletten pfad wie dateinamen
End Sub
Sub Beisp1fuerMehrereDateien()
ReDim SaveDaten(0) As String 'zum anfang setzen
Dim IndexZaehler As Integer 'zum anfang setzen
Dim Zaehler As Integer 'zum anfang setzen
SaveDaten(IndexZaehler) = "g:\" & verz & "\" & dname 'vor der zeile setzen wo gespeichert wird
IndexZaehler = IndexZaehler + 1 'nach der zeile setzen wo gespeichert wird
ReDim Preserve SaveDaten(IndexZaehler) 'redimensionierung eines eindimensionalen arrays,preserv damit nix verloren geht
'ein beispiel einer schleife um das array auszulesen
For Zaehler = 0 To UBound(SaveDaten(0)) 'beispiel einer schleife wie das array auszulesen waere,Ubound um das ende des array zu erfassen
Cells(Zaehler, 1) = SaveDaten(Zaehler) 'hier hab ich als beispiel cells als ausgabe gewaehlt,genauso koennte es eine abfrage sein etc.
Next Zaehler 'ende der schleife
End Sub
noch ergaenzend zu deinem code,versuche mal die selectionen zu minimieren soweit du kannst,spaeter bei mehr erfahrung kommplett verbannen
diese sind sehr zeitintensiv,aber nicht zwingend erforderlich :-)
Antwort 4 von Ulle-gt5 vom 06.03.2021, 17:59 Options
Hallo nighty,
erst mal danke für deine Antwort, ich habe noch nichts versucht!
Ich klaube nur wir machen es zu kompliziert, hier mal eine Erklärung.
Die Mappe Stammdaten mit Blatt Datensammlung ist immer geöffnet!!!!
Die Mappe Einzelteil mit Blatt Einzelteil wird geöffnet,ein Einzelteil wird kalkuliert und unter
verz = Cells(76, 5)
dname = Cells(75, 5) & ".xls"
ActiveWorkbook.SaveAs Filename:=("g:\" & verz & "\" & dname) ', FileFormat:=xlNormal
gespeichert.
Nun wird ein Datenblock erzeugt und auf Stammdaten/Datensammlung gespeichert.
Soweit funktioniert alles!!!!
Jetzt möchte ich in das offene aber nicht aktive Blatt mit dem Namen dname zurück und dort weiter arbeiten.
Also ich glaube man muß im Makro bei
Windows("Einzelteil.xls").Activate
Sheets("Einzelteil").Select
nur was anderes einsetzen, aufrufen oder so.
Ich hoffe ich habe es verständlich erklärt
viele Grüße
Ulle
Antwort 5 von fedjo vom 06.03.2021, 18:30 Options
Hallo Ulle,
versuch es mal mit den SedKeys:
SendKeys "%{TAB}"
Es wird die letzte aktive Seite angezeigt.
Gruß
fedjo
Zitat:
Windows("Einzelteil.xls").Activate
Sheets("Einzelteil").Select
Antwort 6 von Ulle-gt5 vom 06.03.2021, 20:58 Options
Hallo ihr ,
ist ja schön das mein Problem jetzt schon zwei beschäftigt.
Also Fedjo dein SendKeys "%{TAB}" funktioniert, ich sehe
das richtige Blatt aber es ist nicht Aktiv.
Alle weiteren Befehle werden ignoriert.
Hi nighty,
die Sache mit der Variablen ist ganz interesant. Ich hab nur noch nicht verstanden, wie ich die Variable wieder aufrufe.
gruß
Ulle
Antwort 7 von fedjo vom 07.03.2021, 14:37 Options
Hallo Ulle
Zitat:
verz = Cells(76, 5)
dname = Cells(75, 5) & ".xls"
ActiveWorkbook.SaveAs Filename:=("g:\" & verz & "\" & dname) ', FileFormat:=xlNormal
Ich gehe davon aus wenn du die Arbeitmappe speicherst, das der Dateiname aus Zelle E75 kommt.
Wenn die gespeicherte Datei aktiviert werden soll dann vielleicht so:
Sub Arbeitsmappe()
Dim strDateiname As String
strDateiname = Range("E75").Value & ".xls"
Windows(strDateiname).Activate
Sheets("Tabelle1").Activate
End Sub
Gruß
fedjo
Antwort 8 von Ulle-gt5 vom 07.03.2021, 15:28 Options
Hallo Fedjo,Hallo nighty,
ihr habt mein Problem beseitigt. Danke!!!!
Ich habe die Ganze Zeit die Lösung vor Augen und habe es nicht geschnallt.
Ich habe die ganze Zeit versucht was zu öffnen was es garnicht gab.
Das Tabellenblatt behält doch seinen Namen und ich wollte es
unter dem gespeicherten Namen öffnen.
Das sind so die Lapalien die einen tagelang aufhalten.
noch mal besten Dank euch beiden.
Ein schönes Wochenende wünsche ich euch.
gruß
Ulle