Macro voor kopieren vanuit excel naar word

Status
Niet open voor verdere reacties.

SafeConstruct

Gebruiker
Lid geworden
23 apr 2021
Berichten
84
Ik wil mijn fakturatieprogramma finaliseren en heb nog 1 vraag waar ik eenvoudig (lees automatisch) na het lanceren van een macro een aantal welbepaalde cellen vanuit xlsx wil kopiëren naar mijn .doc.
Het te kopiëren bereik in xlsx situeert zich van cel B3 tot E7.
Het bereik is te plaatsen in .doc aangeduid in een tabel in gele kleur.
De macro die gelanceerd wordt in .doc heeft als bedoeling een automatische verzendlijst lanceren (wat lukt).

Code:
Sub Verzendlijst()
Dim Naam As String, Map As String
    Map = ZoekMap("C:\Users\Gebruiker\Google Drive\Safe Construct\SC Werven\")
    With ActiveDocument.MailMerge
        With .DataSource
            .FirstRecord = .ActiveRecord
            .LastRecord = .ActiveRecord
            Naam = .DataFields("VGPINFO").Value & ".docx"
        End With
        .Destination = wdSendToNewDocument
        .SuppressBlankLines = True
        .Execute Pause:=False
        ActiveDocument.SaveAs2 FileName:=Map & "\" & Naam, FileFormat:=wdFormatXMLDocument, CompatibilityMode:=15
        Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:="4"
    End With
   
End Sub
Private Function ZoekMap(Optional Startmap As String) As String
'*********************************************************************************
' Early binding: Microsoft Office 11.0 Object Library of later
Dim fDialog As Office.FileDialog
'*********************************************************************************
' Late binding: gebruik objecten
''Dim fDialog As Object
'*********************************************************************************
Dim varFile As Variant
Dim i As Integer

    '******************************************************************************
    'Opzetten File Dialog met Early Binding.
    Set fDialog = Application.FileDialog(msoFileDialogFolderPicker)
    '******************************************************************************
    'Opzetten File Dialog met Late Binding.
    'Set fDialog = Application.FileDialog(4)
    '******************************************************************************
    With fDialog
        '**************************************************************************
        'Pas dit aan voor map met afbeeldingen
        .InitialFileName = IIf(Startmap = "", ActiveDocument.Path & "\", Startmap)
        '**************************************************************************
        .AllowMultiSelect = False
        .Title = "Kies een map.."
        '**************************************************************************
        'Toon het scherm, als methode False teruggeeft is er geen map gekozen.
        '**************************************************************************
        If .Show = True Then
            ZoekMap = .SelectedItems(1)
        Else
            ZoekMap = "Geen map geselecteerd."
        End If
    End With
End Function
Sub Save_doc_pdf()
'
' Save_doc_pdf Macro
'
'
Naam = InputBox("Bestandsnaam? ", "Naam")
    ChangeFileOpenDirectory "C:\Users\Gebruiker\Google Drive\DOCS SAVED PDF\"
    ActiveDocument.SaveAs2 FileName:=Naam, FileFormat:= _
        wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _
        :=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
        :=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
        SaveAsAOCELetter:=False, CompatibilityMode:=15
    ActiveDocument.ExportAsFixedFormat OutputFileName:=Naam, _
        ExportFormat:=wdExportFormatPDF, OpenAfterExport:=True, OptimizeFor:= _
        wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
        Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
        CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
        BitmapMissingFonts:=True, UseISO19005_1:=False
Application.PrintOut FileName:="", Range:=wdPrintRangeOfPages, Item:= _
        wdPrintDocumentWithMarkup, Copies:=1, Pages:="4", PageType:= _
        wdPrintAllPages, Collate:=True, Background:=True, PrintToFile:=False, _
        PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
        PrintZoomPaperHeight:=0
End Sub
 

Bijlagen

  • SC Projecten voor macro VGP intervenanten.xlsm
    668,9 KB · Weergaven: 39
  • 99999 VGP.docx
    29,4 KB · Weergaven: 40
Ik snap de formules (gegevens) in je Excel bestand niet. Daar zitten formules in die foutmeldingen geven (Vert.Zoeken in extern bestand bijvoorbeeld) dus daar is niet mee te werken. Gebruik alleen gegevens/formules die binnen hetzelfde bestand zitten.
 
De gegevens die enkel in het geel zijn , deze zijn van belang cel B3 tot E7 en daar zitten geen verwijzingen in.
Anders dien ik alle bladen mee te zenden en wordt het bestand te zwaar.
Is dit ok voor jou ?
 
Ik snap eigenlijk nog steeds niet wat je wilt, en waarom je daarvoor een macro zou gebruiken. Met een gewone standaardsamenvoeging kun je volgens mij precies bereiken wat je wilt. Wat is daar mis mee? Heb er maar even een voorbeeldje van gemaakt.
Je zal nog wel even de verwijzing moeten aanpassen denk ik.
 

Bijlagen

  • 99999 VGP.docx
    29,2 KB · Weergaven: 33
  • SC Projecten voor macro VGP intervenanten.xlsm
    29,9 KB · Weergaven: 30
Jouw citaat uit vorige vraagstelling :
"Ja dus. Vroeger was het geen probleem, en kon je ook vanuit Word het gegevensbestand openen en bewerken, maar in de nieuwe versies gaat dat niet lekker meer. Ik zou dus de Excel niet openen of open houden bij het samenvoegen."

Voor mij mag het niet de bedoeling zijn telkens excel te moeten afsluiten, doch zoek ik een automatisme dat wanneer ik de .doc open hij in de cellen die ik citeerde de inhoud gaat copiëren in mijn .doc. Ik weet niet of dit moeilijk is om te begrijpen ?

Spijtig dat ik nu pas verneem dat je het niet snapt ...
 
Laat ik het zo zeggen: ik snap niet wat de bedoeling is van de code die je erbij hebt gezet. Daar zit dan een zinloze/onzinnige Mailmerge in. Ik ben gewoon aan het voortborduren op het mailmerge principe. En voor zover ik kan zien, kun je gewoon in beide programma's tegelijk werken zonder problemen. Ik heb ze althans allebei open staan, vul de Excel aan en krijg dan (wel even gegevensbestand vernieuwen natuurlijk) daarna keurig de samenvoeging te zien met de nieuwe gegevens. M.i. maak je het jezelf veuls te moeluk....
 
Ik verwijs even naar de andere vraagstelling waarin u mij aanraadde om vanuit xlsx de word sessie te openen, waar ik tot op vandaag geen verder nieuws heb ontvangen nadat je mij voorstelde dit te bekijken
https://www.helpmij.nl/forum/showthread.php/959777-Verzendlijst-in-word-vanuit-excel

Zoals ik reeds meldde, het gaat over eenvoudig (wat is eenvoudig voor sommigen ?) het copiëren van een zone in xlsx naar het document in word, maar zonder copy/paste hoeven te doen.
Of dit een tijdswinst is ? Ja, inderdaad, en het sluit uit dat ik telkens de xlsx moet openen en sluiten.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan