投稿者 魔界の仮面弁士  (社会人) 投稿日時 2010/1/7 22:43:27
> VB6にてファイルを開くコモンダイアロゴを表示する
> プログラムを作成し、EXEを作ったところ
ダイアロゴ ⇒ ダイアログ の誤記は別として、上記は
VB6 の CommonDialog コントロールの事を指しているのですよね?
(EXE ということは、VBA6 の間違いでも無さそうですし)

> 1.実行時エラー393 leftプロパティの値の取得は出来ません。
質問内容からは、その「leftプロパティ」がどのオブジェクトの left プロパティの事か
分かりませんので、どのような処理を行っているのか、該当箇所のコードを見せて頂けないでしょうか。

また、そのメッセージは一字一句違わず、正確なメッセージ内容でしょうか?
こちらでもいろいろと試してみたのですが、『leftプロパティの値の取得は出来ません。』という
メッセージを得る事はできませんでした。

# MSComDlg.CommonDialog には Left プロパティが無いので、
# 別のオブジェクトの left/Height を操作しようとしているのだとは思いますが…。

'実行時エラー382: 実行時には値を設定できません。 
'CallByName CommonDialog1, "Left", VbLet, 0 

'実行時エラー382: 'Left' プロパティは、実行時には設定できません。 
'Me.Controls("CommonDialog1").Left = 0 

'実行時エラー393: 'Left' プロパティは実行時に値の取得はできません。 
'MsgBox Me.Controls("CommonDialog1").Left 

'実行時エラー393: 実行時には値を取得できません。 
'MsgBox CallByName(CommonDialog1, "Left", VbGet) 

'実行時エラー438: オブジェクトは、このプロパティまたはメソッドをサポートしていません。 
'MsgBox CommonDialog1.object.Left 
'CommonDialog1.object.Left = 0 

'コンパイルエラー: メソッドまたはデータ メンバが見つかりません。 
'CommonDialog1.Left = 0 



> 場合によって次のどちらかが出ます。
もし、「ファイルを開く」ダイアログの位置調整を行おうとしているのであれば、
『画面中央に表示』程度の制御でよければ、MSComDlg の代わりに DialogObjects を
使う事ができます。


具体的には、"Microsoft Dialog Automation Objects" (DLGOBJS.DLL)を
参照設定して、下記のように記述すれば OK です。

Private Sub Command1_Click()
    Dim dlg As DialogObjects.ChooseFile
    Set dlg = New DialogObjects.ChooseFile

    dlg.Center = False

    If dlg.Show() Then
        MsgBox dlg.Directory & "\" & dlg.FileName, vbInformation
    Else
        MsgBox "キャンセルされました。"
    End If
End Sub


ダイアログの表示位置を、Center プロパティ(初期値は False)で
 True : 主画面の中央に表示
 False: 現在画面の左上に表示
のように切り替える事ができます。


DLGOBJS.DLL は通常、VB6 をインストールしたフォルダの
  VB98\Wizards\PDWizard\dlgobjs.dll
にあります(このファイルは標準再頒布可能です)。

また、"Microsoft Dialog Automation Objects" を参照設定できない場合には、
C:\Program Files\Microsoft Visual Studio\COMMON\Tools\VB\UNSUPPRT\DLGOBJ(もしくは、VB6 CD-ROM 内の Tools\VB\UNSUPPRT\DLGOBJ\)
にある DLGOBJS.REG をダブルクリックして、レジストリに登録すれば OK です。