• 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.

VBA code openen Word document adv keuzelijst

Status
Niet open voor verdere reacties.

Jonathan1

Gebruiker
Lid geworden
23 jul 2020
Berichten
52
Hallo,

Ik zit met onderstaand probleem:

In een excel bestand heb ik in cel B7 een keuzelijst geplaatst.
Nu wil ik aan de hand van wat de gebruiker kiest dmv een commandoknop een bepaald Word document openen.

Vb. Als de gebruiker in de keuzelijst "Nederlands" kiest en hij druk daarna op de commandoknop, dat hiermee het Word document in het Nederlands wordt geopend.
Kiest de gebruiker Engels, dan de Engelse versie.

Het probleem stelt zich dat ik hier geen VBA code voor vind.
Kan iemand mij helpen met de code?

Mvg,

Jonathan
 
Zoiets:
Code:
Sub OpenWord()
    Set wordapp = CreateObject("word.Application")
    wordapp.documents.Open "C:\Users\Jonathan1\Desktop\Document_" & Range("B7").Value & ".docx"
    wordapp.Visible = True
End Sub
 
Laatst bewerkt:
Bedankt voor het antwoord.

Ja gedeeltelijk wel.
Het Word document zou ook op de voorgrond moeten komen.

Hoe kan in je code specifiek toewijzen dat indien Nederlands gekozen wordt, hij het NL document opent en bvb; bij keuze Engels het Engelse document?


Jonathan
 
Taal instellen heeft met je Windows standaard instellingen te maken.
 
@Jveer
Het zijn verschillende documenten. een NL versie en een Engelse versie. Dit heeft naar mijn weten niks te maken met standaard instellingen.
 
Dan maak je er dit van:
Code:
Sub OpenWord()
    Taal = IIf(UCase(Range("B7").Value) = "NEDERLANDS", "NL", "EN")
    Set wordapp = CreateObject("word.Application")
    wordapp.documents.Open "C:\Users\Jonathan1\Desktop\Document_" & Taal & ".docx"
    wordapp.Visible = True
    wordapp.Activate
End Sub
 
Laatst bewerkt:
Oke, ik had je vraag verkeerd begrepen
 
Code:
Sub M_snb()
  with getobject(Application.defaultfilepath & "Document_" & [B7] & ".docx")
    .windows(1).Visible = True
  end with
End Sub

NB. Zet in B7 NL of EN
 
Laatst bewerkt:
Hoi,

Het is nog niet wat ik wil.

ik heb onderstaande code maar ik krijg de foutmelding: compileerfout: blof if zonder End if.
Hoe kan ik dot oplossen?

Code:
Sub Test()
If Range("$B$11").Value = "Nederlands" Then
If Range("$B$11") = "" Then
MsgBox "Taal ontbreekt!", vbCritical, "Vul een taal in"
Exit Sub

Dim wrdApp As Word.Application
Dim wrdDoc As Word.Document

Set wrdApp = CreateObject(Class:="Word.Application")

Set wrdDoc = wrdApp.Documents.Open(Filename:="H:\Mijn Documenten\test\Test Word\cel 1.docx")
wrdDoc.Range.InsertAfter "Dit is gemaakt vanuit Excel en komt in zicht!"
'de volgende regels zorgen ervoor dat Word zichtbaar en geactiveerd wordt in venstermodus maximaal

wrdApp.Visible = True
wrdApp.WindowState = wdWindowStateMaximize
wrdApp.Activate
Else
If Range("$B$11").Value = "Frans" Then

Set wrdApp = CreateObject(Class:="Word.Application")

Set wrdDoc = wrdApp.Documents.Open(Filename:="H:\Mijn Documenten\test\Test Word\Frans\cel 1_frans.docx")
wrdDoc.Range.InsertAfter "Dit is gemaakt vanuit Excel en komt in zicht!"
'de volgende regels zorgen ervoor dat Word zichtbaar en geactiveerd wordt in venstermodus maximaal

wrdApp.Visible = True
wrdApp.WindowState = wdWindowStateMaximize
wrdApp.Activate
Else
End If

End Sub
HTML:
Jonathan
 
Laatst bewerkt:
Dat lijkt me toch een duidelijke melding.
Plaats hier tevens je code in codetags.
Gebruik ook inspringpunten, dan voorkom je dat probleem omdat je dat dan duidelijk kan zien.

Ook heb je niet gedaan wat is geadviseerd.
 
Laatst bewerkt:
Ik ben niet zo gekend met het forum en VBA.

Wat bedoel je precies met, niet toegepast wat is geadviseerd.
Tevens hoe kan je weten waar je de inspringmomenten moet plaatsen?
 
In #6 en #8 worden mogelijlke en werkende oplossingen voor je vraag gegeven.
Die hoef je alleen naar eigen wens aan te passen, maar je maakt het jezelf moeilijk door verschillende paden en documentnamen te gebruiken, omdat je dan meerdere items per taal moet aanpassen.

Simpel voorbeeld voor het gebruik van inspringpunten.
Code:
If.....Then
    [COLOR="#008000"]'Inspringen[/COLOR]
Else
    [COLOR="#008000"]'Inspringen[/COLOR]
End If

Zo zie je eenvoudig welke End If bij welke If hoort.
 
Laatst bewerkt:
Om je iets verder terwille te zijn.
Als je de paden en documentnamen netjes inricht heb je hier voldoende aan:
Code:
Sub Test()
    Dim wrdApp As Object
    Dim wrdDoc As Object
    Dim Taal As String
    
    Dim Hoofdpad As String
    Dim Zinnetje As String
    
    Taal = UCase(Range("B11"))
    If Taal = "" Then
        MsgBox "Taal ontbreekt!", vbCritical, "Vul een taal in"
        Exit Sub
    End If
    
    Hoofdpad = "H:\Mijn Documenten\test\Test Word\"
    
    Set wrdApp = CreateObject(Class:="Word.Application")
    Set wrdDoc = wrdApp.Documents.Open(Filename:=Hoofdpad & Taal & "\cel 1_" & Taal & ".docx")
    
    Select Case Taal
        Case "NEDERLANDS":  Zinnetje = "Dit is gemaakt vanuit Excel en komt in zicht!"
        Case "ENGELS":      Zinnetje = "This is made from Excel and comes into view!"
        Case "FRANS":       Zinnetje = "Ceci est fait à partir d'Excel et apparaît!"
        Case "DUITS":       Zinnetje = "Dies ist aus Excel gemacht und kommt in Sicht!"
    End Select
    
    wrdDoc.Range.InsertAfter Zinnetje
    wrdApp.Visible = True
    wrdApp.WindowState = 1
    wrdApp.Activate
End Sub

Dat kan uiteraard nog met allerlei controles worden uitgebreid.
 
Laatst bewerkt:
Hartelijk dank, het werkt fantastisch!

Enkel nog een klein foutje.
Alle Cases werken, behalve het Frans. Daar blijft hij de fout geven dat hij het document niet kan vinden. Terwijl dit wel degelijk in de juiste map staat.
Wat kan hier de oorzaak van zijn?

Tevens zou ik graag het document automatisch willen aanvullen met gegevens uit een bepaald tabblad. Kan dit met het opnemen van een macro in Word en waar kan ik die code dan neerzetten?
 
De code is voor de talen gelijk dus dan is er toch echt iets niet in orde met het pad of de documentnaam.
 
Ja het is echt heel bizar.
ik heb het document verwijdert, opnieuw aangemaakt, map verwijdert en weer aangemaakt, toch werkt het niet.

Kan ik de macro van het document ook in deze macro implementeren?
 
Over dat document kan ik uiteraard niets zeggen als je niet bijvoorbeeld een scherm afdruk laat zien van de verkenner met dat document en het pad in beeld.
De macro van welk document heb je het over?
 
Dat kan altijd natuurlijk. Je ziet dat je in Excel ook VBA voor Word kan gebruiken.
Andersom werkt dat ook.
Laat ook de code eens zien die je nu hebt waarin Frans fout gaat.
 
Code:

Code:
Sub Test()
    Dim wrdApp As Object
    Dim wrdDoc As Object
    Dim Taal As String
    
    Dim Hoofdpad As String
    Dim Zinnetje As String
    
    Taal = UCase(Range("B11"))
    If Taal = "" Then
        MsgBox "Taal ontbreekt!", vbCritical, "Vul een taal in"
        Exit Sub
    End If
    
    Hoofdpad = "H:\Mijn Documenten\test\Test Word"
    
    Set wrdApp = CreateObject(Class:="Word.Application")
    Set wrdDoc = wrdApp.Documents.Open(Filename:=Hoofdpad & Taal & "\intake_" & Taal & ".docx")
    
    Select Case Taal
        Case "NEDERLANDS":  Zinnetje = "Dit is gemaakt vanuit Excel en komt in zicht!"
        Case "ENGELS":      Zinnetje = "This is made from Excel and comes into view!"
        Case "FRANS":       Zinnetje = "Ceci est fait à partir d'Excel et apparaît!"
    End Select
    
    wrdDoc.Range.InsertAfter Zinnetje
    wrdApp.Visible = True
    wrdApp.WindowState = 1
    wrdApp.Activate
End Sub

Foutcode 5174.
 
Laatst bewerkt:
Je hebt hier de laatste backslash verwijderd:
Code:
Hoofdpad = "H:\Mijn Documenten\test\Test Word[COLOR="#FF0000"]\[/COLOR]"

Plaats code hier tevens in codetags.
Zie de link in mijn handtekening.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan