Avatar billede Mortimer12 Nybegynder
08. november 2012 - 13:28 Der er 6 kommentarer

C# Word add-in: Loope over åbne dokumenter

Jeg er i gang med at lave et word 2010 add-in i Visual Studio 2010. Jeg har en form, hvor man kan sætte nogle default værdier, der, når man klikker ok, skal rettes på alle åbne dokumenter.
Jeg synes dog ikke lige kan hitte ud af loope over alle åbne Word dokumenter?

En venlig sjæl der kan hjælpe?
Avatar billede bvli Praktikant
08. november 2012 - 13:42 #1
Hvordan ser din kode ud nu?

Hvordan med noget a'la:

var documents = WordApp.Documents;
foreach (var document in documents) {
  //find text to edit
  //edit text
}
Avatar billede Mortimer12 Nybegynder
08. november 2012 - 13:52 #2
Jeg kan godt lave en ny instance af Word.Application:

Word.Application app = new Word.Application();
men så indeholder app.Documents.Count bare 0 uanset hvor mange dokumenter jeg har åbne.

Med denne: Globals.ThisAddIn.Application.Documents får jeg 1, selv hvis jeg har flere åbne, så den fanger ikke andre end sig selv.
Avatar billede Mortimer12 Nybegynder
08. november 2012 - 13:59 #3
Men altså ja, det er sådan en foreach jeg har lavet.
Avatar billede bvli Praktikant
08. november 2012 - 14:15 #4
Du skal ikke lave en ny instans. Du får instansen af Word fra word i din Connect klasse når OnConnection(...) kaldes.
Avatar billede Mortimer12 Nybegynder
08. november 2012 - 14:26 #5
Kan du ikke give et lille hint her? Jeg kender ikke til det du beskriver. Jeg kan ikke finde noget dokumentation på det udfra det du skrev.

Det er i en helt selvstændig metode jeg gerne ville bruge det.

Jeg formoder du tænker selve applikationen bliver instantieret i ThisAddIn.cs når selve Word startes og add-ins starter? Eller er jeg helt fra den?
Avatar billede bvli Praktikant
08. november 2012 - 14:46 #6
Ah - beklager. Jeg ser først nu, at de har ændret templaten i VS for VSTO. (Det er nok lidt afslørende, at jeg ikk' har lavet en addin siden Office 2003) :)

Som jeg lige har kigget på det, burde du kunne iterere over dine åbne dokumenter via this.Application.Documents. Jeg mener at kunne huske, at nye dokumenter *ikke* er med i listen, hvis ikke de på nogen måde er rettet i. Du kan evt. abonnere på Application.DocumentChange (som også kaldes når der laves et nyt dokument), for at holde styr på dette.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester