Wątek przeniesiony 2021-09-16 09:58 z Inne języki programowania przez cerrato.

Jak przechwycić wbudowaną funkcję Worda 2010?

0

Na początek fragment dokumentacji:
http://msdn.microsoft.com/en-us/library/office/aa140279(v=office.10).aspx#odc_replacebuiltinroutines

One way we can alter Word's behavior is by creating macros to run in place of Word's built-in routines. For example, Word has a built-in routine called FilePrint that runs when a user chooses the File menu and then selects Print. If we create a macro called FilePrint, Word runs our macro instead of the built-in routine. (To see a list of built-in routines that can be overridden with like-named macros, on the Tools menu, point to Macro, and then click Macros. On the Macros dialog box set the Macros in: list to Word commands.)

W celach testowych przygotujmy sobie takie oto makro:

Public Sub FileClose()
     MsgBox "FileClose"
End Sub

Zgodnie z teorią, po zaimplementowaniu takiego makra np. w szablonie normal.dot, wybranie Plik -> Zamknij powinno zaskutkować pojawieniem się message boxa i nie zamknięciem się dokumentu. Skutecznie przechwyciliśmy event Worda, przejmując kontrolę nad tym, czy zostanie zamknięty, czy też nie.
Pod Wordem 2003 działa bez problemów.

Identyczne makro pod Wordem 2010 nie działa wcale. Message box się nie pokazuje, dokument się zamyka po swojemu. Próbowałam również DocClose i FileExit, również bez rezultatu.

Czy ma ktoś może pojęcie, co też znowu Microsoft koniecznie musiał zmienić, żeby deweloperom życie utrudnić...?

0

U mnie działa.

0

No to jest już fascynujące :)
Mam co najmniej 5 komputerów, na których nie działa i ani jeden mi się nie trafił taki, żeby działało. Ale nie takie rzeczy się widziało od Microsoftu, więc pozwolę sobie dopytać:

  • czy twa wersja Office to na pewno 2010? (nie 2007)
  • czy masz wersję Office x86 czy x64?
  • jaki to system operacyjny?

Może różnice nakierują mnie na przyczynę...

0

Sprawdziłem i u mnie też działa.
Mam Office 2010 32bit , Windows 7 32 bit.

0

Office x86 (2010, proszę, nie rób ze mnie idioty :P). Windows 7 x64.

0

W zasadzie chyba porzucam nadzieję na to, że kiedykolwiek to zrozumiem... Prawdopodobnie zastosuję event aplikacji DocumentBeforeClose (o ile z tym nie będzie jajec).
Tak tylko w ramach "sanity-check" - czy u kogokolwiek z was udało się odtworzyć błąd? Będę wdzięczna za informacje.

0

Office 2010, Windows 7 x86, działa.

1

Nadszedł czas dopisać smutną puentę... Brzmi ona: kiedy naprawdę nie rozumiesz, co się dzieje, prawdopodobnie TO TY popełniłeś bardzo głupi błąd, a nie program.

Oto menu Worda 2010:
user image

Jak myślicie, co też głupi aurel uparcie klikał? Faktycznie przycisk "Zamknij", czy raczej ten opatrzony czerwonym krzyżykiem....? -_-'

Także tym razem muszę odszczekać me psioczenie na Microsoft. Tzw. mały krzyżyk można przywrócić w opcjach Worda, wtedy działa tak jak stary mały krzyżyk z Worda 2003. Duży krzyżyk natomiast działa dokładnie tak jak duży krzyżyk w Word 2003, czyli jest nieprzechwytywalny tym sposobem.

Btw, ikonka przy "Zamknij" jest anty UX -_-'

1 użytkowników online, w tym zalogowanych: 0, gości: 1