/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Hjælp til sidehoved makro
Fra : Jesper Clausen


Dato : 18-04-05 08:59

Hej Ng

Jeg har en sidehoved makro som virker fint i office 2000.
Nu har jeg konverteret til office 2003 og der virker makroen ikke.

Er der en der har et godt bud hvor fejlen ligger?
Scriptet er pastet ind herunder.

På forhånd tak for hjælpen

Jesper


'
' Sidehoved Makro

Sub Sidehoved()
Dim tekst, fag, navn, klasse, nr, kontrolnr As String

On Error GoTo fejlfinding
Application.ScreenUpdating = False

'hvis der ikke er et åbent dokumentvindue
If Windows.Count = 0 Then End

'det aktuelle sidehoved aktiveres og der zoomes
With ActiveWindow.ActivePane.View
.Type = wdPageView
.SeekView = wdSeekCurrentPageHeader
.Zoom.Percentage = 100
End With

'en søgning afgør om sidehovedet allerede er udfyldt
With Selection.Find
.ClearFormatting
.Text = "Skolens navn"
.Forward = True
.Wrap = wdFindContinue
.MatchCase = True
.Execute
End With

'HVIS sidehovedet allerede er udfyldt, fjernes markeringen
'af søgeteksten ved at flytte indsætningspunktet, og
'sidehovedet lukkes
If Selection.Find.Found = True Then
Selection.MoveRight Unit:=wdCharacter, Count:=1
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
End

'HVIS sidehovedet ikke er udfyldt endnu
Else
'sidehovedet lukkes
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument

'dropdown´en udfyldes med prøven navn
frmEksamen.cboVælg.List = Array("Studentereksamen", _
"Højere forberedelseseksamen", "Terminsprøve", _
"Prøveeksamen", "Årsprøve")
frmEksamen.cboVælg.ListIndex = 0

'input hentes fra formen Eksamen
Application.ScreenUpdating = True
frmEksamen.txtKontrolnr.Text = Left(Date, 3)
frmEksamen.Show
Application.ScreenUpdating = False
fag = Trim(frmEksamen.txtFag.Text)
navn = Trim(frmEksamen.txtNavn.Text)
klasse = Trim(frmEksamen.txtKlasse.Text)
nr = Trim(frmEksamen.txtNr.Text)
kontrolnr = Trim(frmEksamen.txtKontrolnr.Text)
tekst = frmEksamen.cboVælg.Text

'hoveddokumentet formateres med 1½ linjeafstand
Selection.ParagraphFormat.LineSpacingRule = wdLineSpace1pt5

'standardindstillinger i Sideopsætning
With ActiveDocument.PageSetup
.TopMargin = CentimetersToPoints(4.5)
.BottomMargin = CentimetersToPoints(3)
.LeftMargin = CentimetersToPoints(4)
.RightMargin = CentimetersToPoints(3)
.Gutter = CentimetersToPoints(0)
.HeaderDistance = CentimetersToPoints(1.25)
.FooterDistance = CentimetersToPoints(1.25)
.PageWidth = CentimetersToPoints(21)
.PageHeight = CentimetersToPoints(29.7)
End With

'der skrives centreret sidenummer i sidefoden
Selection.Sections(1).Footers(1).PageNumbers.Add _
PageNumberAlignment:=wdAlignPageNumberCenter, FirstPage:=True

'sidehovedet åbnes
ActiveWindow.ActivePane.View.Type = wdPageView
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader

'autoteksten "Eksamen" indsættes i sidehovedet
NormalTemplate.AutoTextEntries("Eksamen").Insert _
Where:=Selection.Range, RichText:=True

'datofeltet og arkfeltet opdateres
Selection.WholeStory
Selection.Fields.Update

'markeringen fjernes og indsætningspunktet placeres lige efter
'skolens navn
Selection.MoveUp Unit:=wdLine, Count:=2
Selection.MoveRight Unit:=wdCharacter, Count:=24

'input skrives i sidehovedet startende ved søgeordet "Prøve"
With Selection
.Find.Execute FindText:="Prøve", Forward:=True
.Delete Unit:=wdCharacter, Count:=1
.TypeText Text:=tekst
.Find.Execute FindText:=tekst, Forward:=False
.Font.Bold = True
'.Font.Color = wdColorRed
.MoveRight Unit:=wdCharacter, Count:=1

.Find.Execute FindText:="fag:", Forward:=True
.MoveRight Unit:=wdCharacter, Count:=2
.TypeText Text:=fag

.Find.Execute FindText:="navn:", Forward:=True
.MoveRight Unit:=wdCharacter, Count:=2
.TypeText Text:=navn

.Find.Execute FindText:="klasse:", Forward:=True
.MoveRight Unit:=wdCharacter, Count:=2
.TypeText Text:=klasse

.Find.Execute FindText:="elevnr.:", Forward:=True
.MoveRight Unit:=wdCharacter, Count:=2
.TypeText Text:=nr

.Find.Execute FindText:="kontrolnr.:", Forward:=True
.MoveRight Unit:=wdCharacter, Count:=2
.TypeText Text:=kontrolnr

.MoveUp Unit:=wdScreen, Count:=1
.MoveRight Unit:=wdCharacter, Count:=24
End With

'sidehovedet lukkes
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
Application.ScreenUpdating = True
End If
End

'generel fejlfinding
fejlfinding:
tekst = "Der er opstået en fejl"
MsgBox tekst, vbCritical, " Fejl"
Application.ScreenUpdating = True

End Sub



 
 
Thomas Bøjstrup Joha~ (18-04-2005)
Kommentar
Fra : Thomas Bøjstrup Joha~


Dato : 18-04-05 19:12


"Jesper Clausen" <jeppe2k@yahoo.dk> skrev i en meddelelse
news:d3vpd7$oee$1@news.net.uni-c.dk...
> Hej Ng
>
> Jeg har en sidehoved makro som virker fint i office 2000.
> Nu har jeg konverteret til office 2003 og der virker makroen ikke.
>
> Er der en der har et godt bud hvor fejlen ligger?
> Scriptet er pastet ind herunder.
>
> På forhånd tak for hjælpen
>
> Jesper
>
>
> '
> ' Sidehoved Makro
>
> Sub Sidehoved()
> Dim tekst, fag, navn, klasse, nr, kontrolnr As String

Klip mange liner

> End Sub
>

Kommer den ikke og siger hvor det gå galt ?




Ulf (18-04-2005)
Kommentar
Fra : Ulf


Dato : 18-04-05 20:58

On Mon, 18 Apr 2005 09:58:55 +0200, "Jesper Clausen"
<jeppe2k@yahoo.dk> wrote:

>Hej Ng
>
>Jeg har en sidehoved makro som virker fint i office 2000.
>Nu har jeg konverteret til office 2003 og der virker makroen ikke.
>
>Er der en der har et godt bud hvor fejlen ligger?
>Scriptet er pastet ind herunder.
>
>På forhånd tak for hjælpen
>
>Jesper
>
>
>'
>' Sidehoved Makro
>
>Sub Sidehoved()
>............
>End Sub
>

Prøv at checke 'Tools > Macro > Security' (Jeg har UK version).
Ofte får man ingen advarsel om at det valgte niveau (Højt som default)
ikke tillader makroer.

MVH
Ulf

Jesper Clausen (18-04-2005)
Kommentar
Fra : Jesper Clausen


Dato : 18-04-05 23:15

>>Hej Ng
>>
>>Jeg har en sidehoved makro som virker fint i office 2000.
>>Nu har jeg konverteret til office 2003 og der virker makroen ikke.
>>
>>Er der en der har et godt bud hvor fejlen ligger?
>>Scriptet er pastet ind herunder.
>>
>>På forhånd tak for hjælpen
>>
>>Jesper
>>
>>
>>'
>>' Sidehoved Makro
>>
>>Sub Sidehoved()
>>............
>>End Sub
>>
>
> Prøv at checke 'Tools > Macro > Security' (Jeg har UK version).
> Ofte får man ingen advarsel om at det valgte niveau (Højt som default)
> ikke tillader makroer.
>
> MVH
> Ulf

Jeg har sat sikkerhedsniveauet ned, fra højt til mellem (den kom med en
advarsel ved høj)
det gav ingen effekt..

Jeg har forsøgt at afvikle trinvist, men den fejlmelder med det samme
...og jeg har minus forstand på at fejlfinde i VB

Vh Jesper



Ulf (19-04-2005)
Kommentar
Fra : Ulf


Dato : 19-04-05 20:27

On Tue, 19 Apr 2005 00:14:55 +0200, "Jesper Clausen"
<jeppe2k@yahoo.dk> wrote:

Jesper,

Prøv at kommentere linien "On Error GoTo fejlfinding" ud (et ' foran
teksten .
Så vil makroen stoppe der hvor afviklingen går galt. Nu får du bare
"Der er opstået en fejl", men ikke noget om hvor.
Når jeg kører den fejler den på "frmEksamen.cboVælg.List" - jeg har
heller ikke nogen frmEksamen.

Der er næppe noget galt med koden (den har jo kørt før), men den
kalder også NormalTemplate hvor der tilsyneladende skal være nogle
autotekst felter.
Mit gæt er at du skal have fat i din gamle Normal.dot fil.

MVH
Ulf

Harald Staff (19-04-2005)
Kommentar
Fra : Harald Staff


Dato : 19-04-05 20:34

"Virker ikke" er hva jeg kaller en "dansk feilmelding" -i hvert fall fra
betryggende avstand her oppe i fjellene. Det er i hvert fall 13264 måter en
makro ikke kan virke på. Så hvordan vet du eller opplever at den ikke virker
?

Får du en feilmeddelelse ? Blir du i så fall spurt om "End" eller "Debug" ?
Idet du klikker "Debug" -hva ser du ?

HTH. beste hilsen Harald

"Jesper Clausen" <jeppe2k@yahoo.dk> skrev i melding
news:d3vpd7$oee$1@news.net.uni-c.dk...
> Hej Ng
>
> Jeg har en sidehoved makro som virker fint i office 2000.
> Nu har jeg konverteret til office 2003 og der virker makroen ikke.
>
> Er der en der har et godt bud hvor fejlen ligger?
> Scriptet er pastet ind herunder.
>
> På forhånd tak for hjælpen
>
> Jesper
>
>
> '
> ' Sidehoved Makro
>
> Sub Sidehoved()
> Dim tekst, fag, navn, klasse, nr, kontrolnr As String
>
> On Error GoTo fejlfinding
> Application.ScreenUpdating = False
>
> 'hvis der ikke er et åbent dokumentvindue
> If Windows.Count = 0 Then End
>
> 'det aktuelle sidehoved aktiveres og der zoomes
> With ActiveWindow.ActivePane.View
> .Type = wdPageView
> .SeekView = wdSeekCurrentPageHeader
> .Zoom.Percentage = 100
> End With
>
> 'en søgning afgør om sidehovedet allerede er udfyldt
> With Selection.Find
> .ClearFormatting
> .Text = "Skolens navn"
> .Forward = True
> .Wrap = wdFindContinue
> .MatchCase = True
> .Execute
> End With
>
> 'HVIS sidehovedet allerede er udfyldt, fjernes markeringen
> 'af søgeteksten ved at flytte indsætningspunktet, og
> 'sidehovedet lukkes
> If Selection.Find.Found = True Then
> Selection.MoveRight Unit:=wdCharacter, Count:=1
> ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
> End
>
> 'HVIS sidehovedet ikke er udfyldt endnu
> Else
> 'sidehovedet lukkes
> ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
>
> 'dropdown´en udfyldes med prøven navn
> frmEksamen.cboVælg.List = Array("Studentereksamen", _
> "Højere forberedelseseksamen", "Terminsprøve", _
> "Prøveeksamen", "Årsprøve")
> frmEksamen.cboVælg.ListIndex = 0
>
> 'input hentes fra formen Eksamen
> Application.ScreenUpdating = True
> frmEksamen.txtKontrolnr.Text = Left(Date, 3)
> frmEksamen.Show
> Application.ScreenUpdating = False
> fag = Trim(frmEksamen.txtFag.Text)
> navn = Trim(frmEksamen.txtNavn.Text)
> klasse = Trim(frmEksamen.txtKlasse.Text)
> nr = Trim(frmEksamen.txtNr.Text)
> kontrolnr = Trim(frmEksamen.txtKontrolnr.Text)
> tekst = frmEksamen.cboVælg.Text
>
> 'hoveddokumentet formateres med 1½ linjeafstand
> Selection.ParagraphFormat.LineSpacingRule = wdLineSpace1pt5
>
> 'standardindstillinger i Sideopsætning
> With ActiveDocument.PageSetup
> .TopMargin = CentimetersToPoints(4.5)
> .BottomMargin = CentimetersToPoints(3)
> .LeftMargin = CentimetersToPoints(4)
> .RightMargin = CentimetersToPoints(3)
> .Gutter = CentimetersToPoints(0)
> .HeaderDistance = CentimetersToPoints(1.25)
> .FooterDistance = CentimetersToPoints(1.25)
> .PageWidth = CentimetersToPoints(21)
> .PageHeight = CentimetersToPoints(29.7)
> End With
>
> 'der skrives centreret sidenummer i sidefoden
> Selection.Sections(1).Footers(1).PageNumbers.Add _
> PageNumberAlignment:=wdAlignPageNumberCenter, FirstPage:=True
>
> 'sidehovedet åbnes
> ActiveWindow.ActivePane.View.Type = wdPageView
> ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
>
> 'autoteksten "Eksamen" indsættes i sidehovedet
> NormalTemplate.AutoTextEntries("Eksamen").Insert _
> Where:=Selection.Range, RichText:=True
>
> 'datofeltet og arkfeltet opdateres
> Selection.WholeStory
> Selection.Fields.Update
>
> 'markeringen fjernes og indsætningspunktet placeres lige efter
> 'skolens navn
> Selection.MoveUp Unit:=wdLine, Count:=2
> Selection.MoveRight Unit:=wdCharacter, Count:=24
>
> 'input skrives i sidehovedet startende ved søgeordet "Prøve"
> With Selection
> .Find.Execute FindText:="Prøve", Forward:=True
> .Delete Unit:=wdCharacter, Count:=1
> .TypeText Text:=tekst
> .Find.Execute FindText:=tekst, Forward:=False
> .Font.Bold = True
> '.Font.Color = wdColorRed
> .MoveRight Unit:=wdCharacter, Count:=1
>
> .Find.Execute FindText:="fag:", Forward:=True
> .MoveRight Unit:=wdCharacter, Count:=2
> .TypeText Text:=fag
>
> .Find.Execute FindText:="navn:", Forward:=True
> .MoveRight Unit:=wdCharacter, Count:=2
> .TypeText Text:=navn
>
> .Find.Execute FindText:="klasse:", Forward:=True
> .MoveRight Unit:=wdCharacter, Count:=2
> .TypeText Text:=klasse
>
> .Find.Execute FindText:="elevnr.:", Forward:=True
> .MoveRight Unit:=wdCharacter, Count:=2
> .TypeText Text:=nr
>
> .Find.Execute FindText:="kontrolnr.:", Forward:=True
> .MoveRight Unit:=wdCharacter, Count:=2
> .TypeText Text:=kontrolnr
>
> .MoveUp Unit:=wdScreen, Count:=1
> .MoveRight Unit:=wdCharacter, Count:=24
> End With
>
> 'sidehovedet lukkes
> ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
> Application.ScreenUpdating = True
> End If
> End
>
> 'generel fejlfinding
> fejlfinding:
> tekst = "Der er opstået en fejl"
> MsgBox tekst, vbCritical, " Fejl"
> Application.ScreenUpdating = True
>
> End Sub
>
>



Harald Staff (19-04-2005)
Kommentar
Fra : Harald Staff


Dato : 19-04-05 20:40

Oops. Jeg overså "fejlfinding" som Ulf så korrekt peker på. Den er alt annet
enn fejlfinding. Fjern den.

Beste hilsen Harald

"Harald Staff" <innocent@enron.invalid> skrev i melding
news:02d9e.7301$SL4.157001@news4.e.nsc.no...
> "Virker ikke" er hva jeg kaller en "dansk feilmelding" -i hvert fall fra
> betryggende avstand her oppe i fjellene. Det er i hvert fall 13264 måter
en
> makro ikke kan virke på. Så hvordan vet du eller opplever at den ikke
virker
> ?
>
> Får du en feilmeddelelse ? Blir du i så fall spurt om "End" eller "Debug"
?
> Idet du klikker "Debug" -hva ser du ?
>
> HTH. beste hilsen Harald


> >
> > 'generel fejlfinding
> > fejlfinding:
> > tekst = "Der er opstået en fejl"
> > MsgBox tekst, vbCritical, " Fejl"
> > Application.ScreenUpdating = True
> >
> > End Sub
> >
> >
>
>



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

Månedens bedste
Årets bedste
Sidste års bedste