GetOpenFileName-API in Word VBA

  • Onderwerp starter Onderwerp starter HSr
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

HSr

Nieuwe gebruiker
Lid geworden
8 okt 2008
Berichten
3
Voor het gebruiken van CommonDialogs gebruik ik in MS Access-projecten de API 'GetOpenFileName' (comdlg32.dll). Gaat prima, bevalt uitstekend.
Nu wil ik deze functie ook gebruiken in een Word-projectje, maar dat krijg ik nog niet aan de praat:
Om de Dialogs op de juiste manier te openen, geef je in de call een objectje mee met onder andere de windows-handle van het (user)form vanwaaruit je de dialog wilt openen. Nu hebben UserForms in MS Access wel een hWnd, die je daarvoor kunt gebruiken, maar de Forms in MS Word hebben die property niet. Hierdoor levert de call naar de API niets op.
Iemand een idee hoe ik dit kan oplossen?

Een alternatief is de API 'SHBrowseForFolder' (Shell32), die vergelijkbare functionaliteit biedt, maar die wil ik eigenlijk niet gebruiken, omdat die minder mogelijkheden heeft/lijkt te hebben (daarbij lukt het mij bijvoorbeeld niet om een initiële folder op te geven en om de titel van het dialoogschermpje aan te passen).

Heeft iemand dit in Word al eens bij de hand gehad?

Bvd, Henk
 
Laatst bewerkt:
In Word gebruik je daarvoor:

Code:
   Application.Dialogs(wdDialogFileOpen).Show
 
In Word gebruik je daarvoor:

Code:
   Application.Dialogs(wdDialogFileOpen).Show


Snb, bedankt voor het meedenken.

Dit is echter niet waar het om gaat. Deze dialogs worden gebruikt om Word acties te laten uitvoeren, die je ook allemaal vanuit de menu's zou kunnen starten.
Het gaat mij er echter om om informatie te verzamelen. Ik bouw een wizard en onderweg wordt de gebruiker gevraagd om bijvoorbeeld een pad op te geven, of een bepaald document of een bepaalde printer. Wanneer de CommonDialog is gesloten, bevat vervolgens het object nog de verzamelde informatie.
Voor zover ik kan nagaan, is dat niet het geval met de eigen dialogs van Word.
 
Dan gaat er nu een wereld voor je open:

Code:
    With Application.Dialogs(wdDialogFileOpen)
        .Display
        c0 = .Name
    End With
In de variabele c0 staat de naam van het geselekteerde bestand.
Het bestand wordt niet geopend
 
Dan gaat er nu een wereld voor je open:

Code:
    With Application.Dialogs(wdDialogFileOpen)
        .Display
        c0 = .Name
    End With
In de variabele c0 staat de naam van het geselekteerde bestand.
Het bestand wordt niet geopend


Ik vermoedde al dat het zo simpel zou moeten kunnen en had ook al alle properties van het Dialog-objectje geprobeerd, maar geen daarvan bevat bruikbare informatie. Een Name-property is er ook niet.
Zal wel met de Office-versie te maken hebben. (Ik ploeter in Word 2003 en de toekomstige gebruikers hebben ook lang niet allemaal de beschikking over een nieuwere versie.)

De Dialogs kan ik volgens mij dus niet gebruiken. Ik zal het toch van de API's moeten hebben.

Iemand nog ideeën?

Henk
 
Uit jouw reaktie blijkt dat je mijn suggestie niet hebt begrepen.
En dat heeft niets met de officeversie te maken.
Uit de code die ik je voorschotelde (en die je blijkbaar niet gebruikt hebt) blijkt dat je de gebruiker in je wizard een keuzescherm kunt tonen, waarvan het resultaat in een variable kan worden opgeslagen voor verder gebruik.
Tenzij ik je niet goed begrepen heb was dit toch juist de bedoeling in plaats van het direkt uitvoeren van de aktie die aan het hulpscherm gekoppeld is.
De conclusie van je laatste bericht lijkt mij dan ook ongerijmd.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan