Suite à l'utilisation d'un exemple de code
(ftp://ftp-developpez.com/silkyroad/Excel/PublipostageWordExcel/PublipostageWordExcel.pdf)
pour automatiser la génération d'un bon de commande via le publipostage
excel vers word.
J'ai donc crée une feuille excel nommé : "Commandes"
qui contient plusieurs colonne, don :
"Frais" qui contient les frais de port.
....
Le problème est que la requête SELECT ne passe pas a l'exécution :
"SELECT * FROM [Commandes$] WHERE [Frais] >50"
Le Message d'erreur est : docWord.MailMerge.DataSource.Query...=<L'objet
demandé n'est pas disponible>
Voici l'exemple du web que j'ai associé à un bouton :
Private Sub CommandButton1_Click()
'Nécessite d'activer la référence "Microsoft Word xx.x Object Library"
Dim docWord As Word.Document
Dim appWord As Word.Application
Application.ScreenUpdating = False
Set appWord = New Word.Application
appWord.Visible = False
'Ouverture du document principal Word
Set docWord = appWord.Documents.Open("C:\BonCommande.doc")
'Création de la requête:
'N'oubliez pas d'ajouter le symbole $ après le nom de la feuille
docWord.MailMerge.DataSource.QueryString = _
"SELECT * FROM [Commandes$] WHERE [Frais] > 50"
'Fusion
With docWord.MailMerge
.Destination = wdSendToPrinter
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=True
End With
'Fermeture du document Word
docWord.Close False
appWord.Quit
Application.ScreenUpdating = True
End Sub
Lino
qui ne sait pas quelle syntaxe utiliser pour le SELECT.
--
Mon lecteur de Mail,News,RSS "Mozilla Thunderbird" cite :
Quand une fois la liberté a explosé dans une âme d'homme,
les dieux ne peuvent plus rien contre cet homme-là.
(Jean-Paul Sartre / 1905-1980 / Les mouches)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
linostarr
Bonjour,
Suite à l'utilisation d'un exemple de code (ftp://ftp-developpez.com/silkyroad/Excel/PublipostageWordExcel/PublipostageWordExcel.pdf) pour automatiser la génération d'un bon de commande via le publipostage excel vers word.
J'ai donc crée une feuille excel nommé : "Commandes" qui contient plusieurs colonne, don : "Frais" qui contient les frais de port. ....
Le problème est que la requête SELECT ne passe pas a l'exécution : "SELECT * FROM [Commandes$] WHERE [Frais] >50"
Le Message d'erreur est : docWord.MailMerge.DataSource.Query...=<L'objet demandé n'est pas disponible>
Voici l'exemple du web que j'ai associé à un bouton :
Private Sub CommandButton1_Click() 'Nécessite d'activer la référence "Microsoft Word xx.x Object Library" Dim docWord As Word.Document Dim appWord As Word.Application
Application.ScreenUpdating = False
Set appWord = New Word.Application appWord.Visible = False
'Ouverture du document principal Word Set docWord = appWord.Documents.Open("C:BonCommande.doc")
'Création de la requête: 'N'oubliez pas d'ajouter le symbole $ après le nom de la feuille
docWord.MailMerge.DataSource.QueryString = _ "SELECT * FROM [Commandes$] WHERE [Frais] > 50" 'Fusion With docWord.MailMerge .Destination = wdSendToPrinter With .DataSource .FirstRecord = wdDefaultFirstRecord .LastRecord = wdDefaultLastRecord End With .Execute Pause:=True End With
'Fermeture du document Word docWord.Close False appWord.Quit
Application.ScreenUpdating = True End Sub
Lino qui ne sait pas quelle syntaxe utiliser pour le SELECT.
Pour info j'ai trouver une solution : (la base etait pas ouverte ...)
Private Sub CommandButton1_Click() 'Nécessite d'activer la référence "Microsoft Word xx.x Object Library" Dim docWord As Word.Document Dim appWord As Word.Application
Dim Chemin As String Dim NomFich As String Dim NomBase As String
'ouvre une session Word Set appWord = CreateObject("word.application") appWord.Visible = True Set docWord = appWord.Documents.Open(Filename:=Chemin & NomFich) DoEvents
'Création de la requête: 'N'oubliez pas d'ajouter le symbole $ après le nom de la feuille With docWord.MailMerge 'La base Excel est dans le même répertoire que le doc Word. .OpenDataSource Name:=Chemin & NomBase, _ Connection:="Driver={Microsoft Excel Driver (*.xls)};" & _ "DBQ=" & Chemin & NomBase & "; ReadOnly=True;", _ SQLStatement:="SELECT * FROM [Commandes$] WHERE [Etats de la Commande] = ""Cmd à Passer"" And [Fournisseur] = ""JoeBarTeam"""
'Fusion With docWord.MailMerge .Destination = wdSendToPrinter
With .DataSource .FirstRecord = wdDefaultFirstRecord .LastRecord = wdDefaultLastRecord End With .Execute Pause:=True End With End With Fermeture du document Word docWord.Close False appWord.Quit
Application.ScreenUpdating = True End Sub
A+ -- Mon lecteur de Mail,News,RSS "Mozilla Thunderbird" cite : Finalement, mieux vaut se battre qu'avoir peur. (Gandhi, Mohandas Karamchand, nommé le Mahatma - 1869 à 1948)
Bonjour,
Suite à l'utilisation d'un exemple de code
(ftp://ftp-developpez.com/silkyroad/Excel/PublipostageWordExcel/PublipostageWordExcel.pdf)
pour automatiser la génération d'un bon de commande via le publipostage
excel vers word.
J'ai donc crée une feuille excel nommé : "Commandes"
qui contient plusieurs colonne, don :
"Frais" qui contient les frais de port.
....
Le problème est que la requête SELECT ne passe pas a l'exécution :
"SELECT * FROM [Commandes$] WHERE [Frais] >50"
Le Message d'erreur est : docWord.MailMerge.DataSource.Query...=<L'objet
demandé n'est pas disponible>
Voici l'exemple du web que j'ai associé à un bouton :
Private Sub CommandButton1_Click()
'Nécessite d'activer la référence "Microsoft Word xx.x Object Library"
Dim docWord As Word.Document
Dim appWord As Word.Application
Application.ScreenUpdating = False
Set appWord = New Word.Application
appWord.Visible = False
'Ouverture du document principal Word
Set docWord = appWord.Documents.Open("C:BonCommande.doc")
'Création de la requête:
'N'oubliez pas d'ajouter le symbole $ après le nom de la feuille
docWord.MailMerge.DataSource.QueryString = _
"SELECT * FROM [Commandes$] WHERE [Frais] > 50"
'Fusion
With docWord.MailMerge
.Destination = wdSendToPrinter
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=True
End With
'Fermeture du document Word
docWord.Close False
appWord.Quit
Application.ScreenUpdating = True
End Sub
Lino
qui ne sait pas quelle syntaxe utiliser pour le SELECT.
Pour info j'ai trouver une solution :
(la base etait pas ouverte ...)
Private Sub CommandButton1_Click()
'Nécessite d'activer la référence "Microsoft Word xx.x Object Library"
Dim docWord As Word.Document
Dim appWord As Word.Application
Dim Chemin As String
Dim NomFich As String
Dim NomBase As String
'ouvre une session Word
Set appWord = CreateObject("word.application")
appWord.Visible = True
Set docWord = appWord.Documents.Open(Filename:=Chemin & NomFich)
DoEvents
'Création de la requête:
'N'oubliez pas d'ajouter le symbole $ après le nom de la feuille
With docWord.MailMerge
'La base Excel est dans le même répertoire que le doc Word.
.OpenDataSource Name:=Chemin & NomBase, _
Connection:="Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=" & Chemin & NomBase & "; ReadOnly=True;", _
SQLStatement:="SELECT * FROM [Commandes$] WHERE [Etats de
la Commande] = ""Cmd à Passer"" And [Fournisseur] = ""JoeBarTeam"""
'Fusion
With docWord.MailMerge
.Destination = wdSendToPrinter
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=True
End With
End With
Fermeture du document Word
docWord.Close False
appWord.Quit
Application.ScreenUpdating = True
End Sub
A+
--
Mon lecteur de Mail,News,RSS "Mozilla Thunderbird" cite :
Finalement, mieux vaut se battre qu'avoir peur.
(Gandhi, Mohandas Karamchand, nommé le Mahatma - 1869 à 1948)
Suite à l'utilisation d'un exemple de code (ftp://ftp-developpez.com/silkyroad/Excel/PublipostageWordExcel/PublipostageWordExcel.pdf) pour automatiser la génération d'un bon de commande via le publipostage excel vers word.
J'ai donc crée une feuille excel nommé : "Commandes" qui contient plusieurs colonne, don : "Frais" qui contient les frais de port. ....
Le problème est que la requête SELECT ne passe pas a l'exécution : "SELECT * FROM [Commandes$] WHERE [Frais] >50"
Le Message d'erreur est : docWord.MailMerge.DataSource.Query...=<L'objet demandé n'est pas disponible>
Voici l'exemple du web que j'ai associé à un bouton :
Private Sub CommandButton1_Click() 'Nécessite d'activer la référence "Microsoft Word xx.x Object Library" Dim docWord As Word.Document Dim appWord As Word.Application
Application.ScreenUpdating = False
Set appWord = New Word.Application appWord.Visible = False
'Ouverture du document principal Word Set docWord = appWord.Documents.Open("C:BonCommande.doc")
'Création de la requête: 'N'oubliez pas d'ajouter le symbole $ après le nom de la feuille
docWord.MailMerge.DataSource.QueryString = _ "SELECT * FROM [Commandes$] WHERE [Frais] > 50" 'Fusion With docWord.MailMerge .Destination = wdSendToPrinter With .DataSource .FirstRecord = wdDefaultFirstRecord .LastRecord = wdDefaultLastRecord End With .Execute Pause:=True End With
'Fermeture du document Word docWord.Close False appWord.Quit
Application.ScreenUpdating = True End Sub
Lino qui ne sait pas quelle syntaxe utiliser pour le SELECT.
Pour info j'ai trouver une solution : (la base etait pas ouverte ...)
Private Sub CommandButton1_Click() 'Nécessite d'activer la référence "Microsoft Word xx.x Object Library" Dim docWord As Word.Document Dim appWord As Word.Application
Dim Chemin As String Dim NomFich As String Dim NomBase As String
'ouvre une session Word Set appWord = CreateObject("word.application") appWord.Visible = True Set docWord = appWord.Documents.Open(Filename:=Chemin & NomFich) DoEvents
'Création de la requête: 'N'oubliez pas d'ajouter le symbole $ après le nom de la feuille With docWord.MailMerge 'La base Excel est dans le même répertoire que le doc Word. .OpenDataSource Name:=Chemin & NomBase, _ Connection:="Driver={Microsoft Excel Driver (*.xls)};" & _ "DBQ=" & Chemin & NomBase & "; ReadOnly=True;", _ SQLStatement:="SELECT * FROM [Commandes$] WHERE [Etats de la Commande] = ""Cmd à Passer"" And [Fournisseur] = ""JoeBarTeam"""
'Fusion With docWord.MailMerge .Destination = wdSendToPrinter
With .DataSource .FirstRecord = wdDefaultFirstRecord .LastRecord = wdDefaultLastRecord End With .Execute Pause:=True End With End With Fermeture du document Word docWord.Close False appWord.Quit
Application.ScreenUpdating = True End Sub
A+ -- Mon lecteur de Mail,News,RSS "Mozilla Thunderbird" cite : Finalement, mieux vaut se battre qu'avoir peur. (Gandhi, Mohandas Karamchand, nommé le Mahatma - 1869 à 1948)