VBA Word document openen vanuit Excel

Status
Niet open voor verdere reacties.

sunnyboy59

Nieuwe gebruiker
Lid geworden
1 nov 2011
Berichten
2
Ik ben een portal aan het maken van waaruit diverse formulieren en documenten geopend worden en worden gevuld met wat basisinformatie.
De portal wordt gemaakt in Excel en de documenten kunnen Excel-sheets zijn of Worddocs. Voor de Excelsheets heb ik alles werkend, maar bij de worddocs loop ik nog tegen wat probleempjes aan.
Het te openen document kan in drie toestanden verkeren:
- Het is al geopend. Dat wordt bij A gecontroleerd en het document wordt actief gemaakt. Dat lijkt goed te gaan, maar het document wordt niet op de voorgrond geplaatst (zie F)
- Het is al eerder geopend voor dit project en staat in de projectdirectory, het wordt nu vanuit de projectdirectory geopend en op de voorgrond geplaatst
- Het is nog niet eerder geopend voor dit project en er wordt een leeg document uit de moederdirectory in de projectdirectory geplaatst, geopend en op de voorgrond geplaatst

Het vreemde is, dat als ik een reeds geopend document op de voorgrond wil plaatsen, er niets gebeurd, maar als ik het document open wel.

De vervelendste fout treed op als er meerdere Worddocs geopend worden en men die afsluit. Dan begint Word te roepen dat Normal.dotm gewijzigd is en of ik die op wil slaan. Ik weet niet hoe ik dat kan voorkomen.

Nog een fout is, dat als ik het laatste Worddoc afsluit en daarna nog een Worddoc probeer te openen, hij het Excel het Wordobject niet meer kan vinden, terwijl de variable Wordapp nog wel een verwijzing naar het Wordobject bevat.

Heeft iemand misschien wat meer ervaring hiermee dan ik en kan mij een paar tips geven?

Bij voorbaat dank

Henri Sonnenschein



Code:
Public WordApp, Worddoc As Variant
Sub ActiveerWrd(best As String)
    Dim i As Integer
    Dim fnd As Boolean
    Dim strBestandInclFolder As String
    
    'Zet een berichtregel in de Excelsheet
    Call Berichtrgl("P", "U opent een Word-bestand - " _
        & "Helaas vergt het openen van Word-bestanden meer tijd - " _
        & "Een ogenblik geduld a.u.b.............")
    
    If IsEmpty(WordApp) Then
        Set WordApp = CreateObject("Word.Application")
    End If
    wbName = ActiveWorkbook.Name
    
    
A    ' Controleer of het bestand al is geopend
    fnd = False
    
    With WordApp
        For i = 1 To .Application.documents.Count
            If .Application.documents(i).Name = best Then
                .documents(i).Activate
                fnd = True
            End If
        Next i
    End With
    
    If Not fnd Then
    
        strBestandInclFolder = Application.ThisWorkbook.Path & "\" & best
        If (FileFolderExists(strBestandInclFolder)) Then
            fnd = True
        Else
            CopyFile (best)
            If (FileFolderExists(strBestandInclFolder)) Then fnd = True
        End If
            
        If fnd Then
            Set Worddoc = WordApp.documents.Open( _
                Filename:=strBestandInclFolder, _
                ReadOnly:=False, AddToRecentFiles:=False)
        Else
                MsgBox "Kan het gevraagde formulier niet vinden, raadpleeg uw formulierbeheerder.", vbOKOnly, "Foutje"
        End If
    End If
    If fnd Then
F        WordApp.Visible = True
    End If
    Set Worddoc = Nothing
    Call Berichtrgl("D")
End Sub
 
Laatst bewerkt door een moderator:
Als je de lezers en helpers een plezier wilt doen moet je je code even in een codetag plaatsen zodat ook de inspringpunten zichtbaar zijn, als je die al hebt gebruikt, en het in een niet proportioneel lettertype staat.
Dat verhoogt in grote mate de leesbaarheid en de wil van anderen om het te lezen.
 
Laatst bewerkt:
Visual Basic is iets anders dan Visual Basic for Applications, VBA is programmeren binnen Office applicaties. Verplaatst naar juiste sectie. Daarmee de vraag, ben je wel op de hoogte van hetgeen je aan het doen bent? Er is een duidelijk verschil tussen deze twee talen.
 
Dit is voldoende:

Code:
Sub ActiveerWrd(best As String)
  Application.ActivateMicrosoftApp 1
  getobject(ThisWorkbook.Path & "\" &best)
End Sub
 
Hoi snb,

bedankt voor je reactie. De eerste regel opent inderdaad een lege Word-applicatie.
De tweede regel lijkt niets te doen.
Pas als ik het bestand probeer te verwijderen krijg ik de melding dat het in gebruik is, maar ik kan het noch in Word, noch in de opendocumentscollectie terugvinden.
Ik moet eerlijk zeggen dat ik deze week ook niet veel tijd heb gehad om er naar te kijken. Volgende week duik ik er weer in.
 
Laatst bewerkt door een moderator:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan