Wstawianie autotekstu (lub Quickpart) do programu Word (2013) na podstawie wartości logicznej z programu Access (2013)

0

Nigdzie w sieci nie znalazłem żadnych informacji na ten temat (przynajmniej takie, które działają - więcej o tym za chwilę).

To, co próbuję zrobić, to nacisnąć przycisk, który utworzyłem w formularzu dostępu, Word otworzy docx i zapełni go pewnymi akapitami rtf (w pewnych punktach) na podstawie kilku pól wyboru TRUE / FALSE w rekord obecnie otwarty w formularzu dostępu.

Kod dostępu, który działa w celu przekazywania wartości do dokumentu docx:

Funkcja OpenWord (conPath As String)

Dim Dimword As Word.Application

Dim doc As Word.Document

On Error Resume Next

Błąd. Wyczyść

Ustaw hasło = GetObject (, „word.application”)

Jeśli Err.Number & lt; & gt; 0 Następnie

Set appword = New Word.Application

appword.Visible = True

Zakończ jeśli

Set doc = appword.Documents.Open (conPath, True)

Z doc

.FormFields ("TextName"). Result = Me.Name

.FormFields („TextAnotherName”). Result = Me.AnotherName

.FormFields ("TextBoolean1"). Result = Me.Boolean1

.FormFields ("TextBoolean2"). Result = Me.Boolean2

.FormFields ("TextBoolean3"). Result = Me.Boolean3

Kończyć z

appword.ActiveWindow.View.Type = wdPrintView

appword.Visible = True

słowo. Aktywuj

Set doc = Nic

Ustaw hasło = nic

Powyższe działa świetnie do przekazywania nazw do dokumentu Word za pomocą Developer & gt; Legacy & gt; Pole formularza tekstowego. Wyświetlane są również wartości boolowskie (tj .: -1 dla TRUE i 0 dla FALSE). To, co próbuję zrobić, to coś w rodzaju:

IF {TextBoolean1} = "0" "{AUTOTEXT someparagraph}" ""

Ta sugestia internetowa nie działa.

Podsumowując: Co jest potrzebne, aby program Word 2013 wstawił predefiniowany akapit (blok autotekstu lub szybkiego wstawiania części) w predefiniowanym miejscu w dokumencie na podstawie wartości logicznej przekazanej z programu Access? (Jak to zrobić?)

Dziękuję ci za całą twoją życzliwą pomoc - to sprawiło, że przez tydzień nie mogłem się doczekać, próbując różnych bezowocnych dróg,

Stumped

Stumped
źródło

Odpowiedzi:

1

Po pierwsze myślę, że można uprościć wiele kodu w makrze, używając zamiast tego korespondencji seryjnej z bazy danych Access i uruchamiając ją za pomocą makra.

Kod pola dla pola IF, które się tutaj pojawia, powinien działać. Upewnij się, że kod został otoczony specjalnymi nawiasami, klikając CTRL + F9 a nie tylko zwykłe nawiasy.

Adam
źródło
Dzięki Adam. Właściwie zrobiłem to, co zasugerowałeś. W rzeczywistości problem polegał na tym, że podczas gdy Word „aktualizował” pola nazw po otwarciu docx,: IF {TextBoolean1} = "0" "{AUTOTEXT someparagraph}" "" Pole nie jest automatycznie aktualizowane (chociaż robi to dobrze w instrukcji aktualizacja).
Stumped
Pełniejsza odpowiedź: dzięki Adam. Właściwie zrobiłem to, co zasugerowałeś. W rzeczywistości problem polegał na tym, że podczas gdy Word „aktualizował” pola nazw po otwarciu docx,: IF {TextBoolean1} = "0" "{AUTOTEXT someparagraph}" "" Pole nie jest automatycznie aktualizowane (chociaż robi to dobrze w instrukcji aktualizacja). Teraz muszę tylko dowiedzieć się, jak zautomatyzować to pole, aby zaktualizować się po otwarciu docx. Dziękuję za twoją pomoc - twoje przekonanie skłoniło mnie, żebym się jeszcze trochę przejmował.
Stumped
@ Stumped, cieszę się, że to działa. Jeśli chodzi o automatyczne aktualizowanie pól, obawiam się, że Word nie oferuje takiej funkcjonalności, aby to osiągnąć, ponownie potrzebuję użyć ... makro ..
Adam
W przypadku pola AUTOTEXT zagnieżdżonego wewnątrz IF, wartość nie zostanie zaktualizowana podczas scalania i żaden kod pola nie zostanie zaktualizowany, jeśli scalasz się z nowym dokumentem. Musisz więc odwrócić IF i użyć np. {AUTOTEXT {IF {TextBoolean} = "0" "someparagraph" "blankautotext"}} i utwórz autotekst, który jest tak pusty, jak to możliwe (ręcznie, musi być np. Przestrzeń lub może cienka przestrzeń)