Vanuit Outlook wordt er via een regel een script uitgevoerd, dat de bijlage van een bepaalde mail opslaat, vervolgens Excel opstart en daar een werkmap bijwerkt met de opgeslagen gegevens. De bedoeling is dat dit op de achtergrond gebeurt, dat Excel wordt geopend, bijgewerkt en weer gesloten. De bijgewerkte bestandsmap moet dan worden opgeslagen voordat Excel afsluit. Echter, dit laatste lukt niet. Zie code hieronder.
Het probleem is dat Excel de werkmap opent als "alleen-lezen". Bij het opslaan, moet je dus een kopie opslaan. Hoe kan ik de code aanpassen dat Excel het bestand niet als alleen-lezen opent?
Ik heb nog een tweede vraag. Hoe kan ik in de code rekening houden met de vraag of Excel reeds geopend is. M.a.w., de code moet kijken of Excel al geopend is en vervolgens kijken of de map al geopend is. Kortom:
- als Excel reeds geopend is, dan kijken of werkmap geopend is, zo nee, dan eerst Excel openen
- als werkmap reeds geopend is, dan alleen macro uitvoeren, zo nee, dan eerst werkmap openen en dan macro uitvoeren
Het probleem is dat Excel de werkmap opent als "alleen-lezen". Bij het opslaan, moet je dus een kopie opslaan. Hoe kan ik de code aanpassen dat Excel het bestand niet als alleen-lezen opent?
Ik heb nog een tweede vraag. Hoe kan ik in de code rekening houden met de vraag of Excel reeds geopend is. M.a.w., de code moet kijken of Excel al geopend is en vervolgens kijken of de map al geopend is. Kortom:
- als Excel reeds geopend is, dan kijken of werkmap geopend is, zo nee, dan eerst Excel openen
- als werkmap reeds geopend is, dan alleen macro uitvoeren, zo nee, dan eerst werkmap openen en dan macro uitvoeren
Code:
Public Sub Bon_Opslaan(MItem As Outlook.MailItem)
'Opslaan bijlage bestand in map:
Dim oAttachment As Outlook.Attachment
Dim sSaveFolder As String
sSaveFolder = "C:\USERS\BONNEN\BIJLAGEN\"
For Each oAttachment In MItem.Attachments
oAttachment.SaveAsFile sSaveFolder & oAttachment.FileName
Next
'Openen Excel en map
Dim ExApp As Excel.Application
Dim ExWbk1 As Workbook
Dim ExWbk2 As Workbook
Set ExApp = New Excel.Application
Set ExWbk1 = ExApp.Workbooks.Open("C:\USERS\BONNEN\Database.xlsx")
Set ExWbk2 = ExApp.Workbooks.Open("C:\USERS\BONNEN\Registratie.xlsm")
ExApp.Visible = True
'Bijwerken gegevens (runnen van macro ACTUALISEREN) in Excel:
ExWbk2.Application.Run "Module3.Actualiseren"
ExWbk1.Close SaveChanges:=True
ExWbk2.Close SaveChanges:=True
End Sub