interspirit
Goto Top

VBA Excel: Sub FileSaveAs() - Überschreibt die Methode nicht

Hallo zusammen,

habe ein VBA-Projekt (Excel 2002 Deutsch) in dem ich die Methode

Sub FileSaveAs()
...
...
End Sub

einfüge, um zu bestimmen was passieren soll, wenn ich auf "Datei/Speichern unter" klicke. Hab schon sehr intensiv gegoogelt und irgendwie funktioniert das bei allen einwandfrei nur bei mir nicht.
Bei mir kommt weiterhin der ganz "normale" Speichern-Unter Dialog. Habe folgendes ausprobiert:

Sub FileSaveAs()
MsgBox "Test"
End Sub

Public Sub FileSaveAs()
MsgBox "Test"
End Sub

Hab auch schon "Sub DateiSpeichernUnter()" versucht, nichts geht. Er öffnet immer den Standard-Dialog.

Habe in dem Projekt ein Modul in dem ich diese Methode neu definiere...

Kann mir jemand helfen?

Vielen Dank im Voraus face-wink)

MFG
Tom

Content-Key: 53517

Url: https://administrator.de/contentid/53517

Ausgedruckt am: 29.03.2024 um 14:03 Uhr

Mitglied: Diskilla
Diskilla 08.03.2007 um 09:27:45 Uhr
Goto Top
Ähm.....
Vielleicht solltest du erklären was du ANSTATT des "normalen" Speichern unter Dialogs willst. Für mich sieht das nämlich so aus, dass du genau den aufrufst und sonst nix.
Gib doch ma bitte nen Tip face-wink
Mitglied: Interspirit
Interspirit 08.03.2007 um 09:39:07 Uhr
Goto Top
Hi du...
Danke für deine Antwort!

Nein, will einen Wert vorgeben, wie die zu speichernde Datei heißen soll

Sub FileSaveAs()

With Dialogs(wdDialogFileSaveAs)
.Name = "xxx.xls"
.Format = wdFormatDocument
.Show
End With

End Sub

Hilft dir das weiter?
Mitglied: Biber
Biber 08.03.2007 um 10:14:10 Uhr
Goto Top
Moin Interspirit,

tjy, so schonend wie möglich:
Obwohl VBA aus dem Hause des sympathischen Weltmarktführers höchstselbst kommt, ist es nicht so ganz richtig objektorientiert, klassen- und methodentauglich.

Das Geraffel, was dort hinterlegt werden kann, sind halt letzten Endes Funktionen und Prozeduren, wie man/frau das halt von einem BASIC-Enkel erwarten kann.

Als nix mit vererbten oder überschriebenen Methoden.
Vielleicht unter 512-Bit-Architektur mal.... aber jetzt nicht.

-->Konsequenz:
Entweder diese Function MyFileSaveAs() nenne und auch so aufrufen, oder, wenn sie denn auch nostalgischen oder ästhetischen Gründen FileSaveAs() heißen soll, dann beim Aufruf den Präfix "Modul1." (oder wo sie drin ist) voranstellen.

Gruss
Biber
Mitglied: Interspirit
Interspirit 08.03.2007 um 10:43:35 Uhr
Goto Top

-->Konsequenz:
Entweder diese Function MyFileSaveAs() nenne und auch so aufrufen, oder, wenn sie denn auch nostalgischen oder ästhetischen Gründen FileSaveAs() heißen soll, dann beim Aufruf den Präfix "Modul1." (oder wo sie drin ist) voranstellen.


Hallo,

danke für deine Antwort!

Du meinst quasi ich soll die Funktion FileSaveAs so aufrufen?

Modul1.FileSaveAs() ??

Das Problem ist nur, ich rufe die Funktion gar nicht explizit auf. Sie wird ja automatisch ausgeführt sobald ich auf Speichern-Unter klicke...

Oder verstehe ich dich jetzt falsch?!
Mitglied: Biber
Biber 08.03.2007 um 10:51:34 Uhr
Goto Top
Nein, Du verstehst mich schon richtig.
Das Problem ist nur, ich rufe die Funktion gar nicht explizit auf
Dann ist es schwierig....

Dann wäre der (theoretische) Weg IMHO:
Um zu verhindern, dass die Funktion/"Methode" FileSaveAs() aus dem Modul "Visual Basic for Applications" als erstes, als Standard aufgerufen wird, müsste unter Extras->Verweise als allerallererstes ein Modul angegeben sein, das eine Function FileSaveAs() mit den gleichen Aufrufkonventionen enthält.

Ist zwar auch kein Hexenwerk, aber im Verhältnis doch so aufwändig, dass ich mir die Aufwand/Nutzen-Relation noch mal in Ruhe angucken würde.

[Ist aber nur mein Kenntnisstand - vielleicht geht es auch vieeeeeeeeeeel stressärmer. Weitere Kommentare abwarten.]

Gruss
Biber
Mitglied: Biber
Biber 08.03.2007 um 10:51:57 Uhr
Goto Top
--
Mitglied: Interspirit
Interspirit 08.03.2007 um 10:59:30 Uhr
Goto Top
Der Clou ist ja dass es die Funktion "FileSaveAs" schon gibt.
Diese wird aufgerufen wenn ich "Datei/'Speichern Unter" klicke. In dieser Funktion wird dann dieser Speichern-Dialog aufgerufen.

Wenn ich diese Funktion neu definiere (genau der Name wie es sie schon gibt) wird sie überschrieben und meine Funktion ausgeführt.

Nun ja, hab wie gesagt schon intensiv gegoogelt und es gibt haufenweise menschen die das so praktizieren. Bei mir funktionierts eben nicht.

Vielleicht hab ich die Funktion an falscher Stelle definiert?! (Das war mein erster Gedanke)
Weiß aber nicht wo ich das sonst definieren sollte... Hmmm
Menno face-sad
Mitglied: bastla
bastla 08.03.2007 um 14:38:49 Uhr
Goto Top
Hallo Interspirit!

Anscheinend hat das schon einmal jemand geschafft - siehe hier ...

Grüße
bastla
Mitglied: Biber
Biber 08.03.2007 um 15:12:38 Uhr
Goto Top
@bastla

Das ist allerdings viel einfacher, als ich befürchtet hatte.
Wieder was gelernt... face-wink

Gruss
Biber
Mitglied: bastla
bastla 08.03.2007 um 15:15:49 Uhr
Goto Top
@Biber

Ich kannte das bisher auch nur für Word ...

Grüße
bastla
Mitglied: Interspirit
Interspirit 09.03.2007 um 13:10:19 Uhr
Goto Top
Hallo Bastla,

vielen Dank für deinen Hinweis - werd das dann doch gleich mal testen!
Da hätt ich ewig in die falsche Richtung gesucht!

Merci nochmal face-wink)