Przyznaję, jestem bardzo nowy w korzystaniu z bibliotek Interop, ale porady, które ludzie wydają się zawsze wydawać, to nagrywanie makr i sprawdzanie kodu vba. Problem polega na tym, że makro nie zapisuje dokładnie tego, co robię: Kliknięcie Szybkiego stylu, aby zastosować go do bieżącego wyboru.Jak zastosować Word Quick Style w języku C# - nie tylko proste formatowanie, ale cały styl?
Moim zadaniem jest całkiem prosta: muszę zastosować do szybkiego stylu akapitu (Microsoft.Office.Interop.Word.Paragraph). Jednak komenda set_styletylko stosuje podstawowe formatowanie, a akapit zachowuje oryginalny wybór szybkiego stylu (Normal).
Używając podejścia Remou, zadziałało to dla mnie, ale wydaje się bardzo podobne do mojego własnego kodu, i nie mogę sprawić, żeby to działało, i myślę, że może to być moje zrozumienie tego, że obiekt obiektowy jest nieco nietypowy.
public void AddParagraph(string text, string styleName = null)
{
Paragraph paragraph = _document.Content.Paragraphs.Add();
if (styleName != null)
{
paragraph.Range.set_Style(_document.Styles[styleName]);
}
paragraph.Range.Text = text;
paragraph.Range.InsertParagraphAfter();
}
Następnie wywołujemy to za pomocą np. AddParagraph("A title", "Heading 1");
, ale wynikiem użycia powyższego opakowania do zbudowania mojego dokumentu jest to, że nie są stosowane żadne pełne style, tylko czcionka, kolor, rozmiar i pogrubienie/kursywa.
Używam własnego pliku .dotx
z moimi własnymi, zdefiniowanymi i nazwanymi stylami, ale po prostu skopiowanie kodu z Remou działa z moim własnym szablonem, więc nie sądzę, że to jest problem, a używanie tego kodu nie jest możliwe dowiedzieć się, jak dołączyć wiele akapitów z każdą własną stylizacją.
Czy ktoś może wskazać, co jest nie tak z moim podejściem, a przynajmniej jak mogę dać odpowiedź dostarczoną przez Remou na moje potrzeby? :)
Dzięki Remou, mam zaktualizowane moje pytanie, jak masz mnie nieco bliżej, ale nie do końca. Prawdopodobnie podchodzę do tego w niewłaściwy sposób. –
... Jestem zdumiony. Zmieniła się kolejność stosowania stylu i tekstu, część '+ paragraph.Range.Text;' była starą próbą i skopiowaniem przez pomyłkę. Dziękuję za pomoc! :) –