Hallo allemaal,
Ik heb in Word een administratieve applicatie gemaakt (brieven-offertes-fakturen etc).
Er is een Hoofdmenu als Userform en vandaaruit worden oa dot’s opgestart.
Er is een mogelijkheid om adressen te kiezen via een combobox die ik vul vanuit een Excel-adressenbestand en ook kun je een vrij adres invoeren.
Er is een knop die dat Excel-adressenbestand opent zodat de gebruiker dat kan editten.
Ik heb nu een mogelijkheid gemaakt om de vrije adresgegevens dmv een knop toe te voegen aan dat Excel-adressenbestand.
Tot zover gaat alles goed.
Het is natuurlijk gebruiksvriendelijker om na het invoegen van die vrije adresgegevens het Excelblad daarna achter de schermen te sorteren.
En dan gaat er iets fout.
Er blijven Excel-processen op de achtergrond aanwezig hetgeen later foutmeldingen oplevert.
Ik open taakbeheer en zie als ik het hoofdmenu opstart dat het proces Excel erbijkomt en evenlater weer sluit. Klopt, bij activering van hoofdmenu wordt Excel geopend, combobox gevuld en Excel weer afgesloten.
Als ik de knop “Openen adressenbestand” klik dan zie ik het proces Excel ook weer erbij komen en als je dan Excel weer afsluit is het proces ook weg.
Het invoegen van een vrij adres ging op dezelfde wijze. Echter toen ik het stukje erbij geprogrammeerd had om het excelblad te SORTEREN, wilde het proces Excel niet meer sluiten. Het sorteren werkt overigens perfect.
Doe je dat daarna nog een keer dan zijn er twee processen en dan komen er foutmeldingen.
Ondanks de opdracht “Application.Quit” blijft Excel geopend????
Als ik het stukje sorteren uitvink gaat alles goed en wordt het Excelproces afgesloten.
Hier het bewuste stukje VB-code:
De variabele ExBes bevat het pad en de naam van het Excelbestand.
De variabele VR bevat de eerstvolgende lege rij in het Excelbestand.
Public Sub VoegToe()
' Applicatie Excel openen
Set xlapp = CreateObject("Excel.application")
xlapp.Visible = False
'Juiste excel-bestand openen
xlapp.Workbooks.Open FileName:=ExBes
'Juiste werkblad openen
xlapp.Worksheets("klanten").Activate
' Nu het aantal gebruikte rijen tellen; Vrije rij = gebruikte rijen + 1.
VR = xlapp.activesheet.usedrange.Rows.Count + 1
' Tekstblokken in de cellen zetten
xlapp.activesheet.Range("B" & VR).Value = txbNaam
xlapp.activesheet.Range("C" & VR).Value = txbTav
xlapp.activesheet.Range("D" & VR).Value = txbAdres
xlapp.activesheet.Range("E" & VR).Value = txbPostc
xlapp.activesheet.Range("F" & VR).Value = txbPlaats
xlapp.activesheet.Range("G" & VR).Value = txbTelefoon
xlapp.activesheet.Range("H" & VR).Value = txbFax
' ----------------------------------------------------------------------------------
' Nu de lijst sorteren
xlapp.activesheet.Cells.Select
xlapp.ActiveWorkbook.Worksheets("klanten").Sort.SortFields.Clear
xlapp.ActiveWorkbook.Worksheets("klanten").Sort.SortFields.Add Key:=Range("B2:B" & VR) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With xlapp.ActiveWorkbook.Worksheets("klanten").Sort
.SetRange Range("A1:H" & VR)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
' ---------------------------------------------------------------------------------
' De applicatie weer sluiten.
xlapp.Application.DisplayAlerts = False
xlapp.Application.Save
xlapp.Application.DisplayAlerts = True
xlapp.Application.Quit
Set xlapp = Nothing 'release the reference.
End Sub
Resume:
Als ik het stukje code tussen de streepjeslijnen uitvink werkt het goed, sluit het proces Excel keurig maar wordt het werkblad natuurlijk niet gesorteerd.
Waarom sluit Excel niet volledig terwijl wel de regel “xlapp.Application.Quit” wordt doorlopen.
Hoe kan ik dat oplossen, ik ben al een week aan het zoeken en proberen
Wie heeft een oplossing
Gr. Brusje
Ik heb in Word een administratieve applicatie gemaakt (brieven-offertes-fakturen etc).
Er is een Hoofdmenu als Userform en vandaaruit worden oa dot’s opgestart.
Er is een mogelijkheid om adressen te kiezen via een combobox die ik vul vanuit een Excel-adressenbestand en ook kun je een vrij adres invoeren.
Er is een knop die dat Excel-adressenbestand opent zodat de gebruiker dat kan editten.
Ik heb nu een mogelijkheid gemaakt om de vrije adresgegevens dmv een knop toe te voegen aan dat Excel-adressenbestand.
Tot zover gaat alles goed.
Het is natuurlijk gebruiksvriendelijker om na het invoegen van die vrije adresgegevens het Excelblad daarna achter de schermen te sorteren.
En dan gaat er iets fout.
Er blijven Excel-processen op de achtergrond aanwezig hetgeen later foutmeldingen oplevert.
Ik open taakbeheer en zie als ik het hoofdmenu opstart dat het proces Excel erbijkomt en evenlater weer sluit. Klopt, bij activering van hoofdmenu wordt Excel geopend, combobox gevuld en Excel weer afgesloten.
Als ik de knop “Openen adressenbestand” klik dan zie ik het proces Excel ook weer erbij komen en als je dan Excel weer afsluit is het proces ook weg.
Het invoegen van een vrij adres ging op dezelfde wijze. Echter toen ik het stukje erbij geprogrammeerd had om het excelblad te SORTEREN, wilde het proces Excel niet meer sluiten. Het sorteren werkt overigens perfect.
Doe je dat daarna nog een keer dan zijn er twee processen en dan komen er foutmeldingen.
Ondanks de opdracht “Application.Quit” blijft Excel geopend????
Als ik het stukje sorteren uitvink gaat alles goed en wordt het Excelproces afgesloten.
Hier het bewuste stukje VB-code:
De variabele ExBes bevat het pad en de naam van het Excelbestand.
De variabele VR bevat de eerstvolgende lege rij in het Excelbestand.
Public Sub VoegToe()
' Applicatie Excel openen
Set xlapp = CreateObject("Excel.application")
xlapp.Visible = False
'Juiste excel-bestand openen
xlapp.Workbooks.Open FileName:=ExBes
'Juiste werkblad openen
xlapp.Worksheets("klanten").Activate
' Nu het aantal gebruikte rijen tellen; Vrije rij = gebruikte rijen + 1.
VR = xlapp.activesheet.usedrange.Rows.Count + 1
' Tekstblokken in de cellen zetten
xlapp.activesheet.Range("B" & VR).Value = txbNaam
xlapp.activesheet.Range("C" & VR).Value = txbTav
xlapp.activesheet.Range("D" & VR).Value = txbAdres
xlapp.activesheet.Range("E" & VR).Value = txbPostc
xlapp.activesheet.Range("F" & VR).Value = txbPlaats
xlapp.activesheet.Range("G" & VR).Value = txbTelefoon
xlapp.activesheet.Range("H" & VR).Value = txbFax
' ----------------------------------------------------------------------------------
' Nu de lijst sorteren
xlapp.activesheet.Cells.Select
xlapp.ActiveWorkbook.Worksheets("klanten").Sort.SortFields.Clear
xlapp.ActiveWorkbook.Worksheets("klanten").Sort.SortFields.Add Key:=Range("B2:B" & VR) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With xlapp.ActiveWorkbook.Worksheets("klanten").Sort
.SetRange Range("A1:H" & VR)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
' ---------------------------------------------------------------------------------
' De applicatie weer sluiten.
xlapp.Application.DisplayAlerts = False
xlapp.Application.Save
xlapp.Application.DisplayAlerts = True
xlapp.Application.Quit
Set xlapp = Nothing 'release the reference.
End Sub
Resume:
Als ik het stukje code tussen de streepjeslijnen uitvink werkt het goed, sluit het proces Excel keurig maar wordt het werkblad natuurlijk niet gesorteerd.
Waarom sluit Excel niet volledig terwijl wel de regel “xlapp.Application.Quit” wordt doorlopen.
Hoe kan ik dat oplossen, ik ben al een week aan het zoeken en proberen

Wie heeft een oplossing
Gr. Brusje