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