Vraag : Het werk binnen de kopbal dynamisch terwijl het werken met vormen in de kopbal

Hallo experts

I am benieuwd is die hoe ik mijn hieronder code kan verbeteren. Ik moet een bestaande genoemde vorm in de kopbal van mijn document opnemen, het schrappen, een nieuw beeld doen opnemen en resize en/>My code this.

w.View.SeekView = wdSeekMainDocument om uit de kopbal te krijgen maar het errors.

How kan ik de code hieronder herschrijven ga ik zo fysisch niet de kopbal met mijn code in, d.w.z. werk ik in de kopbal dynamically.



" codeBody "
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
Sub InsertLogoDialog2 ()
Op Fout GoTo errInsert
Schemerige oDialog als Word.Dialog, lngPictureSize Dubbel
 Reeks oDialog = Dialogen (wdDialogInsertPicture)
 Schemerige pic als InlineShape
 
  Met oDialog
    . Vertoning
    
Application.ScreenUpdating = Vals


    ActiveDocument.Sections (1). Kopballen (wdHeaderFooterFirstPage). Vormen („LogoA“). Selecteer
    Selection.Delete

    
    Als. Naam <> "" toen
        
    Vastgesteld pic = ActiveDocument.Sections (1). Kopballen (wdHeaderFooterFirstPage). Range.InlineShapes.AddPicture (FileName: =.Name, _
            LinkToFile: =False, _
            SaveWithDocument: =True, Waaier: =Selection.Range)
            
            Als pic. Hoogte > pic. Breedte toen
                    Met pic
                        pic.LockAspectRatio = msoTrue
                        Als pic. Hoogte > (16.1) toen pic MillimetersToPoints. Hoogte = MillimetersToPoints (16.1)
                        
                    Eind met
            Anders
                    Met pic
                        pic.LockAspectRatio = msoTrue
                        
                        Als pic. Breedte > (100) toen pic MillimetersToPoints. Breedte = MillimetersToPoints (50)
                        
                    Eind met
            Eind als
            
            pic.ConvertToShape.Select
            
                Met Selection.ShapeRange
                . Naam = „LogoA“
                .WrapFormat.Type = wdWrapTight
                . Linkerzijde = CentimetersToPoints (0.98)
                .RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
                . Bovenkant = CentimetersToPoints (0.98)
                .RelativeVerticalPosition = wdRelativeVerticalPositionPage
                Eind met
                     
   Eind als
   
  'fout hier
  ActiveDocument.ActiveWindow.View.SeekView = wdSeekMainDocument
   
   Application.ScreenUpdating = Waar
   
  Eind met
 Reeks oDialog = niets
 Sub van de uitgang
errInsert:
 MsgBox Err.Description, „Fout: Het Beeld van het tussenvoegsel“
Sub van het eind

Antwoord : Het werk binnen de kopbal dynamisch terwijl het werken met vormen in de kopbal

U kunt met direct de voorwerpen van de Vorm werken. Er is geen behoefte om dan de Selectie te selecteren en te gebruiken.

Ook, kunt u een Vorm toevoegen. U moet niet een gealigneerde vorm toevoegen en dan het omzetten.

Om me te helpen om de code te lezen gemakkelijker, heb ik de heel wat verticaal uit elkaar plaatsend verwijderd en het kartelen gestandaardiseerd.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
Sub InsertLogoDialog2 ()
Schemerige oDialog als Word.Dialog, lngPictureSize Dubbel
Schemerige pic als Vorm
Schemerige rng als Waaier

Op Fout GoTo errInsert
Reeks oDialog = Dialogen (wdDialogInsertPicture)

Als oDialog.Display = -1 dan 'niet gedrukt annuleert
    Application.ScreenUpdating = Vals
    Vastgesteld pic = ActiveDocument.Sections (1). Kopballen (wdHeaderFooterFirstPage). Vormen („LogoA“)
    Reeks rng = pic. Anker
    pic. Schrap
    
    Plaats pic = ActiveDocument.Shapes.AddPicture (FileName: =oDialog.Name, _
          LinkToFile: =False, _
          SaveWithDocument: =True, Anker: =rng)
    
    Met pic
        .LockAspectRatio = msoTrue
        Als. Hoogte >. Breedte toen
            Als. Hoogte > MillimetersToPoints (16.1) toen
                . Hoogte = MillimetersToPoints (16.1)
            Eind als
        Anders
            Als. Breedte > MillimetersToPoints (100) toen
                . Breedte = MillimetersToPoints (50)
            Eind als
        Eind als
        . Naam = „LogoA“
        .WrapFormat.Type = wdWrapTight
        . Linkerzijde = CentimetersToPoints (0.98)
        .RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
        . Bovenkant = CentimetersToPoints (0.98)
        .RelativeVerticalPosition = wdRelativeVerticalPositionPage
    Eind met

Eind als

'fout hier (niet meer noodzakelijke lijn)
'ActiveDocument.ActiveWindow.View.SeekView = wdSeekMainDocument
Application.ScreenUpdating = Waar

Reeks oDialog = niets
Sub van de uitgang
errInsert:
 MsgBox Err.Description, „Fout: Het Beeld van het tussenvoegsel“
Sub van het eind
Andere oplossingen  
 
programming4us programming4us