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

Word macro bestand opzoeken

Status
Niet open voor verdere reacties.

NicoH1967

Gebruiker
Lid geworden
22 jul 2016
Berichten
48
Ik ben op zoek naar een macro die een word document (of PDF) opent vanuit een opgegeven map,
maar door ingave van een nummer in een cel op het werkblad.
Ik heb wel een code om een word bestand te openen,maar dan puur op naam van het bestand en ik wil een bepaald bestand openen.
Dit kunnen bijvoorbeeld bijlage's zijn.
Ondertstaand gebruik ik nu.

Sub Open_Word_Document()

'Opens a Word Document from Excel

Dim objWord As Object

Set objWord = CreateObject("Word.Application")
objWord.Visible = True

'Change the directory path and file name to the location
'of your document

objWord.Documents.Open "C:\Formulieren\PalletbonWZ1.dotx"

End Sub
 
Zonder voorbeeld wordt het gissen.

Je kunt "C:\Formulieren\PalletbonWZ1.dotx" variabel maken door deze bv. vanuit een cel te vullen. Dit kun je laten triggeren door in een bepaalde cel een bepaald nummer in te vullen als je er een lijstje van maakt en gebruik te maken van het change_event.

Code:
Kolom A, Kolom B
1      , Bestand 1
2      , Bestand 2

Als deze aanwijzingen onvoldoende zijn raad ik aan om alsnog een voorbeeldbestandje te plaatsen ...
 
Laatst bewerkt:
reactie

Dank je voor je snelle reactie. Mijn bedoeling is ook door het invullen van de cel met een nummer het betreffende word document te openen. Ik geed dan de word bestanden een nummer
ipv een naam. Een zoekvenster met het nummer wat gezocht wordt er alvast in is ook een optie.

Ik heb al een tijdje lopen zoeken, maar kwam niet verder als een vast ebstand openen, waar in de macro een vast bestandsnaam staat.
waar zou ik eventueel die toeveoging van jou tussen meoeten zetten.??

alvast bedankt voor je hulp
 
Zonder foutafhandeling (dus als je een ongeldige waarde invoert krijg je een foutmelding). Het getal dient in A1 in te worden gevuld:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    
    If Target.Address = "$A$1" Then
        Range("B1").Value = "... EVEN GEDULD A.U.B. HET BESTAND WORDT GEOPEND ..."
        Dim objWord As Object
    
        Set objWord = CreateObject("Word.Application")
        objWord.Visible = True

        objWord.Documents.Open "C:\Temp\Peter\" & Target.Value & ".docx"
        Range("B1").ClearContents
        
    End If
End Sub

Ga op de sheet staan waar je de code "achter" wilt hebben en druk op <Alt>+<F11> >>> VB wordt geopend
Dubbelklik op de juiste sheet onder project >>> Als niet geopend dan wordt het code venster getoond
Plak de code in het geopende venster
Sla de Excel op als Macro enabled (.xlsm)
Plak de code in het
 
Top

Peter,

Dit komt aardig in de buurt wat ik bedoel. Alleen als word openstaat met een ander bestand
geeft hij een foutmelding. Ik moet eerst word helemaal afsluiten en het nummer (ook als het hetzelfde nummer is ) opnieuw invoeren en dan opent het
bestand zich weer.


De regel van de foutmelding; Set objWord = CreateObject("Word.Application")

Voor de rest ben ik er al erg blij mee en kan ik hier weer wat verder op borduren...
wellicht heb je nog een oplossing, maar sowieso bedankt :thumb:
 
Hmmm. Bij mij opent hij gewoon het nieuwe bestand. Alleen als ik 2 keer hetzelfde bestand op geef komt hij met een melding dat het bestand al is geopend.

Werkt dit beter?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    
    If Target.Address = "$A$1" Then
        Range("B1").Value = "... EVEN GEDULD A.U.B. HET BESTAND WORDT GEOPEND ..."
        Dim objWord As Object
    
        On Error Resume Next
        Set objWord = GetObject("Word.Application")
        If objWord Is Nothing Then
            Set objWord = CreateObject("Word.Application")
        End If
        On Error GoTo 0

        objWord.Visible = True
        objWord.Documents.Open "W:\Temp\Peter\" & Target.Value & ".docx"
        
        Range("B1").ClearContents
       
    End If
End Sub
 
Laatst bewerkt:
foutmelding

Peter, hij gaf dit aan als fout,
Ik kan dus geen tweede openen door word helamaal af te sluiten.
de regel waar hij een fout aangeeft is; objWord.Visible = True
Fout 91 tijdens runtime:

Objectvariabele of blokvariabele With is niet ingesteld

Wellicht kun je hier iets mee ??:rolleyes:
 
Zo open je een Wordbestand vanuit Excel:

Code:
Sub M_snb()
   getobject("C:\Formulieren\PalletbonWZ1.dotx").visible=true
End Sub

of

Code:
Sub M_snb()
   application.followhyperlink "C:\Formulieren\PalletbonWZ1.dotx"
End Sub
 
Beste SNB,

Ik wil graag vanuit een cel in excel een nummer of naam invoeren en op die manier uit een map het ingevoerde bestand openen.
Dit gaat al aardig met het bestand van Peter, alleen als word open staat met een leeg bestand of een bestand uit de lijst geeft hij een foutmelding.
Als word afgesloten is start hij vanuit de cel het gewilde bestand door invoer van een willekeurige naam of nummer ( die zich wel in de bewuste map bevind) prima op.

Een standaard bestand openen met wat jij aangeeft is inderdaad mogelijk, maar het gaat dus om een willekeurig bestand, wellicht heb je een tip.

:thumb:
 
Je kunt geen willekeurige bestanden openen, want willekeurige bestanden bestaan niet.

Zoals een andere helper al aangaf: beperkte info, beperkte antwoorden.
Jij verstrekt te weinig informatie. Plaats een voorbeeldbestand.

Het bestand in cel A1:

Code:
Sub M_snb()
   getobject(sheet1.cells(1).value).visible=true
End Sub
 
Laatst bewerkt:
bestand

Beste SNB, onderstaand bestand gebruik ik nu.
Door een bestandsnaam of nummer in cel a1 in te voeren, opent het dit bestand uit de betreffende map.
Alleen als ik nogmaals daarna via een nieuwe invoer een ander bestand wil openen, geeft hij een foutmelding.
Alleen als ik Word afsluit doe hij het weer wel. Ik weet niet of dit op te lossen valt met een verandering in de code.
Ik hoop dat dit iets meer informatie is, ik ben ook nog vrij nieuw op dit forum....:thumb:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$A$1" Then
Range("B1").Value = "... EVEN GEDULD A.U.B. HET BESTAND WORDT GEOPEND ..."
Dim objWord As Object

On Error Resume Next
Set objWord = GetObject("Word.Application")
If objWord Is Nothing Then
Set objWord = CreateObject("Word.Application")
End If
On Error GoTo 0

objWord.Visible = True
objWord.Documents.Open "W:\Temp\Peter" & Target.Value & ".docx"

Range("B1").ClearContents

End If
End Sub
 
Ik kan het probleem niet reproduceren. Kun je een voorbeeldbestand plaatsen?
 
bestand

Bekijk bijlage Voorbeeld.xlsm

Bij deze een vorbeeld, ik heb dan een bestand in de map geplaats onder bijvoorbeeld de naam Nico en roep door invoer in cel a1
"nico"dit bestand op of een ander bestand in die mapdoor die naam in te voeren.
Alleen bij een tweede invoer krijg ik een foutmelding en moet ik word eerst afsluiten voordat de macro weer correct wordt uitgevoerd.

:rolleyes:
 
En Voorbeeld1.xlsm werkt bij jou nog steeds niet goed? Want de macro moet idd. achter het werkblad hangen en niet in een module.

Daarnaast zie ik nu pas dat je een bestand *.dotx probeert te openen. Dit zijn template-bestanden. Ik weet niet of dit de reden is dat het niet goed gaat, want ook met 2 *.dotx-bestanden kan ik de fout niet reproduceren.

Misschien heeft het te maken met bepaalde instellingen in Word? Wat gebeurt er als je beide bestanden handmatig opent? Anders dan dit heb ik overigens geen ideeën meer ... :(
 
bestand

Beste,

Het bestand blijkt toch beter te werken als ik dacht. Thuis heb ik een macintosch en op het werk een pc en daar kan ik gewoon doorgaan met diverse bestanden openen.
Alleen als het bestand niet aanwezig is in de map krijg ik het macro te zien met een foutmelding. Ik zou dit graag niet zichtbaar willen zien, maar
een melding dat het document niet aanwezig is.

:)
 
Je hebt dit dus alleen op je werk nodig? Want dan is het probleem "opgelost".

Macro met een stukje error handling:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    
    If Target.Address = "$A$1" Then
        Range("B1").Value = "... EVEN GEDULD A.U.B. HET BESTAND WORDT GEOPEND ..."
        Dim objWord As Object

        On Error Resume Next
        Set objWord = GetObject("Word.Application")
        If objWord Is Nothing Then
            Set objWord = CreateObject("Word.Application")
        End If
        On Error GoTo WordBestandBestaatNiet:

        objWord.Documents.Open "C:\Temp\Peter\" & Target.Value & ".dotx"
        objWord.Visible = True
        Range("B1").ClearContents
        Exit Sub

WordBestandBestaatNiet:
        MsgBox "Het gekozen bestand kan niet worden gevonden"
        Range("B1").ClearContents
    
    End If
End Sub
 
Dan kan veel simpeler met:

Code:
Sub M_snb()
   if dir(sheet1.cells(1).value)<>"" then getobject(sheet1.cells(1).value).visible=true
End Sub
 
code

SNB,

Is de door jou gegeven code dan om de foutmelding weg te werken ?? en zo ja
waar zet ik hem dan.
 
Het is de enige code die je nodig hebt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan