Hej alle.
Så er jeg løbet "panden mod muren" !! --- :(
Og håber på lidt hjælp.
Det drejer sig om den ellers velkendte Common Dialog Control.
Kontrollen bruges som oftes på den måde, at man klistre kontrollen på en
form. Jeg er *ikke* interesseret i en form !!
Jeg vil starte kontrollen i et modul. Eller rettere - jeg vil starte den i
Outlook's "This Outlook Session" - som egentlig vistnok er en Class (den
bliver "ti-vær-ti-fælde" gemt som en cls-fil).
På MSDN fandt jeg følgende:
http://msdn.microsoft.com/library/periodic/period00/CommonDialogsPartI.htm
Som siger at objektet kan oprettes i et modul.
Jeg klippe-klistre følgende codesovs.
[Start]
Sub GetFileFromOCX()
Dim CDLG As Object
Set CDLG = CreateObject("MSComDlg.CommonDialog")
With CDLG
.DialogTitle = "Get me a File!"
.Filter = _
"Documents|*.doc|Templates|*.dot|Text Files|*.txt"
.ShowOpen
MsgBox .FileName
End With
Set CDLG = Nothing
End Sub
[Slut]
Og der er jo CreateObject der gør "tricket" til modul-anvendelse.
Det virker også fint i VB 6.0 men i VBA (Outlook2K) virker det ikke !!
Den stopper ved ShowOpen.
Jeg får følgende fejlkode:
"Kørselsfejl "32765":
The common dialog function failed during initialization. This error often
occurs when insufficient memory is available."
Altså - jeg kører med NT 4.0, 196 Mb RAM !!
Alene fejlkoden er mystisk (32765=16 bit). Det er som om Bill siger - "kan
jeg ikke meddele en korrekt fejlkode - må jeg hellere meddele en no-nonsen
fejlkode". Ok - det hved jeg ikke om jeg har ret i. Det står for min egen
regning.
I referencen fandt jeg også "Microsoft Dialog Automation Object". I
objectoversigten hedder den "DialogObjects". Umiddelbart ser den fornuftig
ud når man kikker metoder, egenskaber etc. Derfor lavede jeg følgende kode:
[Start]
Sub GetFileFromOCX ()
Dim ComDialog As Object
Set ComDialog = CreateObject("DialogObjects")
With ComDialog
.DialogTitle = "Get me a File!"
.Filter = _
"Documents|*.doc|Templates|*.dot|Text Files|*.txt"
ComDialog.ShowOpen
MsgBox .FileName
End With
Set ComDialog = Nothing
End Sub
[The end]
Den er der ingen dokumentation til, så jeg vidste ikke hvad der skulle stå i
CreateObjects. Jeg gættede på at der skulle stå "DialogObjects". Men
programmet fejler (selfølgelig) ved kommandoen og melder:
"Kørselsfejl "429":
ActiveX-komponenten kan ikke oprette objektet".
Er der én eller anden out there som har en metode - eller evt. en alternativ
løsning på problemet.
Eller skal jeg igang med noget API ?
På forhånd tak.
Med venlig hilsen
Carsten Marcussen