forTeesSake Geschrieben 2. Oktober 2003 Geschrieben 2. Oktober 2003 hi, weiss dass man in vba eine eigene speicherroutine schreiben kann indem man einfach die funktion filesave bzw. filesaveas einbaut. nun möchte ich aber die word eigene speicherfunktion verwenden und darüberhinaus etwas einbauen. das ganze soll so ablaufen: speichern (word eigen) und danach ein logfile füllen. gibts da ne möglichkeit das zu realisieren?? Zitieren
Diablo999 Geschrieben 6. Oktober 2003 Geschrieben 6. Oktober 2003 Hier ne kleine Anregung: Dim WithEvents m_oSave As CommandBarButton Private Sub Document_New() Dim oCommandBar As CommandBar Dim oCmd As CommandBarButton Set oCommandBar = Application.CommandBars("Standard") For Each oCmd In oCommandBar.Controls If oCmd.ID = 3 Then Set m_oSave = oCmd Exit For End If Next oCmd End Sub Private Sub m_oSave_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean) 'Logfile schreiben Call SaveAs End Sub So in etwa gehts, ist aber nicht sehr sauber, halt nur n Hack!!! Gruß Diablo999 Zitieren
forTeesSake Geschrieben 7. Oktober 2003 Autor Geschrieben 7. Oktober 2003 goodness! danke. das ist echt geniale ware. spitzenbeitrag. ich bedanke mich untertänigst! danke, danke danke danke Zitieren
forTeesSake Geschrieben 7. Oktober 2003 Autor Geschrieben 7. Oktober 2003 jetzt gibts nur noch eine frage: wo stehen denn diese ids? und welche id hat "speichern unter". denn dafür muss es ja auch funktionieren. ich danke nochmals Zitieren
forTeesSake Geschrieben 7. Oktober 2003 Autor Geschrieben 7. Oktober 2003 ok 748 is die id für speichern unter... aber das grosse problem ist, dass wenn ich ein neues dokument erzeuge und über den o.g. code speichere ich beim speichern erstmal nicht gefragt werde unter was gespeichert werden soll, sondern es wird einfach zuerst automatisch gespeichert. erst danach kann ich den speicherort auswählen, aber das aktuelle dok. ist schon gespeichert.. bei nur speichern klappt alles gut.. noch ne ahnung? Zitieren
forTeesSake Geschrieben 7. Oktober 2003 Autor Geschrieben 7. Oktober 2003 nee, sorry nochmal: also wenn ich das richtig sehe werden zwar die speichern menüeinträge so modifiziert, dass gespeichert wird und danach noch was anderes passiert. die normale "speicherlogik" von word wird aber nicht berücksichtigt. es wird also immer einfach über "call filesave" gespeichert egal ob das dok. noch neu ist und erstmal ein pfad ausgewählt werden muss oder ob man über speichern unter... speichert... Zitieren
Diablo999 Geschrieben 7. Oktober 2003 Geschrieben 7. Oktober 2003 In dem Beispiel überlade ich ja nur den Speichernbutton, ds hast du ja soweit kapiert! Die Menüeinträge funktionieren so ähnlich, weiß ich etz net auswendig... Jedenfalls kannst du sowohl Save als auch SaveAs überladen, indem dazu die richtigen einträge findest, bei SaveAs musst du natürlich auch die passende Methode "SaveAs" vom Dok ausführen... Diablo999 Wenn du noch Fragen hast immer raus damit, hab aber heut keine Zeit mehr des ausführlicher zu schreiben... Zitieren
forTeesSake Geschrieben 8. Oktober 2003 Autor Geschrieben 8. Oktober 2003 so, vielen dank für deine mühe. hab nochmal nachgedacht und dann den unten stehenden code geschrieben. jetzt is es ok. der knackpunkt war das << if activedocument.path = "" >> im speichern modus. dann is das dokument nämlich neu. wenn nicht dann muss filesaveas ausgeführt werden. und die von mir angesprochene "windows-interne logik zum speichern" übernimmt ja dann der dialog. und neben dem speichern kann ich dann mein loggen einbauen... danke auf jeden fall! Sub FileSave() If ActiveDocument.Path = "" Then 'dok ist neu FileSaveAs Else ActiveDocument.Save End If End Sub Sub FileSaveAs() Dim retVal, retName ChangeFileOpenDirectory (glblStandardDocPfad) With Dialogs(wdDialogFileSaveAs) retVal = .Display retName = .name End With If retVal = -1 Then ActiveDocument.SaveAs (retName) End If Call writeExcelLog End Sub Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.