Access-database-engine probleem met "Merge brieven en mailtjes vanuit 1 macro/doc"

  • Onderwerp starter Onderwerp starter JM12
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

JM12

Nieuwe gebruiker
Lid geworden
15 dec 2012
Berichten
1
Beste,

Vanuit Excel probeer ik een word-document te laten samenvoegen met het Excel-bestand. Vervolgens probeer ik het voor elkaar te krijgen (met behulp van messagebox) om mailtjes vanuit hetzelfde word-document te versturen. Excel heeft de nodige kolommen gevuld, waarna ik met een druk op de knop een word-document laat openen. Het word-document heeft vervolgens een macro die start op het moment dat het document wordt geopend. Dit loopt goed tot het moment dat de mail moet worden samengevoegd vanuit hetzelfde excel-bestand.

Ik krijg de volgende melding(en):

Aanmelding bij ODBC Excel-stuurprogramma mislukt

De Microsoft Access-database-engine kan het bestand D:\xxxxx niet openen of opslaan. het is exclusief door een andere gebruiker geopend of u hebt een machtiging nodig om de gegevens te kunnen bekijken en opslaan.


Het Excel-bronbestand geeft tegelijkertijd ook een melding:

Microsoft Excel wacht totdat een andere toepassing een OLE-bewerking heeft voltooid.

Ik heb niet veel verstand hiervan, ben absoluut een beginneling die met Macro's opnemen / knippen-plakken en googelen probeert verder te komen. Ik heb het vermoeden dat het Excel-bestand wordt gebruikt voor het samenvoegen van de brieven en dat ik niet tegelijkertijd nogmaals hetzelfde Excelbestand kan gebruiken voor het samenvoegen van de mailtjes. Ik denk dat ik voor het opnieuw opvragen van gegevens op een of andere manier eerst de excel-gegevens moet sluiten of mij moet afmelden, voordat ik opnieuw gebruik kan maken van dezelfde database.

Hieronder een stuk van de code in het Word-document:

Code:
Private Sub Document_Open()

    Tekst = "Wil je de brieven aanmaken?"
    Knoppen = vbYesNo + vbDefaultButton1 + "4064" + vbQuestion
    Antwoord1 = MsgBox(Tekst, Knoppen)

            If Antwoord1 = vbYes Then

            ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
            ActiveDocument.MailMerge.OpenDataSource Name:= _
                "D:\xxxxx.xlsm" _
                , ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
                AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
                WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
                Format:=wdOpenFormatAuto, Connection:= _
                "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=D:\xxxxx.xlsm;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet " _
                , SQLStatement:="SELECT * FROM `Blas1$`"", SubType:= _
                wdMergeSubTypeAccess
            With ActiveDocument.MailMerge
                .Destination = wdSendToNewDocument
                .SuppressBlankLines = True
                With .DataSource
                    .FirstRecord = wdDefaultFirstRecord
                    .LastRecord = wdDefaultLastRecord
                End With
                .Execute Pause:=True
            End With
        'Activeer het originele sjabloon
            Windows("YYYYY").Activate

                    Tekst = "De brieven zijn aangemaakt." & vbCrLf & "" & vbCrLf & "Wil je deze ook direct per mail versturen?"
                    Knoppen = vbYesNo + vbDefaultButton1 + vbQuestion
                    Antwoord3 = MsgBox(Tekst, Knoppen)

                    If Antwoord3 = vbYes Then


[B]A) HIER KRIJG IK VOLGENS MIJ DE FOUTMELDING [/B]

                
                ' Samenvoegen van mail met macro 

                    ActiveDocument.MailMerge.MainDocumentType = wdEMail
                    ActiveDocument.MailMerge.OpenDataSource Name:= _
                        "D:\xxxxx.xlsm" _
                        , ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
                        AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
                        WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
                        Format:=wdOpenFormatAuto, Connection:= _
                        "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=D:\xxxxx.xlsm;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet " _
                        , SQLStatement:="SELECT * FROM `Blad1$`", SQLStatement1:="", SubType:= _
                        wdMergeSubTypeAccess
                    With ActiveDocument.MailMerge
                        .Destination = wdSendToEmail
                        .SuppressBlankLines = True
                        With .DataSource
                            .FirstRecord = wdDefaultFirstRecord
                           .LastRecord = wdDefaultLastRecord
                    End With
                        .Execute Pause:=False
                    End With
                        Windows("YYYYY").Activate

                        ActiveWindow.Close SaveChanges:=wdDoNotSaveChanges


[B]B) HAAL IK DE REGELS TUSSEN A EN B WEG, DAN LOOPT DE MACRO GOED DOOR 
[/B]


                   Tekst = "De mailtjes zijn verstuurd." & vbCrLf & "" & vbCrLf & "Druk nu de door jou aangemaakt brieven af!"
                    Knoppen = vbDefaultButton1 + vbExclamation
                    Antwoord4 = MsgBox(Tekst, Knoppen)

                    Windows("YYYYY").Activate

                    ActiveWindow.Close SaveChanges:=wdDoNotSaveChanges

                    Else

                        Windows("YYYYY").Activate
 
Enzovoort.....

End Sub

Ik ben erg benieuwd of het uberhaupt wel mogelijk is. Mocht iemand een idee hebben, dan hoor ik het graag.


Groet!

Word en Excel 2010
VBA 7.0
Windows 7 64bit
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan