LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 2012
-
21 sept. 2008 à 21:21
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 2012
-
22 sept. 2008 à 01:04
Salut,
Voilà ce qui marche:
Depuis vb6, j' insère des données dans une feuille Excel
avec la méthode CopyFromRecordset.
Exemple:
'-------------------------------------------------------------
Public Sub TO_EXCEL(sPath as string,sQuery As String,sDoc As String)
Dim sDb As Database
Set sDb = DBEngine.Workspaces(0).OpenDatabase(sPath)
Dim rs As Recordset
Set rs = sDb.OpenRecordset(sQuery, dbOpenDynaset)
'variables classeur Excel
Dim appExcel As Excel.Application 'Application Excel
Dim wbExcel As Excel.Workbook 'Classeur Excel
Dim wsExcel As Excel.Worksheet 'Feuille Excel
'Ouverture de l' application
Set appExcel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
Set wbExcel = appExcel.Workbooks.Open(sDoc)
'wsExcel correspond à la première feuille du fichier
Set wsExcel = wbExcel.Worksheets(1)
wsExcel.Cells(4, 2) = "LISTE DES INSCRITS"
'copie des données
wsExcel.Range("A6").CopyFromRecordset rs
'...Imprimer
'...Fermer...
End Sub
'-------------------------------------------------------------
Voici ce que je voudrais faire:
Depuis vb6, insèrer des données dans un document word
de la même manière..
Exemple:
---------------------------------------------------------------
Public Sub TO_WORD(sPath as string,sQuery As String,sDoc As String)
Dim sDb As Database
Set sDb = DBEngine.Workspaces(0).OpenDatabase(sPath)
Dim rs As Recordset
Set rs = sDb.OpenRecordset(sQuery, dbOpenDynaset)
'variables Word
Dim ObjWord As New Word.Application
ObjWord.Documents.Open sDoc
'copie des données
'QU' EST-CE QUI MANQUE ICI ?
wbWord.? rs
'...Imprimer
'...Fermer...
End Sub
'------------------------------------------------------------------------
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 21 sept. 2008 à 23:03
A excuse
Mais j'avais pas compris que c'est juste le code recordset que tu cherchais
Je croyais que c'est un code pour remplir du word (j'ai lu le post en diagonale)
C'est pas la peine réécrire le code source de la source ;-)
Il faut surement lire le recordset à la main pour remplir un tableau
Car word n'est pas comme excel (les tableaux ne sont pas fait pour gérer les recordsets)
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 21 sept. 2008 à 22:20
Allez les gars, soyez sympas !
J' ai le curseur qui clignote.
Prêt à rebondir sur vos suggestions.
Je suis même prêt à faire des concessions.
Disons que j' accepte un code sur trois lignes.
Mais pas plus, hé !
PS: la fusion, j' ai déjà essayé.Et elle marche elle aussi.
Et J' ai déjà un code avec les signets.
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 21 sept. 2008 à 22:51
Salut,
Disons que mon deuxièùe post était un complément d' information
dans lequel j' expliquais que je voulais un code simple et spécifique.
Et voici le contenu de ton lien:
'-----------------------------------------------------------------------
'Enonciation des variables
Dim docword As New Word.Application
Private Sub Command1_Click()
'ouvre Word
Set docword = CreateObject("word.application")
'True pour word visible et false pour le mettre en arrière plan
docword.Visible = True
docword.DisplayAlerts = False 'évite les erreurs de traitement
docword.Documents.Add 'ajoute un document vierge
'on va écrire
docword.Selection.TypeText Text:="Comment piloter Word97"
'faire un tabulation
docword.Selection.TypeText Text:=vbTab
'revenir à la ligne
docword.Selection.TypeParagraph
'sauter une ligne
docword.Selection.TypeParagraph
docword.Selection.TypeParagraph
'mise en forme
'ATTENTION un petit conseil mes petits amis, c'est de d'abord mettre le format
'avant de d'insérer le texte donc si vous avez bien compris vous faites :
'docword.selection.paragraphformat.alignement = wdalignparagraphcenter
'docword.selection.typetext text:="blablabla"
'centré
docword.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
'aligné à gauche
docword.Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft
'justifié
docword.Selection.ParagraphFormat.Alignment = wdAlignParagraphJustify
'aligné à droite
docword.Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
'mettre le texte en souligné
If docword.Selection.Font.Underline = wdUnderlineNone Then
docword.Selection.Font.Underline = wdUnderlineSingle
Else
docword.Selection.Font.Underline = wdUnderlineNone
End If
'changer la taille de la police
docword.Selection.Font.Size = xx 'xx est une valeur numérique
'changer la police
docword.Selection.Font.Name = "Arial"
'mettre en gras
docword.Selection.Font.Bold = wdToggle
'mettre en italique
docword.Selection.Font.Italic = wdToggle
'souligner le texte
If docword.Selection.Font.Underline = wdUnderlineNone Then
docword.Selection.Font.Underline = wdUnderlineSingle
Else
docword.Selection.Font.Underline = wdUnderlineNone
End If
'changer la couleur de la police
docword.Selection.Font.ColorIndex = wdRed 'ici en rouge
docword.Selection.Font.ColorIndex = wdAuto 'ici en couleur automatique
'changer la couleur de fond du document
docword.ActiveDocument.Background.Fill.ForeColor.RGB = RGB(xxx, xxx, xxx)
'où xxx est une valeur comprise en 0 et 255 (256 couleurs)
docword.ActiveDocument.Background.Fill.Visible = msoTrue
docword.ActiveDocument.Background.Fill.Solid
'INSERER UN OBJET
'insérer une image à partir du fichier
docword.Selection.InlineShapes.AddPicture FileName:="C:\cool.bmp", _
LinkToFile:=False, SaveWithDocument:=True
'insérer un graphique type EXCEL
docword.ActiveDocument.Shapes.AddOLEObject Anchor:=Selection.Range, _
ClassType:="MSGraph.Chart.8", LinkToFile:=False, DisplayAsIcon:=False
'insérer un graphique à partir d'un fichier EXCEL existant
docword.ActiveDocument.Shapes.AddOLEObject ClassType:= _
"MSGraph.Chart.8", FileName:="c:\cool.xls", LinkToFile:=False, _
DisplayAsIcon:=False, Left:=xxx, Top:=xxx 'xxx est une valeur numérique
'linktofile:=True permet d'ouvrir le fichier EXCEL lorsque vous double-cliquez sur
'le graphique.
'left, top, ainsi que height et width définisse la position et la taille du graph
'insérer un WORDART
docword.ActiveDocument.Shapes.AddTextEffect(msoTextEffect28, "COOL", _
"Impact", 36#, msoFalse, msoFalse, 261.35, 157.5).Select
'insérer un tableau
docword.ActiveDocument.Tables.Add Range:=Selection.Range, _
NumRows:=2, NumColumns:=2
'pour écrire dans le tableau utiliser le typetext à la suite
'de cette fonction. Pour se déplacer, utiliser :
docword.Selection.MoveRight Unit:=wdCell
docword.Selection.MoveUp Unit:=wdLine, Count:=1
docword.Selection.MoveDown Unit:=wdLine, Count:=1
'insérer un lien hypertexte
docword.ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:= _
"http://www.cool.com/", SubAddress:=""
'insérer la date
docword.Selection.InsertDateTime DateTimeFormat:="jjjj j MMMM aaaa", _
InsertAsField:=False
'insérer un signet
With docword.ActiveDocument.Bookmarks
.Add Range:=Selection.Range, Name:="cool"
.DefaultSorting = wdSortByLocation
'ou = wdsortbyname -> indexer par nom
.ShowHidden = False
End With
'enregistrer le document sous cool.doc
docword.ActiveDocument.SaveAs FileName:="c:\cool.doc"
'quitter word
docword.Application.Quit
End Sub
'Enonciation des variables
Dim docword As New Word.Application
Private Sub Command1_Click()
'ouvre Word
Set docword = CreateObject("word.application")
'True pour word visible et false pour le mettre en arrière plan
docword.Visible = True
docword.DisplayAlerts = False 'évite les erreurs de traitement
docword.Documents.Add 'ajoute un document vierge
'on va écrire
docword.Selection.TypeText Text:="Comment piloter Word97"
'faire un tabulation
docword.Selection.TypeText Text:=vbTab
'revenir à la ligne
docword.Selection.TypeParagraph
'sauter une ligne
docword.Selection.TypeParagraph
docword.Selection.TypeParagraph
'mise en forme
'ATTENTION un petit conseil mes petits amis, c'est de d'abord mettre le format
'avant de d'insérer le texte donc si vous avez bien compris vous faites :
'docword.selection.paragraphformat.alignement = wdalignparagraphcenter
'docword.selection.typetext text:="blablabla"
'centré
docword.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
'aligné à gauche
docword.Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft
'justifié
docword.Selection.ParagraphFormat.Alignment = wdAlignParagraphJustify
'aligné à droite
docword.Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
'mettre le texte en souligné
If docword.Selection.Font.Underline = wdUnderlineNone Then
docword.Selection.Font.Underline = wdUnderlineSingle
Else
docword.Selection.Font.Underline = wdUnderlineNone
End If
'changer la taille de la police
docword.Selection.Font.Size = xx 'xx est une valeur numérique
'changer la police
docword.Selection.Font.Name = "Arial"
'mettre en gras
docword.Selection.Font.Bold = wdToggle
'mettre en italique
docword.Selection.Font.Italic = wdToggle
'souligner le texte
If docword.Selection.Font.Underline = wdUnderlineNone Then
docword.Selection.Font.Underline = wdUnderlineSingle
Else
docword.Selection.Font.Underline = wdUnderlineNone
End If
'changer la couleur de la police
docword.Selection.Font.ColorIndex = wdRed 'ici en rouge
docword.Selection.Font.ColorIndex = wdAuto 'ici en couleur automatique
'changer la couleur de fond du document
docword.ActiveDocument.Background.Fill.ForeColor.RGB = RGB(xxx, xxx, xxx)
'où xxx est une valeur comprise en 0 et 255 (256 couleurs)
docword.ActiveDocument.Background.Fill.Visible = msoTrue
docword.ActiveDocument.Background.Fill.Solid
'INSERER UN OBJET
'insérer une image à partir du fichier
docword.Selection.InlineShapes.AddPicture FileName:="C:\cool.bmp", _
LinkToFile:=False, SaveWithDocument:=True
'insérer un graphique type EXCEL
docword.ActiveDocument.Shapes.AddOLEObject Anchor:=Selection.Range, _
ClassType:="MSGraph.Chart.8", LinkToFile:=False, DisplayAsIcon:=False
'insérer un graphique à partir d'un fichier EXCEL existant
docword.ActiveDocument.Shapes.AddOLEObject ClassType:= _
"MSGraph.Chart.8", FileName:="c:\cool.xls", LinkToFile:=False, _
DisplayAsIcon:=False, Left:=xxx, Top:=xxx 'xxx est une valeur numérique
'linktofile:=True permet d'ouvrir le fichier EXCEL lorsque vous double-cliquez sur
'le graphique.
'left, top, ainsi que height et width définisse la position et la taille du graph
'insérer un tableau
docword.ActiveDocument.Tables.Add Range:=Selection.Range, _
NumRows:=2, NumColumns:=2
'pour écrire dans le tableau utiliser le typetext à la suite
'de cette fonction. Pour se déplacer, utiliser :
docword.Selection.MoveRight Unit:=wdCell
docword.Selection.MoveUp Unit:=wdLine, Count:=1
docword.Selection.MoveDown Unit:=wdLine, Count:=1
'insérer un lien hypertexte
docword.ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:= _
"http://www.cool.com/", SubAddress:=""
'insérer la date
docword.Selection.InsertDateTime DateTimeFormat:="jjjj j MMMM aaaa", _
InsertAsField:=False
'insérer un signet
With docword.ActiveDocument.Bookmarks
.Add Range:=Selection.Range, Name:="cool"
.DefaultSorting = wdSortByLocation
'ou = wdsortbyname -> indexer par nom
.ShowHidden = False
End With
'enregistrer le document sous cool.doc
docword.ActiveDocument.SaveAs FileName:="c:\cool.doc"
'quitter word
docword.Application.Quit
End Sub
'-----------------------------------------------------------------------------
1° ce genre de code, j' en ai vu une vingtaine.
2° ça ne répond pas à ma question.
Peut être que je n' ai vu, mais je ne vois nulle part
une référence à un recordset.
Peux -tu me montrer ou c' est..
Merci.
<hr />
[] Ce qui va sans dire. va mieux en le disant.
<hr />
Vous n’avez pas trouvé la réponse que vous recherchez ?
extrait
' Execute a SQL statement to retrieve the information
Set oRS = oConn.Execute( _
"SELECT CustomerID, CompanyName, ContactName FROM Customers")
' Use GetString to return the recordset as a string
sTemp = oRS.GetString(adClipString, -1, vbTab)
' Insert a heading on the string
sTemp = "Customer ID" & vbTab & "Company Name" & _
vbTab & "Contact Name" & vbCrLf & sTemp
' Insert the data into the Word document
oRange.Text = sTemp
' Convert the text to a table and format the table
oRange.ConvertToTable vbTab, , , , wdTableFormatColorful2
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 22 sept. 2008 à 01:04
Comme promis, voici une première adaptation du code extrait du Lien et qui marche.
'------------------------------------------------------------------------
Public Sub wExport(xIdClas As String)
Dim sPath As String
sPath = App.Path & "\Documents\Source\DB_IMPORT.mdb"
Dim sBase As Database
Set sBase = DBEngine.Workspaces(0).OpenDatabase(sPath)
Dim sQuery As String
sQuery = "SELECT [N Dossier], [Nom Francais], [Prenom Francais], [Date Naissance] " & _
"FROM INSCRITS" sQuery sQuery & " WHERE Classe'" & xIdClas & "'"
Dim oRs As Recordset
'ouvrir la table
Set oRs = sBase.OpenRecordset(sQuery, dbOpenDynaset)
'PARTIE TIREE DU LIEN
' Declare our variables
Dim oWord As Word.Application
Dim oDoc As Word.Document
Dim oRange As Word.Range
Dim sTemp As String
' Create an instance of Word
Set oWord = CreateObject("Word.Application")
' Show Word to the user
oWord.Visible = True
' Add a new, blank document
Set oDoc = oWord.Documents.Add
' Get the current document's range object
Set oRange = oDoc.Range
oRange.Text = sTemp
' Convert the text to a table and format the table
oRange.ConvertToTable vbTab, , , , wdTableFormatColorful2
End Sub
NB: Bien que ça marche à la perfection, je reste intrigué par le fait que sTemp étant de type String, elle supporte quand même la concaténation d' un grand nombre d' enregistrements !
Autre remarque: Dans un premier test avec un code semblable à celui du lien, avec ADODB DONC, j' ai eu une erreur sur oRs.GetString .. (Méthode ou membre de donnée introuvable).