ofn.lpstrFile需要先初始化,如=String(255,0)

解决方案 »

  1.   

    我初始化 ofn.lpstrFile = String(255,0) 之后,文件选择对话框根本就不出来了。
      

  2.   

    注意事项:如果文件名没有255则加chr(0),多于则截断
    我这个调用自己写的函数就可以了
    Public Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As LongPublic Type OPENFILENAME
        lStructSize As Long
        hwndOwner As Long
        hInstance As Long
        lpstrFilter As String
        lpstrCustomFilter As String
        nMaxCustFilter As Long
        nFilterIndex As Long
        lpstrFile As String
        nMaxFile As Long
        lpstrFileTitle As String
        nMaxFileTitle As Long
        lpstrInitialDir As String
        lpstrTitle As String
        flags As Long
        nFileOffset As Integer
        nFileExtension As Integer
        lpstrDefExt As String
        lCustData As Long
        lpfnHook As Long
        lpTemplateName As String
    End TypeFunction Main_Exp_Name(ByVal File_Exp_Str As String, ByVal File_Exp_Name As String, File_Path As String, File_Name As String) As Boolean
    'File_Exp_Str  显示的字符
    'File_Exp_Name  扩展名
    'File_Path    输出的路径
    'File_Name    输出的文件名
    Dim Open_File_Name As OPENFILENAME
        Open_File_Name.lStructSize = Len(Open_File_Name)
        Open_File_Name.lpstrFilter = File_Exp_Str + Chr$(0) + File_Exp_Name + Chr$(0)
        Open_File_Name.lpstrFile = Space$(254)
        Open_File_Name.nMaxFile = 255
        Open_File_Name.lpstrFileTitle = Space$(254)
        Open_File_Name.nMaxFileTitle = 255
        Open_File_Name.lpstrTitle = "打开dbf文件"
        Open_File_Name.flags = 0
        File_Path = GetOpenFileName(Open_File_Name)
    If Trim(Open_File_Name.lpstrFile) = "" Then
    MsgBox "您没有选择文件"
    Main_Exp_Name = False
    Exit Function
    ElseIf Dir(Trim(Open_File_Name.lpstrFile)) = "" Then
    MsgBox "您选择的文件不存在"
    Main_Exp_Name = False
    Exit Function
    ElseIf LCase(Right(Trim(Open_File_Name.lpstrFile), 4)) <> LCase(Right(File_Exp_Name, Len(File_Exp_Name) - 2)) + Chr(0) Then
    MsgBox "您选择的不是" + File_Exp_Name + "文件"
    Main_Exp_Name = False
    Exit Function
    End If     '打开,供使用
    Open_File_Name.lpstrFile = Left(Trim(Open_File_Name.lpstrFile), Len(Trim(Open_File_Name.lpstrFile)))
    File_Path = Left(Trim(Open_File_Name.lpstrFile), (Len(Trim(Open_File_Name.lpstrFile)) - Len(Trim(Open_File_Name.lpstrFileTitle)) - 1))
    File_Name = Left(Trim(Open_File_Name.lpstrFileTitle), Len(Trim(Open_File_Name.lpstrFileTitle)) - 1)
    End Function