bonjour à tous,
j'ai un soucis avec l'insertion de filigrane dans un nouveau document
word via
une macro-enregistrée dans word...(voir ci-dessous)
J'aimerai executer cette macro DANS du code vba sous Excel.
une idée ?
Merci beaucoup
José
Sub Macro5()
'
' Macro5 Macro
'
'
Documents.Add Template:="Normal", NewTemplate:lse,
DocumentType:=0
ActiveDocument.Sections(1).Range.Select
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
Selection.HeaderFooter.Shapes.AddTextEffect(PowerPlusWaterMarkObject,
_
"José SISA-6A", "Times New Roman", 1, False, False, 0,
0).Select
Selection.ShapeRange.Name = "PowerPlusWaterMarkObject"
Selection.ShapeRange.TextEffect.NormalizedHeight = False
Selection.ShapeRange.Line.Visible = False
Selection.ShapeRange.Fill.Visible = True
Selection.ShapeRange.Fill.Solid
Selection.ShapeRange.Fill.ForeColor.RGB = RVB(192, 192, 192) '
<<<<==== PB c'est RGB !!!
' il faut corriger à la main et mettre RGB à la place de RVB.
Selection.ShapeRange.Fill.Transparency = 0.5
Selection.ShapeRange.Rotation = 315
Selection.ShapeRange.LockAspectRatio = True
Selection.ShapeRange.Height = CentimetersToPoints(3.22)
Selection.ShapeRange.Width = CentimetersToPoints(19.34)
Selection.ShapeRange.WrapFormat.AllowOverlap = True
Selection.ShapeRange.WrapFormat.Side = wdWrapNone
Selection.ShapeRange.WrapFormat.Type = 3
Selection.ShapeRange.RelativeHorizontalPosition = _
wdRelativeVerticalPositionMargin
Selection.ShapeRange.RelativeVerticalPosition = _
wdRelativeVerticalPositionMargin
Selection.ShapeRange.Left = wdShapeCenter
Selection.ShapeRange.Top = wdShapeCenter
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
End Sub
bonjour à tous,
j'ai un soucis avec l'insertion de filigrane dans un nouveau document
word via
une macro-enregistrée dans word...(voir ci-dessous)
J'aimerai executer cette macro DANS du code vba sous Excel.
une idée ?
Merci beaucoup
José
Sub Macro5()
'
' Macro5 Macro
'
'
Documents.Add Template:="Normal", NewTemplate:=False,
DocumentType:=0
ActiveDocument.Sections(1).Range.Select
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
Selection.HeaderFooter.Shapes.AddTextEffect(PowerPlusWaterMarkObject,
_
"José SISA-6A", "Times New Roman", 1, False, False, 0,
0).Select
Selection.ShapeRange.Name = "PowerPlusWaterMarkObject"
Selection.ShapeRange.TextEffect.NormalizedHeight = False
Selection.ShapeRange.Line.Visible = False
Selection.ShapeRange.Fill.Visible = True
Selection.ShapeRange.Fill.Solid
Selection.ShapeRange.Fill.ForeColor.RGB = RVB(192, 192, 192) '
<<<<==== PB c'est RGB !!!
' il faut corriger à la main et mettre RGB à la place de RVB.
Selection.ShapeRange.Fill.Transparency = 0.5
Selection.ShapeRange.Rotation = 315
Selection.ShapeRange.LockAspectRatio = True
Selection.ShapeRange.Height = CentimetersToPoints(3.22)
Selection.ShapeRange.Width = CentimetersToPoints(19.34)
Selection.ShapeRange.WrapFormat.AllowOverlap = True
Selection.ShapeRange.WrapFormat.Side = wdWrapNone
Selection.ShapeRange.WrapFormat.Type = 3
Selection.ShapeRange.RelativeHorizontalPosition = _
wdRelativeVerticalPositionMargin
Selection.ShapeRange.RelativeVerticalPosition = _
wdRelativeVerticalPositionMargin
Selection.ShapeRange.Left = wdShapeCenter
Selection.ShapeRange.Top = wdShapeCenter
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
End Sub
bonjour à tous,
j'ai un soucis avec l'insertion de filigrane dans un nouveau document
word via
une macro-enregistrée dans word...(voir ci-dessous)
J'aimerai executer cette macro DANS du code vba sous Excel.
une idée ?
Merci beaucoup
José
Sub Macro5()
'
' Macro5 Macro
'
'
Documents.Add Template:="Normal", NewTemplate:lse,
DocumentType:=0
ActiveDocument.Sections(1).Range.Select
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
Selection.HeaderFooter.Shapes.AddTextEffect(PowerPlusWaterMarkObject,
_
"José SISA-6A", "Times New Roman", 1, False, False, 0,
0).Select
Selection.ShapeRange.Name = "PowerPlusWaterMarkObject"
Selection.ShapeRange.TextEffect.NormalizedHeight = False
Selection.ShapeRange.Line.Visible = False
Selection.ShapeRange.Fill.Visible = True
Selection.ShapeRange.Fill.Solid
Selection.ShapeRange.Fill.ForeColor.RGB = RVB(192, 192, 192) '
<<<<==== PB c'est RGB !!!
' il faut corriger à la main et mettre RGB à la place de RVB.
Selection.ShapeRange.Fill.Transparency = 0.5
Selection.ShapeRange.Rotation = 315
Selection.ShapeRange.LockAspectRatio = True
Selection.ShapeRange.Height = CentimetersToPoints(3.22)
Selection.ShapeRange.Width = CentimetersToPoints(19.34)
Selection.ShapeRange.WrapFormat.AllowOverlap = True
Selection.ShapeRange.WrapFormat.Side = wdWrapNone
Selection.ShapeRange.WrapFormat.Type = 3
Selection.ShapeRange.RelativeHorizontalPosition = _
wdRelativeVerticalPositionMargin
Selection.ShapeRange.RelativeVerticalPosition = _
wdRelativeVerticalPositionMargin
Selection.ShapeRange.Left = wdShapeCenter
Selection.ShapeRange.Top = wdShapeCenter
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
End Sub
Alfred WALLACE a écrit, le 14/06/2011 11:26 :
> bonjour à tous,
> j'ai un soucis avec l'insertion de filigrane dans un nouveau document
> word via
> une macro-enregistrée dans word...(voir ci-dessous)
> J'aimerai executer cette macro DANS du code vba sous Excel.
> une idée ?
> Merci beaucoup
> José
> Sub Macro5()
> '
> ' Macro5 Macro
> '
> '
> Documents.Add Template:="Normal", NewTemplate:lse,
> DocumentType:=0
> ActiveDocument.Sections(1).Range.Select
> ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageH eader
> Selection.HeaderFooter.Shapes.AddTextEffect(PowerPlusWaterMarkObject,
> _
> "José SISA-6A", "Times New Roman", 1, False, False , 0,
> 0).Select
> Selection.ShapeRange.Name = "PowerPlusWaterMarkObject"
> Selection.ShapeRange.TextEffect.NormalizedHeight = False
> Selection.ShapeRange.Line.Visible = False
> Selection.ShapeRange.Fill.Visible = True
> Selection.ShapeRange.Fill.Solid
> Selection.ShapeRange.Fill.ForeColor.RGB = RVB(192, 192, 19 2) '
> <<<<==== PB c'est RGB !!!
> ' il faut corriger à la main et mettre RGB à la place de RVB.
> Selection.ShapeRange.Fill.Transparency = 0.5
> Selection.ShapeRange.Rotation = 315
> Selection.ShapeRange.LockAspectRatio = True
> Selection.ShapeRange.Height = CentimetersToPoints(3.22)
> Selection.ShapeRange.Width = CentimetersToPoints(19.34)
> Selection.ShapeRange.WrapFormat.AllowOverlap = True
> Selection.ShapeRange.WrapFormat.Side = wdWrapNone
> Selection.ShapeRange.WrapFormat.Type = 3
> Selection.ShapeRange.RelativeHorizontalPosition = _
> wdRelativeVerticalPositionMargin
> Selection.ShapeRange.RelativeVerticalPosition = _
> wdRelativeVerticalPositionMargin
> Selection.ShapeRange.Left = wdShapeCenter
> Selection.ShapeRange.Top = wdShapeCenter
> ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
> End Sub
Bonjour,
Donc, la macro fonctionne bien, et la question est de la lancer depuis
une autre application, c'est bien ça ?
Au fil du temps ont existé trois solutions, celle qu'on utilise de
préférence, maintenant, est plutôt DDE, pour Dynamic Data Exchange. En
cherchant ces trois lettres tu vas trouver une abondante documentation,
dont des choses claires et d'autres moins.
La gymnastique est de trouver dans la documentation d'une des deux
applications ce que tu ne trouves pas dans celle de l'autre, en espéran t
travailler avec des versions installées avec une documentation
suffisamment complète.
La première chose est de déclarer un objet Application Word, et un ob jet
Document, et les initialiser.
Il y a deux façons de procéder, en lien précoce ou en lien tardif, comme
ça a été mis sur pied par des Américains on a assez tendance à utiliser
les termes anglo-saxons, donc Early Binding, et Late Binding.
Le Late Binding est utilisé dans des cas où on ne réussit pas à u tiliser
l'autre, ou des cas où les ressources ne sont pas disponibles au moment
du développement. Les objets sont déclarés en tant que ... Object.
Dim appWord As Object
Set appWord = GetObject("Application.Word")
'dans le cas où Word est ouvert
ou
Set appWord = CreateObject("Application.Word")
'dans le cas où Word doit être ouvert
Attention, c'est quelque chose que je cite de mémoire. L'un des deux
prend un deuxième argument, si je ne m'abuse le deuxième, avec le che min
du document. Dans le cas d'un script on met l'objet Script devant
GetObject ou CreateObject.
Ne pas hésiter à chercher la documentation sur GetObject et sur
CreateObject.
Dans le cas du Early Binding, la première chose à faire est de décl arer
la référence. Aller dans un module, puis dans le menu Outils, appeler la
commande Références. Dans la boîte de dialogue, cocher l'applicatio n
visée, en l'occurrence Microsoft Word, ou Microsoft Office, trouver le
bon intitulé, cocher la case devant, valider. Il se peut qu'un peu de
tâtonnement soit nécessaire. Si on a sélectionné une référenc e qui n'est
pas la bonne, revenir dans Outils Références, décocher la référ ence
inutile, et cocher la bonne, ou une dont on suppose qu'elle est la bonne.
L'explorateur d'objets permet de se rendre compte des objets disponibles
dans la référence qu'on vient de déclarer, et ainsi de s'assurer qu 'on
s'est bien adressé à la bonne référence, plutôt qu'une dont le nom
ressemble.
Dans un certain nombre de versions, l'explorateur d'objets s'ouvre, dans
l'environnement de développement, avec la touche F2.
Dans Word on doit au moins trouver les méthodes Application et Document ,
qui retournent des objets.
L'étape suivante consiste à déclarer les objets, et les initialiser .
Dim appWord As new Word.Application
Dim appDoc As Word.Document
Set appDoc = appWord.ActiveDocument
Attention, pour l'application j'ai mis new, ce qui va ouvrir
l'application Word, de façon invisible à l'écran. On peut s'en rend re
compte en appelant le gestionnaire des tâches par Ctrl Alt Suppresion,
on aura une ligne avec Word.
Pour le document, en revanche, je n'ai pas mis new, la ligne Dim ne fait
que déclarer l'objet document, il est initialisé à la ligne suivant e,
avec l'instruction Set.
Ensuite chacun des objets appelés dans la macro doit se référer à l'un
de ces objets
appWord.Selection
par exemple.
L'avantage du Early Binding sur le Late Binding, est qu'on dispose de ce
que Microsoft appelle l'Intellisense, c'est-à-dire qu'en tapant le nom
d'un objet suivi d'un point, on voit apparaître la liste de ses membres ,
c'est-à-dire ses propriétés et méthodes. Donc, après déclar é appWord
comme Word.Application, lorsqu'on tape appWord. on voit apparaître une
liste, lorsqu'on tape Selection, à chaque lettre la liste se restreint,
jusqu'à ce qu'il suffise de taper Entrée pour sélectionner le mot a ctif.
Une chose à avoir à l'esprit : par défaut, une application ouverte par
DDE n'apparaît pas à l'écran. Si on veut que l'utilisateur la voie, il
faut le demander explicitement
appWord.Visible = true
Si jamais l'exécution de la macro qu'on teste est interrompue en cours
de route, et que l'instruction ci-dessus n'a pas été exécutée, no us
avons une application Word d'ouverte, et non visible. Si l'objet n'est
plus reconnu, il faut penser à passer par le gestionnaire des tâches
(Ctrl Alt Suppression) pour fermer l'application.
Voilà déjà de quoi partir à la découverte ...
S'agissant d'une macro déjà développée dans Word, son nom va bien
apparaître quelque part dans l'explorateur d'objets, ce qui va permettr e
de visualiser depuis quel objet l'appeler.
Alfred WALLACE a écrit, le 14/06/2011 11:26 :
> bonjour à tous,
> j'ai un soucis avec l'insertion de filigrane dans un nouveau document
> word via
> une macro-enregistrée dans word...(voir ci-dessous)
> J'aimerai executer cette macro DANS du code vba sous Excel.
> une idée ?
> Merci beaucoup
> José
> Sub Macro5()
> '
> ' Macro5 Macro
> '
> '
> Documents.Add Template:="Normal", NewTemplate:=False,
> DocumentType:=0
> ActiveDocument.Sections(1).Range.Select
> ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageH eader
> Selection.HeaderFooter.Shapes.AddTextEffect(PowerPlusWaterMarkObject,
> _
> "José SISA-6A", "Times New Roman", 1, False, False , 0,
> 0).Select
> Selection.ShapeRange.Name = "PowerPlusWaterMarkObject"
> Selection.ShapeRange.TextEffect.NormalizedHeight = False
> Selection.ShapeRange.Line.Visible = False
> Selection.ShapeRange.Fill.Visible = True
> Selection.ShapeRange.Fill.Solid
> Selection.ShapeRange.Fill.ForeColor.RGB = RVB(192, 192, 19 2) '
> <<<<==== PB c'est RGB !!!
> ' il faut corriger à la main et mettre RGB à la place de RVB.
> Selection.ShapeRange.Fill.Transparency = 0.5
> Selection.ShapeRange.Rotation = 315
> Selection.ShapeRange.LockAspectRatio = True
> Selection.ShapeRange.Height = CentimetersToPoints(3.22)
> Selection.ShapeRange.Width = CentimetersToPoints(19.34)
> Selection.ShapeRange.WrapFormat.AllowOverlap = True
> Selection.ShapeRange.WrapFormat.Side = wdWrapNone
> Selection.ShapeRange.WrapFormat.Type = 3
> Selection.ShapeRange.RelativeHorizontalPosition = _
> wdRelativeVerticalPositionMargin
> Selection.ShapeRange.RelativeVerticalPosition = _
> wdRelativeVerticalPositionMargin
> Selection.ShapeRange.Left = wdShapeCenter
> Selection.ShapeRange.Top = wdShapeCenter
> ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
> End Sub
Bonjour,
Donc, la macro fonctionne bien, et la question est de la lancer depuis
une autre application, c'est bien ça ?
Au fil du temps ont existé trois solutions, celle qu'on utilise de
préférence, maintenant, est plutôt DDE, pour Dynamic Data Exchange. En
cherchant ces trois lettres tu vas trouver une abondante documentation,
dont des choses claires et d'autres moins.
La gymnastique est de trouver dans la documentation d'une des deux
applications ce que tu ne trouves pas dans celle de l'autre, en espéran t
travailler avec des versions installées avec une documentation
suffisamment complète.
La première chose est de déclarer un objet Application Word, et un ob jet
Document, et les initialiser.
Il y a deux façons de procéder, en lien précoce ou en lien tardif, comme
ça a été mis sur pied par des Américains on a assez tendance à utiliser
les termes anglo-saxons, donc Early Binding, et Late Binding.
Le Late Binding est utilisé dans des cas où on ne réussit pas à u tiliser
l'autre, ou des cas où les ressources ne sont pas disponibles au moment
du développement. Les objets sont déclarés en tant que ... Object.
Dim appWord As Object
Set appWord = GetObject("Application.Word")
'dans le cas où Word est ouvert
ou
Set appWord = CreateObject("Application.Word")
'dans le cas où Word doit être ouvert
Attention, c'est quelque chose que je cite de mémoire. L'un des deux
prend un deuxième argument, si je ne m'abuse le deuxième, avec le che min
du document. Dans le cas d'un script on met l'objet Script devant
GetObject ou CreateObject.
Ne pas hésiter à chercher la documentation sur GetObject et sur
CreateObject.
Dans le cas du Early Binding, la première chose à faire est de décl arer
la référence. Aller dans un module, puis dans le menu Outils, appeler la
commande Références. Dans la boîte de dialogue, cocher l'applicatio n
visée, en l'occurrence Microsoft Word, ou Microsoft Office, trouver le
bon intitulé, cocher la case devant, valider. Il se peut qu'un peu de
tâtonnement soit nécessaire. Si on a sélectionné une référenc e qui n'est
pas la bonne, revenir dans Outils Références, décocher la référ ence
inutile, et cocher la bonne, ou une dont on suppose qu'elle est la bonne.
L'explorateur d'objets permet de se rendre compte des objets disponibles
dans la référence qu'on vient de déclarer, et ainsi de s'assurer qu 'on
s'est bien adressé à la bonne référence, plutôt qu'une dont le nom
ressemble.
Dans un certain nombre de versions, l'explorateur d'objets s'ouvre, dans
l'environnement de développement, avec la touche F2.
Dans Word on doit au moins trouver les méthodes Application et Document ,
qui retournent des objets.
L'étape suivante consiste à déclarer les objets, et les initialiser .
Dim appWord As new Word.Application
Dim appDoc As Word.Document
Set appDoc = appWord.ActiveDocument
Attention, pour l'application j'ai mis new, ce qui va ouvrir
l'application Word, de façon invisible à l'écran. On peut s'en rend re
compte en appelant le gestionnaire des tâches par Ctrl Alt Suppresion,
on aura une ligne avec Word.
Pour le document, en revanche, je n'ai pas mis new, la ligne Dim ne fait
que déclarer l'objet document, il est initialisé à la ligne suivant e,
avec l'instruction Set.
Ensuite chacun des objets appelés dans la macro doit se référer à l'un
de ces objets
appWord.Selection
par exemple.
L'avantage du Early Binding sur le Late Binding, est qu'on dispose de ce
que Microsoft appelle l'Intellisense, c'est-à-dire qu'en tapant le nom
d'un objet suivi d'un point, on voit apparaître la liste de ses membres ,
c'est-à-dire ses propriétés et méthodes. Donc, après déclar é appWord
comme Word.Application, lorsqu'on tape appWord. on voit apparaître une
liste, lorsqu'on tape Selection, à chaque lettre la liste se restreint,
jusqu'à ce qu'il suffise de taper Entrée pour sélectionner le mot a ctif.
Une chose à avoir à l'esprit : par défaut, une application ouverte par
DDE n'apparaît pas à l'écran. Si on veut que l'utilisateur la voie, il
faut le demander explicitement
appWord.Visible = true
Si jamais l'exécution de la macro qu'on teste est interrompue en cours
de route, et que l'instruction ci-dessus n'a pas été exécutée, no us
avons une application Word d'ouverte, et non visible. Si l'objet n'est
plus reconnu, il faut penser à passer par le gestionnaire des tâches
(Ctrl Alt Suppression) pour fermer l'application.
Voilà déjà de quoi partir à la découverte ...
S'agissant d'une macro déjà développée dans Word, son nom va bien
apparaître quelque part dans l'explorateur d'objets, ce qui va permettr e
de visualiser depuis quel objet l'appeler.
Alfred WALLACE a écrit, le 14/06/2011 11:26 :
> bonjour à tous,
> j'ai un soucis avec l'insertion de filigrane dans un nouveau document
> word via
> une macro-enregistrée dans word...(voir ci-dessous)
> J'aimerai executer cette macro DANS du code vba sous Excel.
> une idée ?
> Merci beaucoup
> José
> Sub Macro5()
> '
> ' Macro5 Macro
> '
> '
> Documents.Add Template:="Normal", NewTemplate:lse,
> DocumentType:=0
> ActiveDocument.Sections(1).Range.Select
> ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageH eader
> Selection.HeaderFooter.Shapes.AddTextEffect(PowerPlusWaterMarkObject,
> _
> "José SISA-6A", "Times New Roman", 1, False, False , 0,
> 0).Select
> Selection.ShapeRange.Name = "PowerPlusWaterMarkObject"
> Selection.ShapeRange.TextEffect.NormalizedHeight = False
> Selection.ShapeRange.Line.Visible = False
> Selection.ShapeRange.Fill.Visible = True
> Selection.ShapeRange.Fill.Solid
> Selection.ShapeRange.Fill.ForeColor.RGB = RVB(192, 192, 19 2) '
> <<<<==== PB c'est RGB !!!
> ' il faut corriger à la main et mettre RGB à la place de RVB.
> Selection.ShapeRange.Fill.Transparency = 0.5
> Selection.ShapeRange.Rotation = 315
> Selection.ShapeRange.LockAspectRatio = True
> Selection.ShapeRange.Height = CentimetersToPoints(3.22)
> Selection.ShapeRange.Width = CentimetersToPoints(19.34)
> Selection.ShapeRange.WrapFormat.AllowOverlap = True
> Selection.ShapeRange.WrapFormat.Side = wdWrapNone
> Selection.ShapeRange.WrapFormat.Type = 3
> Selection.ShapeRange.RelativeHorizontalPosition = _
> wdRelativeVerticalPositionMargin
> Selection.ShapeRange.RelativeVerticalPosition = _
> wdRelativeVerticalPositionMargin
> Selection.ShapeRange.Left = wdShapeCenter
> Selection.ShapeRange.Top = wdShapeCenter
> ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
> End Sub
Bonjour,
Donc, la macro fonctionne bien, et la question est de la lancer depuis
une autre application, c'est bien ça ?
Au fil du temps ont existé trois solutions, celle qu'on utilise de
préférence, maintenant, est plutôt DDE, pour Dynamic Data Exchange. En
cherchant ces trois lettres tu vas trouver une abondante documentation,
dont des choses claires et d'autres moins.
La gymnastique est de trouver dans la documentation d'une des deux
applications ce que tu ne trouves pas dans celle de l'autre, en espéran t
travailler avec des versions installées avec une documentation
suffisamment complète.
La première chose est de déclarer un objet Application Word, et un ob jet
Document, et les initialiser.
Il y a deux façons de procéder, en lien précoce ou en lien tardif, comme
ça a été mis sur pied par des Américains on a assez tendance à utiliser
les termes anglo-saxons, donc Early Binding, et Late Binding.
Le Late Binding est utilisé dans des cas où on ne réussit pas à u tiliser
l'autre, ou des cas où les ressources ne sont pas disponibles au moment
du développement. Les objets sont déclarés en tant que ... Object.
Dim appWord As Object
Set appWord = GetObject("Application.Word")
'dans le cas où Word est ouvert
ou
Set appWord = CreateObject("Application.Word")
'dans le cas où Word doit être ouvert
Attention, c'est quelque chose que je cite de mémoire. L'un des deux
prend un deuxième argument, si je ne m'abuse le deuxième, avec le che min
du document. Dans le cas d'un script on met l'objet Script devant
GetObject ou CreateObject.
Ne pas hésiter à chercher la documentation sur GetObject et sur
CreateObject.
Dans le cas du Early Binding, la première chose à faire est de décl arer
la référence. Aller dans un module, puis dans le menu Outils, appeler la
commande Références. Dans la boîte de dialogue, cocher l'applicatio n
visée, en l'occurrence Microsoft Word, ou Microsoft Office, trouver le
bon intitulé, cocher la case devant, valider. Il se peut qu'un peu de
tâtonnement soit nécessaire. Si on a sélectionné une référenc e qui n'est
pas la bonne, revenir dans Outils Références, décocher la référ ence
inutile, et cocher la bonne, ou une dont on suppose qu'elle est la bonne.
L'explorateur d'objets permet de se rendre compte des objets disponibles
dans la référence qu'on vient de déclarer, et ainsi de s'assurer qu 'on
s'est bien adressé à la bonne référence, plutôt qu'une dont le nom
ressemble.
Dans un certain nombre de versions, l'explorateur d'objets s'ouvre, dans
l'environnement de développement, avec la touche F2.
Dans Word on doit au moins trouver les méthodes Application et Document ,
qui retournent des objets.
L'étape suivante consiste à déclarer les objets, et les initialiser .
Dim appWord As new Word.Application
Dim appDoc As Word.Document
Set appDoc = appWord.ActiveDocument
Attention, pour l'application j'ai mis new, ce qui va ouvrir
l'application Word, de façon invisible à l'écran. On peut s'en rend re
compte en appelant le gestionnaire des tâches par Ctrl Alt Suppresion,
on aura une ligne avec Word.
Pour le document, en revanche, je n'ai pas mis new, la ligne Dim ne fait
que déclarer l'objet document, il est initialisé à la ligne suivant e,
avec l'instruction Set.
Ensuite chacun des objets appelés dans la macro doit se référer à l'un
de ces objets
appWord.Selection
par exemple.
L'avantage du Early Binding sur le Late Binding, est qu'on dispose de ce
que Microsoft appelle l'Intellisense, c'est-à-dire qu'en tapant le nom
d'un objet suivi d'un point, on voit apparaître la liste de ses membres ,
c'est-à-dire ses propriétés et méthodes. Donc, après déclar é appWord
comme Word.Application, lorsqu'on tape appWord. on voit apparaître une
liste, lorsqu'on tape Selection, à chaque lettre la liste se restreint,
jusqu'à ce qu'il suffise de taper Entrée pour sélectionner le mot a ctif.
Une chose à avoir à l'esprit : par défaut, une application ouverte par
DDE n'apparaît pas à l'écran. Si on veut que l'utilisateur la voie, il
faut le demander explicitement
appWord.Visible = true
Si jamais l'exécution de la macro qu'on teste est interrompue en cours
de route, et que l'instruction ci-dessus n'a pas été exécutée, no us
avons une application Word d'ouverte, et non visible. Si l'objet n'est
plus reconnu, il faut penser à passer par le gestionnaire des tâches
(Ctrl Alt Suppression) pour fermer l'application.
Voilà déjà de quoi partir à la découverte ...
S'agissant d'une macro déjà développée dans Word, son nom va bien
apparaître quelque part dans l'explorateur d'objets, ce qui va permettr e
de visualiser depuis quel objet l'appeler.
Bonjour Gloops,
oui, la macro fonctionne bien sous word, ET elle s'execute BIEN
sous excel (en vba), sans messages d'erreur.
Par contre, sous excel, la page word reste blanche...
une idée ?
Merci
José
Bonjour Gloops,
oui, la macro fonctionne bien sous word, ET elle s'execute BIEN
sous excel (en vba), sans messages d'erreur.
Par contre, sous excel, la page word reste blanche...
une idée ?
Merci
José
Bonjour Gloops,
oui, la macro fonctionne bien sous word, ET elle s'execute BIEN
sous excel (en vba), sans messages d'erreur.
Par contre, sous excel, la page word reste blanche...
une idée ?
Merci
José