Avatar billede lsskaarup Nybegynder
05. juli 2006 - 14:02 Der er 23 kommentarer og
1 løsning

Styre placeringen af underskrift i dokument

Jeg har lavet en brevskabelon, hvor brugeren via en userform skal indtaste bl.a. modtager af brevet og selve brevet.

Herefter bliver det automatisk sat ind i Word, men der er defineret nogle afstande mellem underskriften (mvh o.s.v.) og selve teksten.

Jeg har nu 22 linier mellem feltet der skal indeholde teksten, og underskriften. Problemet er så at der bliver ved med at være 22 linier imellem dem. Det skal tilpasses og så må underskriften ikke kunne ligge for sig selv på en efterfølgende side.
05. juli 2006 - 14:50 #1
Er hele brevets tekst indsat i ET felt - eller???

Hvis du har 22 linieskift mellem det sidste felt fra UserFormen og underskriften, vil der aldid være denne afstand.

Du skal indsætte underskriften umiddelbart efter det sidste felt for at få den korrekte afstand.

For at undgå at underskriften kommer på en side for sig selv skal du for afsnittet før underskriften vælge:

Formater->Afsnit, fanen "Linie- og sideskift", marker feltet: "Hold sammen med næste"
Avatar billede lsskaarup Nybegynder
05. juli 2006 - 16:18 #2
Tjaaaa, jeg har lige fået en revision af brevskabelonen.

Der skal være 3 linieskift imellem sidste punktum i teksten og underskriften. Så er det smarteste og letteste vel bare at placere underskriften 3 linieskift under teksten?
Avatar billede lsskaarup Nybegynder
05. juli 2006 - 16:20 #3
Det skaber bare et andet problem.

Vi skal have en standard-tekst "side 1 af 3" på både dansk, engelsk og tysk.

Denne ville jeg helst have haft i sidefoden, men der kan jeg ikke tilgå den via VB, eller er det bare mig der er dum...
Avatar billede lsskaarup Nybegynder
05. juli 2006 - 16:36 #4
Det dur ikke helt med "Hold sammen med næste".

Jeg har fjernet det, og det ser faktisk fornuftigt nu, men jeg har stadig problemet i de tilfælde hvor underskriften netop ikke kan stå op en foregående side, og hvis jeg bruge "hold sammen...", så kommer hele teksten med over på næste side, og jeg har så kun modtager-informationer på første side.
Avatar billede learningvba Nybegynder
06. juli 2006 - 11:22 #5
1) det smarteste er nok at lave 3x Selection.TypeText vbNewLine efter sidste punktum i teksten.
Alternativt, hvis du ved hvormange linier der er på 1 side (fontstørrelse, linieafstand, topmargen, bundmargen osv osv er kendt på forhånd og fastlagt), så kan du lave en tæller, og så tælle ned indtil sideskiften kommer. (Ikke så pænt, IMHO)

Ovenstående tager ikke højde for situationen hvor brødteksten fylder så meget at underskriften vil flytte over på side 2 (3 osv.).

Der må/kan du nørkle lidt med at sætte et bogmærke førend underskriften og efter underskriften, og så spørge om deres "Selection.Information(wdActiveEndAdjustedPageNumber)" er forskellig, og hvis ja (dvs. de er adskilt af et sideskifte) så flytte lidt rundt så det står pænt ( = at underskriften ikke står alene på sidste side eller en del af underskriften står alene på sidste side).

2) Tekst i sidefoden kan lade sig gøre via VBA, prøv evt. at kigge på det link der er i http://www.eksperten.dk/spm/715793.
Avatar billede lsskaarup Nybegynder
06. juli 2006 - 12:12 #6
1) Jeg tror bare jeg laver 3 linieskift (afsnit) manuelt i dokumentet.

Jeg vil så tilgengæld prøve at bruge det sidste du skriver om, men kan jeg gå ind i teksten og splitte den op, så der kommer lidt tekst med over på efterfølgende side sammen med underskriften. Men hvordan?

2) Kigger jeg lige på
06. juli 2006 - 12:21 #7
Så vidt jeg forstår din problem stilling vil du ikke få det med underskriften til at fungere automatisk i alle tilfælde, hvis hele brevets tekst er indtastet i ET felt.

Du kan manuelt indsætte sideskift med Ctrl-Enter
Avatar billede lsskaarup Nybegynder
06. juli 2006 - 13:31 #8
1) Selve brevets tekst er indtastet i et felt og bliver lagt over i et formularfelt

2) Det fattede jeg ikke ret meget af. Prøvede at få den til at rette i et bookmark i sidefoden, men der sker intet.
Avatar billede lsskaarup Nybegynder
06. juli 2006 - 13:53 #9
2) Naaaa, nu fandt jeg ud af det

    ActiveDocument.Bookmarks("side").Select
    Selection.TypeText Text:="wefsd"

Men den hopper over i normal visningen i stedet for at blive i Udskriftslayout, hvorfor det og/eller kan jeg styre det på en eller anden måde?
Avatar billede lsskaarup Nybegynder
06. juli 2006 - 14:06 #10
1) Hmm, hvis jeg nu laver 2 bogmærker, tester på disse og finder ud af at underskriften er på næste side. Kan jeg så ikke lede brevteksten igennem bagfra og finde 2 på hinanden kommende afsnit, og så tvinge dette sidste afsnit med over på side 2? Findes dette så ikke, så må jeg definere at x antal enter fra slutningen skal med over på næste side.
Avatar billede learningvba Nybegynder
06. juli 2006 - 14:48 #11
1) Præcist :-) Det var den løsning jeg havde i tankerne. (Du kan tvinge afsnittet over på en ny side ved at indsætte et sideskift).

Nedenstående fortæller hvilke sidenumre der er før og efter underskriften.

SideNrFørUnderskrift = Selection.Information(wdActiveEndAdjustedPageNumber)
Selection.TypeText "Venlig hilsen" & vbNewLine & vbNewLine & "Navn" & vbNewLine _ & "Stilling" & vbNewLine & "Firma"
SideNrEfterUnderskrift = Selection.Information(wdActiveEndAdjustedPageNumber)

2) Det fik jeg ikke formuleret særligt klart. Du bør ikke bruge den løsning jeg skitserede, men følge linket www.wordforums.com/printthread.php%3Fs%3D%26threadid%3D30225+activedocument.section+current&hl=en&ct=clnk&cd=4" target="_blank">http://72.14.203.104/search?q=cache:Dswjrqq6jEoJ:www.wordforums.com/printthread.php%3Fs%3D%26threadid%3D30225+activedocument.section+current&hl=en&ct=clnk&cd=4 og så bruge den måde som "Mark Tangard" foreslår, dvs. som range.

"Kogt meget ned" så kan
Sub Footer()
  NormalTemplate.AutoTextEntries("Side X af Y").Insert _
      Where:=Selection.Sections(1).Footers(wdHeaderFooterPrimary).Range
End Sub

indsætte "Side ? af ?"

Dog venstrejusteret ;-)
Jeg har endnu ikke haft tid til at "lege" med de muligheder & udfordringer det giver.

Alternativt, så burde
  ActiveDocument.ActiveWindow.View.Type = wdPrintView
sætte dit view til udskriftslayout.
Avatar billede lsskaarup Nybegynder
06. juli 2006 - 15:08 #12
2) Er det den her du mener jeg skal bruge?:

Dim sek as Section
Set sek = Selection.Sections(1)
sek.Headers(wdHeaderFooterPrimary).Range.Text = "XYZ"

Men mit virker nu, så kan jeg altid prøve at optimere det senere.
Avatar billede lsskaarup Nybegynder
06. juli 2006 - 15:29 #13
Øh hvordan kan jeg finde det sidste forekomst af 2 x vbCrlf?
Avatar billede learningvba Nybegynder
07. juli 2006 - 08:13 #14
Leg lidt med dette eksempel:

Sub ReadLines()
  Dim lLong As Long
  Dim EmptyLines() As Long

  'Opret nogle linier.
  For lLong = 1 To 50
      If lLong Mod 4 = 0 Then
        Selection.TypeParagraph
      Else
        Selection.TypeText "Tekst " & Str(lLong) & vbNewLine
      End If
  Next lLong
 
  ReDim EmptyLines(0)
  'Gå til starten af dokumentet.
  Selection.HomeKey Unit:=wdStory, Extend:=wdMove
  For lLong = 1 To ActiveDocument.BuiltInDocumentProperties(wdPropertyLines)
      ActiveDocument.Bookmarks("\LINE").Select
      'Debug.Print Trim(Selection) 'Hvis du vil se indholdet af linien.
      If Trim(Selection) = Chr(13) Then
        ReDim Preserve EmptyLines(UBound(EmptyLines) + 1)
        EmptyLines(UBound(EmptyLines)) = lLong
      End If
      Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdMove
  Next lLong
  For lLong = 1 To UBound(EmptyLines)
      Debug.Print EmptyLines(lLong) & " er en tom linie."
  Next lLong
End Sub

Det giver dig lidt af svaret ;-), du skal så "bare" vælge hvilken line der skal have et sideskift indsat.
Avatar billede rvm Nybegynder
07. juli 2006 - 10:07 #15
Alt dette lyder meget besværlgt. Hvad med at prøve at retænke det hele (her tænker jeg på det med userformen). Hvis der ikke sker alt muligt andet i userformen, så har du faktisk ikke brug for den... Du kunne i stedet arbejde med formularfelter, der styrer din tekstplacering meget nøjagtigt og så lade brugeren indtaste direkte i dokumentet, mens det er beskyttet - på den måde skal du umiddelbart slet ikke programmere noget :-)
Avatar billede learningvba Nybegynder
07. juli 2006 - 10:29 #16
Jeg er enig med rvm, det er besværligt, og hvis muligt bør løsningen genovervejes.
Sidestyring via VBA er, IMHO, ret besværligt, og for de brev-skabeloner jeg har lavet, så bliver det i 99% af situationerne overladt til brugerne selv at indsætte sideskift de "pæne" steder.
I tilfælde af at det drejer sig om dokumenter der går direkte til print, uden brugeren kan påvirke det, så tyr jeg til de bøvlede og besværlige løsninger :-)
Avatar billede lsskaarup Nybegynder
07. juli 2006 - 11:16 #17
Det vel jeg give jer ret i, men jeg synes bare ikke rene formularfelter i et beskyttet dokument, giver helt de samme redigeringsmuligheder. Hvordan skal man bl.a. lave punktopstillinger?
Avatar billede lsskaarup Nybegynder
07. juli 2006 - 12:17 #18
Jeg har kigget lidt på din seneste kode, men fik den ikke til at virke helt, men jeg tror også jeg dropper det, så må brugeren selv tilrette dokumentet, hvis det ikke ser rigtigt ud.

Du skal have tak for hjælpen, og så får du lidt ekstra oveni, når du har smidt et svar, leaningvba.

Et ekstra spørgsmål, hvor har du tillært dig disse kundskaber? Jeg har søgt efter en bog eller webside, hvor der målrette info om VB(A) til Word, men har ikke kunnet finde noget.
Avatar billede learningvba Nybegynder
07. juli 2006 - 13:36 #19
Ekstra spørgsmål: Søgemaskiner (Google), stædighed og relaterede arbejdsopgaver :-), og så ellers "låne" og redigere.

Bedste steder at finde hjælp er en blanding af referencesider (bla. Microsoft og http://mvps.org), indbygget hjælp i Word og debat-foraer som f.eks. eksperten.dk, samt ikke mindst Word indbyggede makro-optager :-))

Pyt med point, dels var det mest hints du fik og dels fik du ikke helt løst din opgave.
Avatar billede lsskaarup Nybegynder
07. juli 2006 - 18:05 #20
Sludder du har hjulpet mig meget.
Avatar billede rvm Nybegynder
07. juli 2006 - 19:41 #21
Brødteksten kunne indsættes i en sektion, der ikke er beskyttet - så kan brugeren lave al den formatering der ønskes :-)
Avatar billede rvm Nybegynder
07. juli 2006 - 19:42 #22
Der er massere af kurser - f.eks. "VBA til Word" hos Teknologisk Institut - der hvor jeg arbejder :-)
Avatar billede lsskaarup Nybegynder
08. juli 2006 - 18:21 #23
Nu er det ikke en beskyttet brevskabelon, forstået på den måde, at de åbner dokumentet, og deri så er en masse formularfelter som er det eneste de kan skrive i.

Når jeg udføre VBA'en, så bliver alle felter overskrevet af indhold i et nyt dokument, på baggrund af skabelonen.
Avatar billede lsskaarup Nybegynder
19. juli 2006 - 08:30 #24
Nå, der kommer ikke et svar, så må jeg jo lukke spørgsmålet.
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
Tag et kursus i Word og øg effektiviteten

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