MS Word 365 - VBA i pole TextBox - błąd w programie?

Anonimowe
2022-07-14T10:09:07+00:00

Witam Wszystkich

Napotkałem pewien problem w MS Word 365 i zastanawiam się, czy nie jest to jakiś błąd w programie.

Otóż mam plik test.dotm, w którym zapisane jest makro VBA wstawiające treść z pliku. Wstawiany plik zawiera pole TextBox. Makro uruchamiane jest z przycisku CommandButton.

Selection.EndKey Unit:=wdStory

 Selection.InsertFile FileName:=Sciezka & "\Uwagi.docx", Range:="", \_  

     ConfirmConversions:=False, Link:=False, Attachment:=False 

Jeśli uruchomię szablon test.dotm, makro wstawia mi treść z pliku bez problemu, tylko jeśli próbuję odpalić ponownie makro z przycisku, ono się nie uruchamia. Jeśli nowoutworzony plik zapiszę, zamknę i uruchomię ponownie, makro działa. Ewentualnie jeśli wejdę w edytor VBA i użyję przycisku ,,stop'' (reset), makro wraca do życia.

Żeby było ciekawiej jeśli usunę z wstawianego pliku pole TextBox i uruchomię makro, wtedy odpala się każdorazowo kiedy użyję przycisku CommandButton. Żeby było jeszcze ciekawiej, to dodam, że jeśli ręcznie wstawię plik zawierający pole TextBox, makro przestaje działać. Nawet jeśli przeniosę dane na zasadzie kopiuj-wklej, również makro przestaje działać.

Może ktoś się już spotkał z takim zjawiskiem i wie jak to ominąć?

Pozdrawiam

Microsoft 365 i pakiet Office | Word | Do użytku domowego | Windows

Pytanie zablokowane. To pytanie zostało zmigrowane ze społeczności pomocy technicznej firmy Microsoft. Możesz zagłosować, czy pytanie jest pomocne, ale nie możesz dodawać komentarzy ani odpowiedzi, ani też śledzić pytania.

Komentarze: 0 Brak komentarzy

Odpowiedzi: 20

Sortuj według: Najbardziej pomocne
  1. Oskar Shon 49,336 Punkty reputacji Moderator wolontariuszy
    2022-07-18T18:05:40+00:00

    Wszystko jest jasne.

    W momencie odpalenia kodu, tworzy się nowy plik Dokument1, który już tego kodu nie ma po swojej stronie (jak widzisz jest "Test bez Userform" a pow. "Dokument1"):

    Po utworzeniu w pliku jaki się tworzy jest pusto.

    Jak kliknąłem w trybie projektowania to mam jedynie odwołanie do procedury jaką własnie utworzył oczywiście bez kodu (bo nie miał go skąd pobrać):

    Zatem jeśli i chcesz takie rzeczy realizować to, skopuj to do szybkich częsci, albo zbuduj sobie dodatek, kóry będzesz extra odpalał a jaki będzie ci klejał treść tego pliku "Uwagi" do jakiegokolwiek jakiego będziesz miał uruchomionego:

    Profesionalne dodatki buduje sie w Visual Studio w modeule VSTO.

    Pozdrawiam.

    Czy ta odpowiedź była pomocna?

    Komentarze: 0 Brak komentarzy
  2. Anonimowe
    2022-07-18T10:32:39+00:00

    Dziękuję za rzeczowe uwagi. Z pewnością się przydadzą.

    Kod wydaje się zapisany w odpowiednim miejscu.

    To znaczy że kod nie nagrałeś w pliku dokumentu, ale w repozytorium osobistym.

    Word domyślnie podczas nagrania wskazuje właśnie to źródło, a nie plik który się edytuje:

    Obraz

    Plik zip

    Może się uda.

    Nie mamy tego pliku, nie podlinkowałeś go, a jedynie drobny kod, który samotnie nie zadziała na jakimkolwiek czystym pliku.

    Zrobiłem i żadnych błędów nie zwróciło.

    Na końcu zawsze przeleć poleceniem menu/debug/compile

    Pozdrawiam serdecznie

    Czy ta odpowiedź była pomocna?

    Komentarze: 0 Brak komentarzy
  3. Oskar Shon 49,336 Punkty reputacji Moderator wolontariuszy
    2022-07-18T08:34:10+00:00

    Witam - dzięki za odpowiedź.

    No z tym uruchamianiem to też mam 3 światy. Byłem przekonany, że trzeba zapisać w docm i tak robiłem. Zapisywałem również w docx i też się makro odpalało (przynajmniej na moim kompie), co raczej nie powinno mieć miejsca.

    To znaczy że kod nie nagrałeś w pliku dokumentu, ale w repozytorium osobistym.

    Word domyślnie podczas nagrania wskazuje właśnie to źródło, a nie plik który się edytuje:

    Fakt, że jak uruchomię szablon to tworzony jest nowy plik. Zanim go zapiszę makro działa, ale tylko raz. Plik z polami TextBox jest zaimportowany i koniec. Drugi raz makro nie odpala. Wynikowy plik zapisuję w docm, zamykam go, uruchamiam ponownie. Po tej operacji makro odpala, ale ponownie tylko raz. Po zamknięciu pliku i ponownym otwarciu, makro działa, ale tylko raz. Jeśli z importowanego pliku usunę pola TextBox i zaimportuję plik bez tych pól, makro uruchamia się bez ograniczeń.

    Nie mamy tego pliku, nie podlinkowałeś go, a jedynie drobny kod, który samotnie nie zadziała na jakimkolwiek czystym pliku.

    Mam jakieś dziwne wrażenie, że makro nie może się zakończyć. Zamknięcie i ponowne otwarcie pliku powoduje jego zatrzymanie, co powoduje możliwość ponownego uruchomienia makra. Może to jest głupi wniosek, ale takie mam wrażenie.

    Pozdrawiam

    Dobrze jakbyś w developerze wymusił deklaracje zmiennych, abyś pisał/edytował kod sam a nie liczył tylko nagrywarkę.

    Na końcu zawsze przeleć poleceniem menu/debug/compile

    Pozdrawiam

    Czy ta odpowiedź była pomocna?

    Komentarze: 0 Brak komentarzy
  4. Anonimowe
    2022-07-18T08:16:47+00:00

    Witam - dzięki za odpowiedź.

    No z tym uruchamianiem to też mam 3 światy. Byłem przekonany, że trzeba zapisać w docm i tak robiłem. Zapisywałem również w docx i też się makro odpalało (przynajmniej na moim kompie), co raczej nie powinno mieć miejsca.

    Fakt, że jak uruchomię szablon to tworzony jest nowy plik. Zanim go zapiszę makro działa, ale tylko raz. Plik z polami TextBox jest zaimportowany i koniec. Drugi raz makro nie odpala. Wynikowy plik zapisuję w docm, zamykam go, uruchamiam ponownie. Po tej operacji makro odpala, ale ponownie tylko raz. Po zamknięciu pliku i ponownym otwarciu, makro działa, ale tylko raz. Jeśli z importowanego pliku usunę pola TextBox i zaimportuję plik bez tych pól, makro uruchamia się bez ograniczeń.

    Mam jakieś dziwne wrażenie, że makro nie może się zakończyć. Zamknięcie i ponowne otwarcie pliku powoduje jego zatrzymanie, co powoduje możliwość ponownego uruchomienia makra. Może to jest głupi wniosek, ale takie mam wrażenie.

    Pozdrawiam

    Czy ta odpowiedź była pomocna?

    Komentarze: 0 Brak komentarzy
  5. Oskar Shon 49,336 Punkty reputacji Moderator wolontariuszy
    2022-07-15T20:44:46+00:00

    Jeśli uruchomisz szablon z kodem, to tworzony jest na jego podstawie plik docx, jeśli go zapiszesz domyślnie o utracisz kod jaki w nim był zapisany.

    Zatem po zapisie może on nie zawierać kodu.

    Jeśli zapisze go jako docm to kod na tej kopii zadziała.

    Pozdrawiam.

    Czy ta odpowiedź była pomocna?

    Komentarze: 0 Brak komentarzy