/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
CommenDialog, VB/VBA
Fra : Carsten Marcussen


Dato : 18-01-01 15:17

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



 
 
Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste