• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Automatisch vernieuwen in Excel

Status
Niet open voor verdere reacties.

Withaar

Verenigingslid
Lid geworden
8 apr 2001
Berichten
3.551
Ik heb een DB programma (dat ik verder niet kan veranderen) dat csv files met data uit de BD kan aanmaken.
Verder kan ik aangeven dat er een word sjaboonbrief gestart moet worden en welke macro, als er een in zit automatisch gestart moet worden.

Nu heb ik echter een data dump die zo complex is dat deze alleen in excel verder te verwerken is.

Idee is om nu eerst een soort dummy brief sjabloon af te starten, hierin een macro op te nemen die vervolgens excel start en dat de excel sheet via Externe gegevens importen automatische de gegevens op de sheet ververst.

Bijna alle onderdelen zijn nu klaar en werken ook op één ding na.
Als ik met de hand het excel blad open krijg ik een popup met de vraag Automatisch vernieuwen inschakelen, ik klik hier dan bevestigd op en de data uit het csv bestand worden netjes ververst.

Nu wil ik dit afstarten vanuit Word met een Macro.

Ik gebruik hiervoor de volgende code in het Word dummy bestand;
Code:
Sub StartExcel()

Dim ExcApp As Object
Set ExcApp = CreateObject("Excel.Application")
ExcApp.Visible = True
ExcApp.Workbooks.Open "C:locatie van het excel bestand op mijn schijf"
End Sub

Ook dit gaat goed, excel wordt gestart en het juiste bestand wordt geopend.
Alleen krijg ik de vraag of de gegevens vernieuwd moeten worden niet.
Ik heb Set ExcApp = Update al geprobeerd, maar dat is het niet.
Ik krijg de vraag natuurlijk liever helemaal niet, een automatische keuze voor vernieuwen zou het mooiste zijn.

N.b. een andere optie zou zijn dat als het excel blad opgestart wordt er iets gaat lopen dat er voor zorgt dat de tabbladen (16 stuks) met koppelingen automatisch vernieuwd worden. De optie in onder Data wel beschikbaar.

N.b. ik werk hier met Office 2003.
 
Laatst bewerkt:
Zo zou het moeten werken:

Code:
Sub StartExcel()
    
    Dim ExcApp As Object
    Dim sFile As String
    Dim bUpdateLinks As Boolean
    
    sFile = "C:locatie van het excel bestand op mijn schijf"
    bUpdateLinks = True
    
    Set ExcApp = CreateObject("Excel.Application")
    
    ExcApp.AskToUpdateLinks = False
    ExcApp.Visible = True
    
    Call ExcApp.Workbooks.Open(sFile, bUpdateLinks)

End Sub

Ik zou er trouwens niet voor kiezen om ExcApp lokaal te gebruiken. Daar je CreateObject gebruikt wordt de geheugenruimte die gereserveerd is voor het Excel-app.-object niet automatisch opgeruimd wanneer de Sub wordt verlaten.
Wanneer je het dit echter expliciet doet dmv
Code:
Set ExcApp = Nothing
Dan wordt Excel afgesloten.
Je zult de Excel-app.-variabele dus buiten de Sub moeten definieren om dit out-of-scope issue te omzeilen en memory leakage te voorkomen.
 
Laatst bewerkt:
Ik ga het morgen op m'n werk even proberen.

Bedankt voor de reactie.
N.b. omdat openen wel al werkte ben ik zelf ook bezig geweest met een macro die de betreffende tabjes vernieuwd als excel opstart.
Probleem daarbij is echter dat de macro niet in het excelblad zelf wordt opgeslagen maar in m'n persoonlijke map, wat niet zo handig is want ook andere gaan hier gebruik van maken. Het bestand komt op een share te staan.

N.b.t. die 'oplossing' nog tips?
 
Ik zou de volgende code in het sjabloonbrief-object plakken:

Code:
Option Explicit

Public m_ExcApp As Object

Private Sub Document_Open()

    On Error Resume Next
    
    'Zoek naar een bestaande instantie van Excel (is Excel al geopend?)
    Set m_ExcApp = GetObject(, "Excel.Application")
    
    If Err.Number <> 0 Then
        'Excel is nog niet geopend; Open een nieuwe Excel-instantie
        Set m_ExcApp = CreateObject("Excel.Application")
    End If
    
    On Error GoTo ErrH
    
    m_ExcApp.AskToUpdateLinks = False
    
CleanUp:
    Exit Sub
ErrH:
    MsgBox Err.Description, vbExclamation
    Resume CleanUp
End Sub

Private Sub Document_Close()
    'Geef resources vrij naar Windows
    Set m_ExcApp = Nothing
End Sub

Tussen het openen en sluiten van de brief kun je zodoende gebruik maken van het Excel-app.-object bijv. het zichtmaken van de app. en het openen van werkmappen.

Succes ermee!
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan