En ouvrant une source de donn=E9es (Excel) comme suit sous Word 2003 pour=
=20
cr=E9er une fusion (pour pr=E9senter automatiquement chaque enregistremen=
t=20
sur une page), je me ramasse une erreur 5121 lors de l'ouverture de=20
fichier sur l'instruction Merge, on me propose de v=E9rifier les=20
autorisations du fichier/lecteur, v=E9rifier que la m=E9moire et l'espace=
=20
disque sont suffisants, ou ouvrir le fichier avec le convertisseur=20
R=E9cup=E9ration de texte.
Si je fais la m=EAme chose =E0 la main la fusion se fait bien.
J'imagine que j'ai commis une bourde ?
Pour la s=E9lection du fichier par l'utilisateur, serait-ce une meilleure=
=20
id=E9e de passer par l'API ? =E7a a priori =E7a marche, mais si Microsoft=
=20
s'est donn=E9 le mal de fournir des bo=EEtes de dialogue dans Word,=20
j'imagine que la moindre des choses avant de faire appel aux API est de=20
v=E9rifier que =E7a apporte vraiment un plus. C'est gentil wdDialogFileOp=
en,=20
mais =E7a ouvre le fichier, plut=F4t que de le s=E9lectionner. Ou j'ai ou=
bli=E9=20
une astuce ?
Public Sub CreationFusion()
Dim strCheminFichier As String
strCheminFichier =3D SelFichier()
ActiveDocument.Merge FileName:=3DstrCheminFichier
End Sub
Public Function SelFichier()
Dialogs(wdDialogFileOpen).Show
SelFichier =3D Application.ActiveDocument.Path
ActiveDocument.Close
End Function
regardez FileDialog(msoFileDialogFilePicker) qui marche dans Word, pas dans toutes les applications.
Ah, ben la voilà, la réponse :) Je regarde ça demain, merci.
Dans les autres applications je fais appel à l'API, normal, les autres applications n'ont pas de boîte de dialogue intégrée.
Geo
Bonjour
Dans les autres applications je fais appel à l'API, normal, les autres applications n'ont pas de boîte de dialogue intégrée.
Oh mais non, je lance un word qui ne fais que ça : choisir le fichier. Exemple (de choix de plusieurs dossiers) dans Outlook :
Sub PrépareListePublipostage() Dim i As Integer Dim appWord As New Word.Application Dim appWordNouvelle As Boolean Dim dialFichier As FileDialog On Error Resume Next Set appWord = GetObject(, "Word.Application") If Err <> 0 Then Set appWord = CreateObject("Word.Application") appWordNouvelle = True Else appWordNouvelle = False End If On Error GoTo 0 i = -1 ReDim publipostagePJ(0) Do ' Boite de dialogue de choix de fichiers Set dialFichier = appWord.FileDialog(msoFileDialogFilePicker) With dialFichier .Title = "Choisissez des pièces à joindre ou cliquer sur Annuler" If .Show = 0 Then Exit Do End With For j = 1 To dialFichier.SelectedItems.count i = i + 1 ReDim Preserve publipostagePJ(i) publipostagePJ(i) = dialFichier.SelectedItems(j) Next j Loop If appWordNouvelle Then appWord.Quit End If Set appWord = Nothing
etc
-- A+
Bonjour
Dans les autres applications je fais appel à l'API, normal, les autres applications
n'ont pas de boîte de dialogue intégrée.
Oh mais non, je lance un word qui ne fais que ça : choisir le fichier.
Exemple (de choix de plusieurs dossiers) dans Outlook :
Sub PrépareListePublipostage()
Dim i As Integer
Dim appWord As New Word.Application
Dim appWordNouvelle As Boolean
Dim dialFichier As FileDialog
On Error Resume Next
Set appWord = GetObject(, "Word.Application")
If Err <> 0 Then
Set appWord = CreateObject("Word.Application")
appWordNouvelle = True
Else
appWordNouvelle = False
End If
On Error GoTo 0
i = -1
ReDim publipostagePJ(0)
Do
' Boite de dialogue de choix de fichiers
Set dialFichier = appWord.FileDialog(msoFileDialogFilePicker)
With dialFichier
.Title = "Choisissez des pièces à joindre ou cliquer sur Annuler"
If .Show = 0 Then Exit Do
End With
For j = 1 To dialFichier.SelectedItems.count
i = i + 1
ReDim Preserve publipostagePJ(i)
publipostagePJ(i) = dialFichier.SelectedItems(j)
Next j
Loop
If appWordNouvelle Then
appWord.Quit
End If
Set appWord = Nothing
Dans les autres applications je fais appel à l'API, normal, les autres applications n'ont pas de boîte de dialogue intégrée.
Oh mais non, je lance un word qui ne fais que ça : choisir le fichier. Exemple (de choix de plusieurs dossiers) dans Outlook :
Sub PrépareListePublipostage() Dim i As Integer Dim appWord As New Word.Application Dim appWordNouvelle As Boolean Dim dialFichier As FileDialog On Error Resume Next Set appWord = GetObject(, "Word.Application") If Err <> 0 Then Set appWord = CreateObject("Word.Application") appWordNouvelle = True Else appWordNouvelle = False End If On Error GoTo 0 i = -1 ReDim publipostagePJ(0) Do ' Boite de dialogue de choix de fichiers Set dialFichier = appWord.FileDialog(msoFileDialogFilePicker) With dialFichier .Title = "Choisissez des pièces à joindre ou cliquer sur Annuler" If .Show = 0 Then Exit Do End With For j = 1 To dialFichier.SelectedItems.count i = i + 1 ReDim Preserve publipostagePJ(i) publipostagePJ(i) = dialFichier.SelectedItems(j) Next j Loop If appWordNouvelle Then appWord.Quit End If Set appWord = Nothing
etc
-- A+
Gloops
Geo a écrit, le 15/11/2010 07:48 :
Bonjour
Dans les autres applications je fais appel à l'API, normal, les autr es applications n'ont pas de boîte de dialogue intégrée.
Oh mais non, je lance un word qui ne fais que ça : choisir le fichier . Exemple (de choix de plusieurs dossiers) dans Outlook :
Sub PrépareListePublipostage() Dim i As Integer Dim appWord As New Word.Application Dim appWordNouvelle As Boolean Dim dialFichier As FileDialog On Error Resume Next Set appWord = GetObject(, "Word.Application") If Err <> 0 Then Set appWord = CreateObject("Word.Application") appWordNouvelle = True Else appWordNouvelle = False End If On Error GoTo 0 i = -1 ReDim publipostagePJ(0) Do ' Boite de dialogue de choix de fichiers Set dialFichier = appWord.FileDialog(msoFileDialogFilePicker) With dialFichier .Title = "Choisissez des pièces à joindre ou cliquer sur Annuler" If .Show = 0 Then Exit Do End With For j = 1 To dialFichier.SelectedItems.count i = i + 1 ReDim Preserve publipostagePJ(i) publipostagePJ(i) = dialFichier.SelectedItems(j) Next j Loop If appWordNouvelle Then appWord.Quit End If Set appWord = Nothing
etc
Un temps on lançait Excel, pour ça, vu qu'Excel a proposé une boî te de dialogue de sélection de fichier avant Word.
Enfin quand même, un module qui appelle directement l'API, ça doit qu and même être plus léger, comme formule, non ?
Geo a écrit, le 15/11/2010 07:48 :
Bonjour
Dans les autres applications je fais appel à l'API, normal, les autr es
applications n'ont pas de boîte de dialogue intégrée.
Oh mais non, je lance un word qui ne fais que ça : choisir le fichier .
Exemple (de choix de plusieurs dossiers) dans Outlook :
Sub PrépareListePublipostage()
Dim i As Integer
Dim appWord As New Word.Application
Dim appWordNouvelle As Boolean
Dim dialFichier As FileDialog
On Error Resume Next
Set appWord = GetObject(, "Word.Application")
If Err <> 0 Then
Set appWord = CreateObject("Word.Application")
appWordNouvelle = True
Else
appWordNouvelle = False
End If
On Error GoTo 0
i = -1
ReDim publipostagePJ(0)
Do
' Boite de dialogue de choix de fichiers
Set dialFichier = appWord.FileDialog(msoFileDialogFilePicker)
With dialFichier
.Title = "Choisissez des pièces à joindre ou cliquer sur Annuler"
If .Show = 0 Then Exit Do
End With
For j = 1 To dialFichier.SelectedItems.count
i = i + 1
ReDim Preserve publipostagePJ(i)
publipostagePJ(i) = dialFichier.SelectedItems(j)
Next j
Loop
If appWordNouvelle Then
appWord.Quit
End If
Set appWord = Nothing
etc
Un temps on lançait Excel, pour ça, vu qu'Excel a proposé une boî te de
dialogue de sélection de fichier avant Word.
Enfin quand même, un module qui appelle directement l'API, ça doit qu and
même être plus léger, comme formule, non ?
Dans les autres applications je fais appel à l'API, normal, les autr es applications n'ont pas de boîte de dialogue intégrée.
Oh mais non, je lance un word qui ne fais que ça : choisir le fichier . Exemple (de choix de plusieurs dossiers) dans Outlook :
Sub PrépareListePublipostage() Dim i As Integer Dim appWord As New Word.Application Dim appWordNouvelle As Boolean Dim dialFichier As FileDialog On Error Resume Next Set appWord = GetObject(, "Word.Application") If Err <> 0 Then Set appWord = CreateObject("Word.Application") appWordNouvelle = True Else appWordNouvelle = False End If On Error GoTo 0 i = -1 ReDim publipostagePJ(0) Do ' Boite de dialogue de choix de fichiers Set dialFichier = appWord.FileDialog(msoFileDialogFilePicker) With dialFichier .Title = "Choisissez des pièces à joindre ou cliquer sur Annuler" If .Show = 0 Then Exit Do End With For j = 1 To dialFichier.SelectedItems.count i = i + 1 ReDim Preserve publipostagePJ(i) publipostagePJ(i) = dialFichier.SelectedItems(j) Next j Loop If appWordNouvelle Then appWord.Quit End If Set appWord = Nothing
etc
Un temps on lançait Excel, pour ça, vu qu'Excel a proposé une boî te de dialogue de sélection de fichier avant Word.
Enfin quand même, un module qui appelle directement l'API, ça doit qu and même être plus léger, comme formule, non ?
Geo
Bonjour
Un temps on lançait Excel, pour ça, vu qu'Excel a proposé une boîte de dialogue de sélection de fichier avant Word.
Enfin quand même, un module qui appelle directement l'API, ça doit quand même être plus léger, comme formule, non ?
Je ne connais pas l'API qui fait la même chose. Ca dépend aussi de l'usage qu'on en fait.
-- A+
Bonjour
Un temps on lançait Excel, pour ça, vu qu'Excel a proposé une boîte de dialogue de
sélection de fichier avant Word.
Enfin quand même, un module qui appelle directement l'API, ça doit quand même être plus
léger, comme formule, non ?
Je ne connais pas l'API qui fait la même chose.
Ca dépend aussi de l'usage qu'on en fait.
Un temps on lançait Excel, pour ça, vu qu'Excel a proposé une boîte de dialogue de sélection de fichier avant Word.
Enfin quand même, un module qui appelle directement l'API, ça doit quand même être plus léger, comme formule, non ?
Je ne connais pas l'API qui fait la même chose. Ca dépend aussi de l'usage qu'on en fait.
-- A+
Gloops
Geo a écrit, le 16/11/2010 07:03 :
Bonjour
Un temps on lançait Excel, pour ça, vu qu'Excel a proposé une bo îte de dialogue de sélection de fichier avant Word.
Enfin quand même, un module qui appelle directement l'API, ça doit quand même être plus léger, comme formule, non ?
Je ne connais pas l'API qui fait la même chose. Ca dépend aussi de l'usage qu'on en fait.
C'est sûr.
On trouve un exemple là (site dédié à Access, mais on peut utilis er l'exemple ailleurs aussi), je ne suis pas absolument certain que ça soi t le plus digeste, mais l'idée est de le copier dans un module et lire ce qui est écrit en dessous, ça c'est gérable, et puis après on creu se tranquillement à son rythme si on aime bien comprendre ce qu'on utilise . ça peut être sympa de comprendre l'articulation des infos, ça perme t ensuite de régler comme on le souhaite le titre de la boîte de dialog ue, le répertoire et nom de fichier par défaut ...
J'ai pu afficher la version anglaise sous Firefox, en revanche pour la version française il faut Internet Explorer, c'est un défaut connu du site.
Le "aht" devant les noms de variables, ce n'est pas les initiales de l'auteur, alors ... ça doit être celles de sa petite amie ? :)
Geo a écrit, le 16/11/2010 07:03 :
Bonjour
Un temps on lançait Excel, pour ça, vu qu'Excel a proposé une bo îte de
dialogue de sélection de fichier avant Word.
Enfin quand même, un module qui appelle directement l'API, ça doit
quand même être plus léger, comme formule, non ?
Je ne connais pas l'API qui fait la même chose.
Ca dépend aussi de l'usage qu'on en fait.
C'est sûr.
On trouve un exemple là (site dédié à Access, mais on peut utilis er
l'exemple ailleurs aussi), je ne suis pas absolument certain que ça soi t
le plus digeste, mais l'idée est de le copier dans un module et lire ce
qui est écrit en dessous, ça c'est gérable, et puis après on creu se
tranquillement à son rythme si on aime bien comprendre ce qu'on utilise .
ça peut être sympa de comprendre l'articulation des infos, ça perme t
ensuite de régler comme on le souhaite le titre de la boîte de dialog ue,
le répertoire et nom de fichier par défaut ...
Un temps on lançait Excel, pour ça, vu qu'Excel a proposé une bo îte de dialogue de sélection de fichier avant Word.
Enfin quand même, un module qui appelle directement l'API, ça doit quand même être plus léger, comme formule, non ?
Je ne connais pas l'API qui fait la même chose. Ca dépend aussi de l'usage qu'on en fait.
C'est sûr.
On trouve un exemple là (site dédié à Access, mais on peut utilis er l'exemple ailleurs aussi), je ne suis pas absolument certain que ça soi t le plus digeste, mais l'idée est de le copier dans un module et lire ce qui est écrit en dessous, ça c'est gérable, et puis après on creu se tranquillement à son rythme si on aime bien comprendre ce qu'on utilise . ça peut être sympa de comprendre l'articulation des infos, ça perme t ensuite de régler comme on le souhaite le titre de la boîte de dialog ue, le répertoire et nom de fichier par défaut ...
Une petite curiosité : il y a dix ans, on trouvait dans le code
strFileTitle = Space(256)
qui fonctionnait très bien sous Windows 95. Sous Windows XP, ça ne fonctionne pas (la boîte de dialogue ne s'ouvr e carrément pas), d'où la correction :
strFileTitle = String(256, 0)
qui fonctionne sur les deux (et aussi avec les systèmes récents j'ima gine).
On initialise avec des caractères nuls, plutôt qu'avec des espaces.
Une petite curiosité : il y a dix ans, on trouvait dans le code
strFileTitle = Space(256)
qui fonctionnait très bien sous Windows 95.
Sous Windows XP, ça ne fonctionne pas (la boîte de dialogue ne s'ouvr e
carrément pas), d'où la correction :
strFileTitle = String(256, 0)
qui fonctionne sur les deux (et aussi avec les systèmes récents j'ima gine).
On initialise avec des caractères nuls, plutôt qu'avec des espaces.
Une petite curiosité : il y a dix ans, on trouvait dans le code
strFileTitle = Space(256)
qui fonctionnait très bien sous Windows 95. Sous Windows XP, ça ne fonctionne pas (la boîte de dialogue ne s'ouvr e carrément pas), d'où la correction :
strFileTitle = String(256, 0)
qui fonctionne sur les deux (et aussi avec les systèmes récents j'ima gine).
On initialise avec des caractères nuls, plutôt qu'avec des espaces.
Geo
Bonjour
Le "aht" devant les noms de variables, ce n'est pas les initiales de l'auteur, alors ... ça doit être celles de sa petite amie ? :)
En espérant que l'auteur ne soit pas francophone, sinon, c'est un peu ambigu !
Merci pour ces liens, ce n'est pas très simple, mais c'est vrai que c'est très complet. Ce qui nous manque dans le vba c'est une gestion de code source par inclusion. Si on pouvait mettre des trucs du genre inclure ApiDeLecture param1, param2 ça simplifierait la lecture et ça sécuriserait le code.
-- A+
Bonjour
Le "aht" devant les noms de variables, ce n'est pas les initiales de l'auteur, alors
... ça doit être celles de sa petite amie ? :)
En espérant que l'auteur ne soit pas francophone, sinon, c'est un peu
ambigu !
Merci pour ces liens, ce n'est pas très simple, mais c'est vrai que
c'est très complet.
Ce qui nous manque dans le vba c'est une gestion de code source par
inclusion.
Si on pouvait mettre des trucs du genre
inclure ApiDeLecture param1, param2
ça simplifierait la lecture et ça sécuriserait le code.
Le "aht" devant les noms de variables, ce n'est pas les initiales de l'auteur, alors ... ça doit être celles de sa petite amie ? :)
En espérant que l'auteur ne soit pas francophone, sinon, c'est un peu ambigu !
Merci pour ces liens, ce n'est pas très simple, mais c'est vrai que c'est très complet. Ce qui nous manque dans le vba c'est une gestion de code source par inclusion. Si on pouvait mettre des trucs du genre inclure ApiDeLecture param1, param2 ça simplifierait la lecture et ça sécuriserait le code.
-- A+
Gloops
Geo a écrit, le 20/11/2010 10:10 :
Bonjour
Le "aht" devant les noms de variables, ce n'est pas les initiales de l'auteur, alors ... ça doit être celles de sa petite amie ? :)
En espérant que l'auteur ne soit pas francophone, sinon, c'est un peu ambigu !
:)
Merci pour ces liens, ce n'est pas très simple, mais c'est vrai que c'est très complet.
Ah oui je me rappelle qu'au début j'ai copié sans rien comprendre, et puis ça marchait, c'est ça l'essentiel.
Ce qui nous manque dans le vba c'est une gestion de code source par inclusion. Si on pouvait mettre des trucs du genre inclure ApiDeLecture param1, param2 ça simplifierait la lecture et ça sécuriserait le code.
Hum, sécuriser en incluant un fichier texte qui peut être piraté pl us facilement, j'sais pas, j'ai l'impression que c'est une question à approfondir ...
Geo a écrit, le 20/11/2010 10:10 :
Bonjour
Le "aht" devant les noms de variables, ce n'est pas les initiales de
l'auteur, alors ... ça doit être celles de sa petite amie ? :)
En espérant que l'auteur ne soit pas francophone, sinon, c'est un peu
ambigu !
:)
Merci pour ces liens, ce n'est pas très simple, mais c'est vrai que
c'est très complet.
Ah oui je me rappelle qu'au début j'ai copié sans rien comprendre, et
puis ça marchait, c'est ça l'essentiel.
Ce qui nous manque dans le vba c'est une gestion de code source par
inclusion.
Si on pouvait mettre des trucs du genre
inclure ApiDeLecture param1, param2
ça simplifierait la lecture et ça sécuriserait le code.
Hum, sécuriser en incluant un fichier texte qui peut être piraté pl us
facilement, j'sais pas, j'ai l'impression que c'est une question à
approfondir ...
Le "aht" devant les noms de variables, ce n'est pas les initiales de l'auteur, alors ... ça doit être celles de sa petite amie ? :)
En espérant que l'auteur ne soit pas francophone, sinon, c'est un peu ambigu !
:)
Merci pour ces liens, ce n'est pas très simple, mais c'est vrai que c'est très complet.
Ah oui je me rappelle qu'au début j'ai copié sans rien comprendre, et puis ça marchait, c'est ça l'essentiel.
Ce qui nous manque dans le vba c'est une gestion de code source par inclusion. Si on pouvait mettre des trucs du genre inclure ApiDeLecture param1, param2 ça simplifierait la lecture et ça sécuriserait le code.
Hum, sécuriser en incluant un fichier texte qui peut être piraté pl us facilement, j'sais pas, j'ai l'impression que c'est une question à approfondir ...
Gloops
Geo a écrit, le 16/11/2010 07:03 :
Bonjour
Un temps on lançait Excel, pour ça, vu qu'Excel a proposé une bo îte de dialogue de sélection de fichier avant Word.
Enfin quand même, un module qui appelle directement l'API, ça doit quand même être plus léger, comme formule, non ?
Je ne connais pas l'API qui fait la même chose. Ca dépend aussi de l'usage qu'on en fait.
Une bonne adresse aussi pour les appels aux API : http://allapi.mentalis.org/
On y trouve un éditeur à installer en local, et les déclarations de s API et de leurs variables pour VBA/VB6 comme pour la plateforme .Net.
Les auteurs préviennent qu'ils n'ont plus le temps de mettre à jour, ce qui est dommage, mais déjà avec ce qu'il y a en ligne il y a de quoi faire.
Geo a écrit, le 16/11/2010 07:03 :
Bonjour
Un temps on lançait Excel, pour ça, vu qu'Excel a proposé une bo îte de
dialogue de sélection de fichier avant Word.
Enfin quand même, un module qui appelle directement l'API, ça doit
quand même être plus léger, comme formule, non ?
Je ne connais pas l'API qui fait la même chose.
Ca dépend aussi de l'usage qu'on en fait.
Une bonne adresse aussi pour les appels aux API :
http://allapi.mentalis.org/
On y trouve un éditeur à installer en local, et les déclarations de s API
et de leurs variables pour VBA/VB6 comme pour la plateforme .Net.
Les auteurs préviennent qu'ils n'ont plus le temps de mettre à jour, ce
qui est dommage, mais déjà avec ce qu'il y a en ligne il y a de quoi faire.