gegevens aanvullen mbv VBA in Excel

Status
Niet open voor verdere reacties.

rvandenboogaert

Gebruiker
Lid geworden
14 jan 2011
Berichten
23
Goedemiddag,

Bekijk bijlage Werkvoorraad S.C. Test.xlsm

Wat het bestand doet:
Als ik in tabblad Start in kolom C een aantal waarden invul worden in kolom D t/m G een aantal waarden ingevuld.
Deze worden gevonden mbv vert.zoeken.
Ik heb een macro gemaakt welke wanneer ik op de knop aanmaning druk wordt een Word geopend wordt welke daarna ook weer gegevens haalt uit dit Excel bestand. Echter het probleem van dit bestand is omdat ik 100 regels heb in Excel worden er ook 100 regels ingelezen in Word terwijl ik dit alleen voor de waarden wil waar iets op is ingevuld en niet voor de lege waarden.

Dit kan ik volgens mij alleen bereiken door regels te verwijderen wanneer ik deze niet nodig heb (als ik handmatig rijen in dit excel bestand verwijder dan werkt dit correct in het Word bestand.
Ik heb een macro ingebouwd dat wanneer het bestand wordt gesloten het alle aanpassingen verwijdert.
Ik zoek dus een VBA macro welke rijen aanvult.
Wanneer ik in tabblad Start, in kolom C een waarde invul wil ik dat deze de waarde gaat aanvullen met de gegevens uit kolom I t/m L (in dit voorbeeld) mbv van de formules in kolom D t/m G. En kolom B de formule vult.
Indien mogelijk ook met behoud van de opmaak en dat bij de laatst ingevulde waarde te tabelrand dikker is. Bij onbekende waarden (bijvoorbeeld geen mailadres) geen waarde weergeven.

Weet iemand raad?
Zou me echt helpen.
Alvast bedankt.

Dit is overigens de macro die ik gebruik in Word:

Code:
Sub Aanmaning_InkassoUnie_Brief()
'
' Aanmaning_InkassoUnie_Brief Macro
'
    ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
    ActiveDocument.MailMerge.OpenDataSource Name:= _
        "X:\Afdelingen\Collections\Special Collections\Werkvoorraad\Werkvoorraad S.C. Test.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=X:\Afdelingen\Collections\Special Collections\Werkvoorraad\Werkvoorraad S.C. Test.xlsm;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet " _
        , SQLStatement:="SELECT * FROM `Start$`", SQLStatement1:="", SubType:= _
        wdMergeSubTypeAccess
    Selection.MoveDown Unit:=wdLine, Count:=36
    Selection.MoveRight Unit:=wdCharacter, Count:=4
    Selection.MoveUp Unit:=wdLine, Count:=40
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.TypeBackspace
    Selection.TypeBackspace
    Selection.MoveDown Unit:=wdLine, Count:=2
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.MoveDown Unit:=wdLine, Count:=29
    Selection.MoveUp Unit:=wdLine, Count:=2
    Selection.MoveRight Unit:=wdWord, Count:=5
    ActiveDocument.MailMerge.Fields.Add Range:=Selection.Range, Name:= _
        "Hoofdsom"
    Selection.MoveDown Unit:=wdLine, Count:=4
    ActiveDocument.MailMerge.Fields.Add Range:=Selection.Range, Name:= _
        "Voldaan"
    Selection.MoveDown Unit:=wdLine, Count:=1
    ActiveDocument.MailMerge.Fields.Add Range:=Selection.Range, Name:="Saldo"
    With ActiveDocument.MailMerge
        .Destination = wdSendToNewDocument
        .SuppressBlankLines = True
        With .DataSource
            .FirstRecord = wdDefaultFirstRecord
            .LastRecord = wdDefaultLastRecord
        End With
        .Execute Pause:=False
    End With
    Windows("Inkasso Unie - 2e aanmaning - Test").Activate
'
' Sluiten zonder op te slaan
'
    ActiveWindow.Close SaveChanges:=wdDoNotSaveChanges
End Sub
 
Laatst bewerkt:
rvandenboogaert,

Waarom pas je in de Word macro de SQL statement niet gewoon aan.
Nu haal je alle gegevens op: SQLStatement:="SELECT * FROM `Start$`"
Pas deze gewoon aan naar: SQLStatement:="SELECT * FROM `Start$` WHERE 'Dossiernummer(s)' <> NULL"

Volgens mij heb je dan alleen de regels die je nodig hebt.

Veel Succes.
 
Dag Elsendoorn,

Dit is er 1 die ik ook al geprobeerd had, dit geeft nog steeds het resultaat dat er 100 regels naar Word worden gelezen en er 100 keer het sjabloon in Word wordt geplaatst.
 
rvandenboogaert,

Toch zou het zo moeten lukken ik zou even spelen met de NULL ik ben er niet zeker van dat deze correct is,
het zou ook 0 of "" kunnen zijn.

Veel Succes.
 
Heb het nog wat geprobeerd, ook met:
> 1 en = 1, maar nog worden dan alle waarden (ook de lege) meegenomen.
 
rvandenboogaert,

"SELECT * FROM `Start$` WHERE Dossier <> NULL" zal wel werken als je de koprecord Dossiernummer(s) veranderd in Dossier.
Door de haakjes kan de Connection hem niet gebruiken en wordt er een afwijkende naam gebruiken (waarschijnlijk F3 o.i.d.).
Binnen mijn testbestanden werkte verder goed.

Veel Succes.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan