Pergunta : Trabalhar dentro do encabeçamento dinâmicamente enquanto trabalhando com formas no encabeçamento

Olá! experts

I am que quer saber como eu posso melhorar meu código abaixo. Eu preciso de pegarar uma forma nomeada existente no encabeçamento de meu original, para suprimir d, introduzir uma imagem nova e resize e o código da posição this.

My abaixo fazem esta, mas quando o código é finished mim terminam-na acima ainda no encabeçamento do original. Eu tentei adicionar ActiveDocument.ActiveWindow.View.SeekView = wdSeekMainDocument a sair do encabeçamento mas errors.

How pode mim reescreve o código abaixo assim que eu não entro no encabeçamento fisicamente com meu código, IE que eu trabalho no

do encabeçamento dynamically.

class= > " desobstruído " do
> do " codeSnippet " do class= do
class= " lineNumbers " do
class= do
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 notpretty InsertLogoDialog2 " do class= " do id= " codeSnippet830299 do
 então
        
    Ajustar PIC = ActiveDocument.Sections (1). Encabeçamentos (wdHeaderFooterFirstPage). Range.InlineShapes.AddPicture (nome de arquivo: =.Name, _
            LinkToFile: =False, _
            SaveWithDocument: =True, escala: =Selection.Range)
            
            Se PIC. Altura > PIC. Largura então
                    Com PIC
                        pic.LockAspectRatio = msoTrue
                        Se PIC. PIC da altura > do MillimetersToPoints (16.1) então. Altura = MillimetersToPoints (16.1)
                        
                    Extremidade com
            Mais
                    Com PIC
                        pic.LockAspectRatio = msoTrue
                        
                        Se PIC. PIC da largura > do MillimetersToPoints (100) então. Largura = MillimetersToPoints (50)
                        
                    Extremidade com
            Terminar se
            
            pic.ConvertToShape.Select
            
                Com Selection.ShapeRange
                . Nome = “LogoA”
                .WrapFormat.Type = wdWrapTight
                . Esquerda = CentimetersToPoints (0.98)
                .RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
                . Parte superior = CentimetersToPoints (0.98)
                .RelativeVerticalPosition = wdRelativeVerticalPositionPage
                Extremidade com
                     
   Terminar se
   
  'erro aqui
  ActiveDocument.ActiveWindow.View.SeekView = wdSeekMainDocument
   
   Application.ScreenUpdating = retificam
   
  Extremidade com
 Ajustar o oDialog = nada
 Retirar o submarino
errInsert:
 MsgBox Err.Description, “erro: Introduzir o retrato”
Terminar o submarino
class= do

Resposta : Trabalhar dentro do encabeçamento dinâmicamente enquanto trabalhando com formas no encabeçamento

Você pode trabalhar com objetos da forma diretamente. Não há nenhuma necessidade de selecionar e usar então a seleção.

Também, você pode adicionar uma forma. Você não tem que adicionar uma forma inline e então convertê-la.

Para ajudar-me a ler mais facilmente o código, eu removi muito afastamento vertical e estandardizei o recorte.
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:
InsertLogoDialog2 secundários ()
Escurecer o oDialog como Word.Dialog, lngPictureSize como o dobro
Escurecer o PIC como a forma
Escurecer o rng como a escala

No errInsert empreendedores do erro
Ajustar o oDialog = os diálogos (o wdDialogInsertPicture)

Se oDialog.Display = -1 então 'cancelam não pressionado
    Application.ScreenUpdating = falso
    Ajustar PIC = ActiveDocument.Sections (1). Encabeçamentos (wdHeaderFooterFirstPage). Formas (“LogoA”)
    Ajustar o rng = o PIC. Escora
    PIC. Supressão
    
    Ajustar PIC = ActiveDocument.Shapes.AddPicture (nome de arquivo: =oDialog.Name, _
          LinkToFile: =False, _
          SaveWithDocument: =True, escora: =rng)
    
    Com PIC
        .LockAspectRatio = msoTrue
        Se. Altura >. Largura então
            Se. Altura > MillimetersToPoints (16.1) então
                . Altura = MillimetersToPoints (16.1)
            Terminar se
        Mais
            Se. Largura > MillimetersToPoints (100) então
                . Largura = MillimetersToPoints (50)
            Terminar se
        Terminar se
        . Nome = “LogoA”
        .WrapFormat.Type = wdWrapTight
        . Esquerda = CentimetersToPoints (0.98)
        .RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
        . Parte superior = CentimetersToPoints (0.98)
        .RelativeVerticalPosition = wdRelativeVerticalPositionPage
    Extremidade com

Terminar se

'erro aqui (linha já não necessária)
'ActiveDocument.ActiveWindow.View.SeekView = wdSeekMainDocument
Application.ScreenUpdating = retificam

Ajustar o oDialog = nada
Retirar o submarino
errInsert:
 MsgBox Err.Description, “erro: Introduzir o retrato”
Terminar o submarino
Outras soluções  
 
programming4us programming4us