Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[excel]Macro om Word-mailmerge te maken

Pagina: 1
Acties:

  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 19:06
Ik heb een redelijk uitgebreide macro, waarbij ik in Excel een aantal bewerkingen doe, voordat Word geopend wordt. Nu wil ik een mailmerge maken via dezelfde VBA. Ik krijg alleen een foutmelding:
Fout 450: Onjuist aantal argumenten of ongeldige eigenschappentoewijzing
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
...
'Starten Microsoft Word
Const wdFormLetters = 0, wdOpenFormatAuto = 0
Const wdSendToNewDocument = 0, wdSendToEmail = 2, wdDefaultFirstRecord = 1, wdDefaultLastRecord = -16
Dim wd As Object
    Dim wdocSource As Object
    Dim strWorkbookName As String
    On Error Resume Next
    Set wd = GetObject(, "Word.Application")
    If wd Is Nothing Then
        Set wd = CreateObject("Word.Application")
    End If
    On Error GoTo 0
    Set wdocSource = wd.Documents.Open("E:\Documents\Test.docx")
    strWorkbookName = "E:\Documents\Test.csv"
    wdocSource.MailMerge.MainDocumentType = wdFormLetters
    wdocSource.MailMerge.OpenDataSource _
            Name:=strWorkbookName, _
            AddToRecentFiles:=False, _
            Revert:=False, _
            Format:=wdOpenFormatAuto, _
            Connection:="Data Source=" & strWorkbookName & ";Mode=Read", _
            SQLStatement:="SELECT * FROM `Sheet1$`"
    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _
        PreserveFormatting:=False
    Selection.TypeText Text:="IF"
    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _
        PreserveFormatting:=False
    Selection.TypeText Text:="MERGEFIELD Bezorgindicatie"
...

In regel 24 waar hij vast loopt. Test.csv is dus uitgebreid aangepast vanuit Excel. Ik heb MSDN gelezen over deze foutcode, maar ik kan dus niet achterhalen hoeveel argumenten ik dan moet geven.

Iemand die me hierbij kan helpen? Kan ik überhaupt dit aansturen vanuit Excel?

  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 19:06
Iemand die hier ervaring mee heeft en een oplossing weet?

  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 19:06
Echt helemaal niemand?

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Jawel hoor. Vraag je eens af in welke context je code loopt en waar selection dan aan refereert.

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 19:06
Je bedoelt dat hij in Excel loopt en in Word een selection gezet wordt? Ik snap waar je op doelt, maar hoe kan ik dit dan oplossen? Ik open Word en maak de verbinding en de sql-selectie wordt gemaakt. Deze wordt toch aan gerefereerd?

  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 19:06
Lustucru: je lijkt te insinueren dat je hier meer vanaf weet, kun je me dan een zetje de goede kant uit geven?
Anderen mogen dit natuurlijk ook :)

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Het ligt voor de hand. De code draait binnen Excel. Het 'selection object in regel 24 spreekt dus Excel.Application.Selection aan, en dat object kent geen fields property.

Je wilt iets doen met het Word.Application.Selection object. Dan moet je in dit geval expliciet benoemen van welk application object je het selection-object wilt gebruiken.

Visual Basic:
1
2
3
4
5
6
7
8
Dim wordObject as word.application
Dim excelObject as excel.application

' set de objecten

Set s= selection ' s is het selection object van de host
Set s= wordObject.Selection 's verwijst naar het selectionobject van je wordinstantie
Set s= excelObject.Selection 's verwijst naar het selectionobject van je excelinstantie

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 19:06
Ik snap wat je bedoelt :D Ik ga hier verder mee aan de slag. Dankjewel!
Pagina: 1