/ Forside / Teknologi / Administrative / MS-Office / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
MS-Office
#NavnPoint
sion 18709
refi 14474
Klaudi 9389
Rosco40 5695
berpox 5456
dk 5398
webnoob 4919
Benjamin... 4870
o.v.n. 4637
10  EXTERMINA.. 4373
Formatering af word dokumenter
Fra : Allan Schuster Bach


Dato : 28-01-04 14:01


Jeg sidder stadig og bokser med mit lille projekt, som skal formater en
masse worddokumenter.

Jeg har fundet en række artikler på MSDN, som omhandler netop formatering,
men det forgår tilsyneladende gennem en wordskabalon. Problemmet er bare, at
dokumenteren allerede findes, så en skabelon kan næppe bruges.

Jeg kan over ikke finde hoved eller hale i, hvordan jeg fra er almindelige
windows applikation, kan få åbnet et wordokument, for derefter, at
kontroller formateringen, så jeg håber at der er en der kan komme med et
godt råd

Bach



 
 
Claus Henriksen (28-01-2004)
Kommentar
Fra : Claus Henriksen


Dato : 28-01-04 15:01

On Wed, 28 Jan 2004 14:01:10 +0100, "Allan Schuster Bach"
<newskonto@schuster.dk> wrote:

>
>Jeg sidder stadig og bokser med mit lille projekt, som skal formater en
>masse worddokumenter.
>
>Jeg har fundet en række artikler på MSDN, som omhandler netop formatering,
>men det forgår tilsyneladende gennem en wordskabalon. Problemmet er bare, at
>dokumenteren allerede findes, så en skabelon kan næppe bruges.
>
>Jeg kan over ikke finde hoved eller hale i, hvordan jeg fra er almindelige
>windows applikation, kan få åbnet et wordokument, for derefter, at
>kontroller formateringen, så jeg håber at der er en der kan komme med et
>godt råd
>
>Bach
>
Er der brugt typografier i de oprindelige dokumenter?

Claus Henriksen

Allan Schuster Bach (29-01-2004)
Kommentar
Fra : Allan Schuster Bach


Dato : 29-01-04 12:48


"> Er der brugt typografier i de oprindelige dokumenter?


Ja, alle dokumenter benytter typografier. Jeg er nu kommet videre, men har
nu et andet problem

Jeg ønsker at finde navnet på den typografi på den "range" jeg befinder mig
i, men hvordan gør man det

Bach



Mads (29-01-2004)
Kommentar
Fra : Mads


Dato : 29-01-04 14:01


"Allan Schuster Bach" <newskonto@schuster.dk> wrote in message
news:4018f2ea$0$95010$edfadb0f@dread11.news.tele.dk...
> Jeg ønsker at finde navnet på den typografi på den "range" jeg befinder
mig
> i, men hvordan gør man det

Selection.Range.Style
vil give dig en streng med navnet på den typografi der er brugt i valgte
markering. Det kræver at der kun er en typografi. Hvis der er mere end en
giver den Nothing, så der er brug for lidt errortrapping (Fejlfælder?)

Mvh Mads



Allan Schuster Bach (30-01-2004)
Kommentar
Fra : Allan Schuster Bach


Dato : 30-01-04 10:25

> Selection.Range.Style
> vil give dig en streng med navnet på den typografi der er brugt i valgte
> markering. Det kræver at der kun er en typografi. Hvis der er mere end en
> giver den Nothing, så der er brug for lidt errortrapping (Fejlfælder?)

Den kan jeg ikke lige finde ud af

Hvis jeg gør sådan her

Dim rng as word.range = Worddokument.activedokument.paragraphs(2).range
rng.select()
rng.style = "Normal"

Så bliver teksten sæt til normalt, fint nok

men dette her virker ikke

msgbox (rng.style.tostring)

Så kommer der dette "System.__ComObject"

Hvad gør jeg forkert

Bach





Mads (30-01-2004)
Kommentar
Fra : Mads


Dato : 30-01-04 11:18


"Allan Schuster Bach" <newskonto@schuster.dk> wrote in message
news:401a2309$0$95020$edfadb0f@dread11.news.tele.dk...
> Hvis jeg gør sådan her
>
> Dim rng as word.range = Worddokument.activedokument.paragraphs(2).range
> rng.select()
> rng.style = "Normal"
>
> Så bliver teksten sæt til normalt, fint nok
Ja, hvis det er det du ønkser ;)


> men dette her virker ikke
>
> msgbox (rng.style.tostring)

Hvor har du "Tostring" fra. Hvad forventede du der skulle ske?

Range objektet har en attribut "Style" der er en streng med navnet på den
typografi der er tilknyttet Range objektet. (hvis der kun er tilknyttet en
typografi til range objektet).
"Style" er ikke et objekt med attributter og events.

> Så kommer der dette "System.__ComObject"
Formodenligt fordi Style ikke har en attribut tostring. Rng.Style.ToString
giver en fejl fordi det ikke returnere en streng som MsgBox kan vise. VB.Net
reagerer ved at sige som det gør. Jeg kender ikker noget til VB.Net så jeg
gætter her.

>
> Hvad gør jeg forkert
Nu har du skrevet rng.style.tostring og det har du jo sikkert gjort fordi du
ville et eller andet med det. Hvad du ville, kan jeg ikke gennemskue, så
hvad du gør galt, ved jeg ikke.

Mvh Mads



Allan Schuster Bach (30-01-2004)
Kommentar
Fra : Allan Schuster Bach


Dato : 30-01-04 12:28


> > msgbox (rng.style.tostring)
> Hvor har du "Tostring" fra. Hvad forventede du der skulle ske?

Tostring var et skud i tågen, med et forsøg på at den skulle retunere
teksten "Normal"

> Range objektet har en attribut "Style" der er en streng med navnet på den
> typografi der er tilknyttet Range objektet. (hvis der kun er tilknyttet en
> typografi til range objektet).

Og det er det navn jeg gerne vil have fat i

> "Style" er ikke et objekt med attributter og events.

Det er jeg klar over

> Nu har du skrevet rng.style.tostring og det har du jo sikkert gjort fordi
du
> ville et eller andet med det. Hvad du ville, kan jeg ikke gennemskue, så
> hvad du gør galt, ved jeg ikke.

I et forsøg på at få fremskaffet navnet på den typografi der er i den range
der er selectet (og der er kun en typografi)

Bach



Mads (30-01-2004)
Kommentar
Fra : Mads


Dato : 30-01-04 12:34


"Allan Schuster Bach" <newskonto@schuster.dk> wrote in message
news:401a3fb7$0$95086$edfadb0f@dread11.news.tele.dk...
>
> > > msgbox (rng.style.tostring)
> > Hvor har du "Tostring" fra. Hvad forventede du der skulle ske?
>
> Tostring var et skud i tågen, med et forsøg på at den skulle retunere
> teksten "Normal"

Prøv MsgBox (rng.Style)

Mvh Mads



Allan Schuster Bach (30-01-2004)
Kommentar
Fra : Allan Schuster Bach


Dato : 30-01-04 13:36

> > Tostring var et skud i tågen, med et forsøg på at den skulle retunere
> > teksten "Normal"
>
> Prøv MsgBox (rng.Style)
>
Det virker ikke, den kaster en exception. Det var derfor at jeg sat en
tostring på

Bach



Mads (02-02-2004)
Kommentar
Fra : Mads


Dato : 02-02-04 13:54


"Allan Schuster Bach" <newskonto@schuster.dk> wrote in message
news:401a4fce$0$95040$edfadb0f@dread11.news.tele.dk...
> > Prøv MsgBox (rng.Style)
> >
> Det virker ikke, den kaster en exception. Det var derfor at jeg sat en
> tostring på

rng.Style burde give dig navnet på typografien. Det er så muligt at Msgbox
stejler fordi Style er af type variant. Prøv med CStr (den findes i VBA)
eller anden metode til at lave en variant til string.

Mvh Mads



Allan Schuster Bach (02-02-2004)
Kommentar
Fra : Allan Schuster Bach


Dato : 02-02-04 14:50

> rng.Style burde give dig navnet på typografien. Det er så muligt at Msgbox
> stejler fordi Style er af type variant. Prøv med CStr (den findes i VBA)
> eller anden metode til at lave en variant til string.

Vi er slet ikke uenige.

I et "selvstædigt" word virker det helt fint, men i .Net applikationen
%&¤%&¤&%¤&%

Koden i word

debug.print selection.style

Koden jeg har i .Net applikationen

Dim rng As Word.Range = WordDokument.ActiveDocument.Paragraphs(2).Range
rng.Select()
With WordDokument.Selection
.Style = "Normal" ---> Her bliver teksten skiftet helt
korrekt
MsgBox(CStr(.Style)) ---> Her går det galt
End With


Bach






Mads (02-02-2004)
Kommentar
Fra : Mads


Dato : 02-02-04 16:08


"Allan Schuster Bach" <newskonto@schuster.dk> wrote in message
news:401e55a5$0$95109$edfadb0f@dread11.news.tele.dk...
> I et "selvstædigt" word virker det helt fint, men i .Net applikationen
> %&¤%&¤&%¤&%

Ja så er der ikke meget jeg kan gøre. Min viden rækker kun til VBA i Word.
Jeg håber du får løst dit problem ellers må du undvære en dialogboks ;)

Mvh Mads



Allan Schuster Bach (03-02-2004)
Kommentar
Fra : Allan Schuster Bach


Dato : 03-02-04 08:40


"Mads" <mads.knudsen@privatnospam.dk> skrev i en meddelelse
news:401e67c9$0$95103$edfadb0f@dread11.news.tele.dk...
>
> "Allan Schuster Bach" <newskonto@schuster.dk> wrote in message
> news:401e55a5$0$95109$edfadb0f@dread11.news.tele.dk...
> > I et "selvstædigt" word virker det helt fint, men i .Net applikationen
> > %&¤%&¤&%¤&%
>
> Ja så er der ikke meget jeg kan gøre. Min viden rækker kun til VBA i Word.
> Jeg håber du får løst dit problem ellers må du undvære en dialogboks ;)

Nu er det jo ikke en dialogboks der er målet, men en nem måde at se de på.
Løsningen fik jeg, da jeg stillet spørgsmålet i
news:microsoft.public.office.developer.automation


Svaret er her

This is probably a .NET thing. In VB/VBA you can do msgbox(.style). To
understand what is happening here, you need to realize how the Style
property of the Range object works. It is a variant. This means you can set
tht style property to a sring, as in your example, or to another Style
object. But the Style property always RETURNS a Style object, not a string.
The reason that msgbox(.Style) works in VB/VBA is that the default property
of the Style object is NameLocal, which a string. I think I've heard that
..NET doesn't support default properties or something like that, you so you
can't do msgbox(.style) in .NET. But msgbox (.style.NameLocal) should work.
--
Tom Winter
Tom@NoSpam.AmosFiveSix.com
www.AmosFiveSix.com



Mads (03-02-2004)
Kommentar
Fra : Mads


Dato : 03-02-04 11:30


"Allan Schuster Bach" <newskonto@schuster.dk> wrote in message
news:401f5042$0$95023$edfadb0f@dread11.news.tele.dk...
>
> Løsningen fik jeg, da jeg stillet spørgsmålet i
> news:microsoft.public.office.developer.automation
>
>
> Svaret er her
>
> This is probably a .NET thing. In VB/VBA you can do msgbox(.style). To
> understand what is happening here, you need to realize how the Style
> property of the Range object works. It is a variant. This means you can
set
> tht style property to a sring, as in your example, or to another Style
> object. But the Style property always RETURNS a Style object, not a
string.
> The reason that msgbox(.Style) works in VB/VBA is that the default
property
> of the Style object is NameLocal, which a string. I think I've heard that
> .NET doesn't support default properties or something like that, you so you
> can't do msgbox(.style) in .NET. But msgbox (.style.NameLocal) should
work.

Når jeg nu læser svaret er der en klokke der ringer i baghovdet. Efter lidt
søgen i online-hjælpen, hjulpet af at jeg nu vidste hvad jeg skulle finde,
lykkedes det også, at finde forklaringen i hjælpen :-|
Jeg kan ikke lade være med at sidde tilbage med en følelse af at jeg også
ville have fundet den løsning hvis jeg havde brugt online hjælpen fra Word
2000 istedet for hjælpen til Word XP. Men nu har jeg så lært det.

Mvh Mads




Allan Schuster Bach (03-02-2004)
Kommentar
Fra : Allan Schuster Bach


Dato : 03-02-04 13:15

> Jeg kan ikke lade være med at sidde tilbage med en følelse af at jeg også
> ville have fundet den løsning hvis jeg havde brugt online hjælpen fra Word
> 2000 istedet for hjælpen til Word XP. Men nu har jeg så lært det.

Det er jo problemet, når man kun sidder med .Net dokumentationen (fra VS
..NET 2003) og Office 2003, hvor det ikke har være muligt at finde

Bach



pre (29-01-2004)
Kommentar
Fra : pre


Dato : 29-01-04 14:59

Da .dotnet folkene åbenbart ikke har "bidt på krogen", så er det svært for
mig at se hvorfor Word´erne skulle bruge tid på dit "lille" projekt

"en række dokumenter (flere end 5000) i word, hvori formateringen af
skrifttyper, afstand mellem linier og meget andet skal kontrolleres."

som åbenbart slet ikke skal udføres i Word.
--
mvh
pre © 2004
øretævernes@holdeplads.dk


"Allan Schuster Bach" <newskonto@schuster.dk> wrote in message
news:4017b2be$0$95001$edfadb0f@dread11.news.tele.dk...
>
> Jeg sidder stadig og bokser med mit lille projekt, som skal formater en
> masse worddokumenter.
>
> Jeg har fundet en række artikler på MSDN, som omhandler netop formatering,
> men det forgår tilsyneladende gennem en wordskabalon. Problemmet er bare,
at
> dokumenteren allerede findes, så en skabelon kan næppe bruges.
>
> Jeg kan over ikke finde hoved eller hale i, hvordan jeg fra er almindelige
> windows applikation, kan få åbnet et wordokument, for derefter, at
> kontroller formateringen, så jeg håber at der er en der kan komme med et
> godt råd
>
> Bach
>
>



Allan Schuster Bach (29-01-2004)
Kommentar
Fra : Allan Schuster Bach


Dato : 29-01-04 16:02


"pre" <skrivtilgruppen@bredalsparken.dk> skrev i en meddelelse
news:401911d7$0$95044$edfadb0f@dread11.news.tele.dk...
> Da .dotnet folkene åbenbart ikke har "bidt på krogen", så er det svært for
> mig at se hvorfor Word´erne skulle bruge tid på dit "lille" projekt
>
> "en række dokumenter (flere end 5000) i word, hvori formateringen af
> skrifttyper, afstand mellem linier og meget andet skal kontrolleres."
>
> som åbenbart slet ikke skal udføres i Word.

Så er det åbenbart dig der ikke kan de godt nok.

For de er måske ikke klar over at Office 2003 og Visual Studio (.Net) nu er
kommet tætter på hinanden. Hele ideen er, at åbne word dokumentet fra en
selstændig applikation, for der efter at løbe det igennem for formateringer.
Dette fungere faktisk også næste ude mærket. Mit problem er bare, at jeg
ikke kender særlig meget til vba kode i word, men temmelige meget i .Net.

Så jo det skal udføres i word, men det er en applikationen der skal
foretaget det.

Bach




Lars Tange (30-01-2004)
Kommentar
Fra : Lars Tange


Dato : 30-01-04 12:57

Hej Allan

Faktisk er det ikke så svært (Mine erfaringer kommer fra VBA i den gamle VB
i Visual Studio 6) men du kan se i min tråd længere oppe, så jeg jeg selv
nogle underlige problemer med det.

Ideelt set opretter du et nyt Windows Program projekt. Herefter går du over
i Solution Exploreren og højreklikker på References og vælger Add Reference.
Herefter trykker du på COM fanen og bladrer ned til Microsoft Word x.0
Object Library - dobbeltklikker og vælger OK.
Nu er Word programmet tilknyttet dit program og du kan anvende alle (tror
jeg nok) words muligheder i dit program.

Herefter skaber du en kontakt til word i dit program ved at oprette et Word
Applikations objekt:

Dim wdApp As Word.Application

For at kunne manipulere med et worddokument skal du også oprette et
worddoukument objet:

Dim wdDoc As Word.Document

Du kan nu åbne et eksisterende dokument med kommandoen:

wdDoc = wdApp.Documents.Open(strFileName)

Herefter har wdDoc en masse egenskaber der tillader dig at manipulere med
dokumentet, hvorefter du simpelthen afslutter med:

wdDoc.Save()
wdApp.Quit()

Hvis du glemmer wdApp.Quit() så forbliver word åben (uden grafisk interface)
i din hukommelse og bruger 20-30 MB ram til ingenting.

En nem måde at finde ud af hvilken kode man skal bruge for at lave selve
formateringen af dokumentet, er at indspille en makro i word og så kopiere
denne kode over i Visual Studio projektet.

Håber det hjælper

Lars Tange


"Allan Schuster Bach" <newskonto@schuster.dk> skrev i en meddelelse
news:bvb76n$2ggd$1@news.cybercity.dk...
>
> "pre" <skrivtilgruppen@bredalsparken.dk> skrev i en meddelelse
> news:401911d7$0$95044$edfadb0f@dread11.news.tele.dk...
> > Da .dotnet folkene åbenbart ikke har "bidt på krogen", så er det svært
for
> > mig at se hvorfor Word´erne skulle bruge tid på dit "lille" projekt
> >
> > "en række dokumenter (flere end 5000) i word, hvori formateringen af
> > skrifttyper, afstand mellem linier og meget andet skal
kontrolleres."
> >
> > som åbenbart slet ikke skal udføres i Word.
>
> Så er det åbenbart dig der ikke kan de godt nok.
>
> For de er måske ikke klar over at Office 2003 og Visual Studio (.Net) nu
er
> kommet tætter på hinanden. Hele ideen er, at åbne word dokumentet fra en
> selstændig applikation, for der efter at løbe det igennem for
formateringer.
> Dette fungere faktisk også næste ude mærket. Mit problem er bare, at jeg
> ikke kender særlig meget til vba kode i word, men temmelige meget i .Net.
>
> Så jo det skal udføres i word, men det er en applikationen der skal
> foretaget det.
>
> Bach
>
>
>



Allan Schuster Bach (30-01-2004)
Kommentar
Fra : Allan Schuster Bach


Dato : 30-01-04 14:14

> Ideelt set opretter du et nyt Windows Program projekt. Herefter går du
over
> i Solution Exploreren og højreklikker på References og vælger Add
Reference.
> Herefter trykker du på COM fanen og bladrer ned til Microsoft Word x.0
> Object Library - dobbeltklikker og vælger OK.
> Nu er Word programmet tilknyttet dit program og du kan anvende alle (tror
> jeg nok) words muligheder i dit program.
>
> Herefter skaber du en kontakt til word i dit program ved at oprette et
Word
> Applikations objekt:

Den part med at få fat på word dokumentet og få det åbnet var forbløffende
nemt og lige til, og alt i alt virker det jo lige til. Dog er jeg stødt ind
i et uventet problem, se andet sted i tråden

Bach




Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste