|
| 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
| |
|
|