API: Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" 
  ( pOpenfilename As OPENFILENAME) As Long 
结构: Private Type OPENFILENAME 
    lStructSize As Long 'OPENFILENAME 类型的结构对象的大小 
    hwndOwner As Long '调用OpenFile对话框窗体的句柄 
    hInstance As Long '当给出OFN_ENABLETEMPLATEHANDLE标志时,指定对话框模版的句柄.当给出OFN_ENABLETEMPLATE标志时,指定名为lpTemplateName的对话框模版的句柄. 
    lpstrFilter As String '文件类型过滤器 Filter Name & Chr(0) & Filter 
    lpstrCustomFilter As String '保存用户选择的过滤器 
    nMaxCustFilter As Long '指定保存用户选择过滤器的字符长度 
    nFilterIndex As Long '对话框默认显示的过滤器索引 
    lpstrFile As String '默认文件名,多数设为NULL 
    nMaxFile As Long 'lpstrFile内存缓冲区大小 
    lpstrFileTitle As String '返回用户选择的文件名 
    nMaxFileTitle As Long '用户选择的文件名最大长度 
    lpstrInitialDir As String '对话框打开始的默认文件夹 
    lpstrTitle As String '对话框标题 
    flags As Long '对话框功能标志 
    nFileOffset As Integer '返回lpstrFile中文件名的起始字符数 
    nFileExtension As Integer '返回lpstrFile中扩展名的起始字符数 
    lpstrDefExt As String '默认扩展名 
    lCustData As Long '指定发送给hook的内容
 
    lpfnHook As Long 'hook例程指针 
    lpTemplateName As String '对话框模版名称 
  End Type    
源代码: Priv ate Sub OpenDlg() 
    Dim OpenDlg As OPENFILENAME 
    Dim Filename As String 
    With OpenDlg 
      .lStructSize = Len(OpenFile) 
      .hwndOwner = hWnd 
      .hInstance = App.hInstance     
      .lpstrFilter = "Batch Files (*.bat)" & Chr(0) & "*.BAT" & Chr(0) 
      .lpstrFile = String(257, 0) 
      .nMaxFile = Len(OpenFile.lpstrFile) - 1 
      .lpstrFileTitle = OpenFile.lpstrFile     
      .nMaxFileTitle = OpenFile.nMaxFile 
        .lpstrTitle = "Open File:"  
      .flags = &H1000 + &H800 
    End With 
    GetOpenFileName OpenDlg 
    Filename=OpemGlg.lpstrFile 
  End  Sub 

解决方案 »

  1.   

    试了,不成功! (时间有点紧)发源代码如何?[email protected]
      

  2.   

    在窗体上建一个command1按钮。
    Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
    Private 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 Type
    按下command1按钮即可实现打开文件的对话框,同理保存文件对话框也一样。
    Private Sub Command1_Click()    Dim OFName As OPENFILENAME
        OFName.lStructSize = Len(OFName)
        OFName.lpstrFilter =  "All Files (*.*)" + Chr$(0) + "*.*" + Chr$(0)
        OFName.lpstrFile = Space$(254)
        OFName.nMaxFile = 255
        OFName.lpstrFileTitle = Space$(254)
        OFName.nMaxFileTitle = 255
        OFName.lpstrInitialDir = "C:\"
        OFName.lpstrTitle = "打开文件"
        OFName.flags = 0End Sub
      

  3.   

    我写的就是源码。
    有了GetOpenFileName,和OPENFILENAME 就齐了
      

  4.   

    showyeah()方法的倒数第二排加上: filename=GetOpenFileName(OFName)就行了。