DDE

Avec Word

Voici un exemple simple qui ouvre Word, y insère deux lignes de texte, et y applique des bullets. Attention : Il ne faut pas d'Option Explicit, car la variable appWord n'a pas été définie, et je ne sais pas ce que c'est.

Dim docWord As Word.Document
Set appWord = CreateObject("Word.Application.8")
Set docWord = appWord.Documents.Add()
appWord.Visible = True
docWord.Content.InsertAfter "This is a simple example for Word!"
docWord.Content.InsertAfter vbCrLf
docWord.Content.InsertAfter "Another Line"
docWord.Content.ListFormat.ApplyBulletDefault

Avec Excel

Ecriture dans un fichier Excel

Cet exemple crée un fichier excel dans lequel on ajoute un onglet, et dans lequel on écrit dans la cellule active (A1) le texte "Ca marche". On sauvergarde ensuite le fichier .XLS ainsi créé.

Dim objexcel As Object
Set objexcel = CreateObject("Excel.Application")
objexcel.workbooks.Add
objexcel.activecell.formula = "Ca marche"
objexcel.workbooks(1).saveas "C:\atelier\link.xls"
objexcel.Quit
Set objexcel = Nothing

Utilisation d'une fonction Excel

Attention : Même si on a Excel en Français, les fonctions (ici la fonction Somme) DOIT être écrite en anglais (SUM)

ATTENTION : avant d'utiliser Excel par OLE, il est nécessaire d'aller dans du code quelconque VB, et de faire Outils/Référence, et cocher la case "Microsoft Excel8.0 object library"

Les fonctions doivent être écrites en anglais. La liste complète se trouve dans MemoExcel, mais également, on peut faire, dans le code VB, demander Affichage/Explorateur d'objets, demander dans la liste déroulante du haut la bibliothèque "Excel", et rechercher la classe "WorkSheetFunction"

Exemple 1

Dim AppXL As New Excel.Application
MsgBox AppXL.Application.roman("4")
AppXL.Quit

Exemple 2

Dim xl As Object
Set xl = CreateObject("Excel.Sheet")
Set xl = xl.application.activeworkbook.activesheet
xl.range("A1").Value = "3"
xl.range("A2").Value = "4"
xl.range("A3").formula = "=
SUM(A1:A2)"
MsgBox xl.range("A3")
Set xl = Nothing

La même fonction, mais déclarée plus complètement

Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlsheet As Excel.Worksheet
Set xlApp = CreateObject("Excel.Application.8")
Set xlBook = xlApp.Workbooks.Add
Set xlsheet = xlBook.Worksheets(1)
xlsheet.Range("A1").Value = "3"
xlsheet.Range("A2").Value = "4"
xlsheet.Range("A3").Formula = "=SUM(A1:A2)"
MsgBox xlsheet.Range("A3")
xlsheet.Range("A1").Font.ColorIndex = 3 ‘ *
Set xlsheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing

* : attention aux différences d’écritures. Lors de l’enregistrement d’une macro au sein d’Excel, on voit par exemple apparaître la propriété Selection, qui représente une sélection. Si on recopie ce code tel quel dans un Appel DDE depuis Word (par exemple), une erreur de compilation survient (Propriété non disponible). Il faut donc être attentif aux sélections, et les déclarer explicitement, comme dans la ligne de code en rouge