Тема: Как вызвать окно выбора каталога или в окне выбора файлов разрешить выделять сразу несколько файлов?

Мне необходимо из каталога получить имена всех файлов чертежей, чтобы потом их в виде блоков вставить в один общий чертёж.
Для начала начал использовать функцию ShowOpen:
Public Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" _
(pOpenfilename As OPENFILENAME) As Long
Public Const OFN_HIDEREADONLY = &H4
Public 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
'@~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@
' Display and use the File open dialog
'@~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@
Public Function ShowOpen() As String
  Dim strTemp As String
  Dim VertName As OPENFILENAME
  VertName.lStructSize = Len(VertName)
  VertName.hwndOwner = ThisDrawing.hWnd
  VertName.lpstrFilter = "×åðò¸æ AutoCAD2000 (*.dwg)" + Chr$(0) + "*.dwg" + Chr$(0)
  VertName.lpstrFile = Space$(254)
  VertName.nMaxFile = 255
  VertName.lpstrFileTitle = Space$(254)
  VertName.nMaxFileTitle = 255
  VertName.lpstrInitialDir = CurDir
  VertName.lpstrTitle = "Открытие файлов чертежей"
  VertName.flags = 0
  If GetOpenFileName(VertName) Then
    strTemp = (Trim(VertName.lpstrFile))
    ShowOpen = Mid(strTemp, 1, Len(strTemp) - 1)
  End If
End Function
Но эта функция (или данные настройки) позволяет выделить только один файл в окне выбора фалов. Какие мне надо задать ключи или настройки чтобы можно было выделить несколько файлов одновременно?
Я могу поступить и другим образом: Задать имя калога и попытаться в этом каталоге выбрать названия всех необходимых файлов с помощью функции Dir? Только не знаю какой функцией можно вызвать окно выбора каталога а не файлов. Нучите, если знаете, вызывать это окно или сделать правильные настройки в окне выбора файлов для выбора множества файлов!

Re: Как вызвать окно выбора каталога или в окне выбора файлов разрешить выделять сразу несколько файлов?

Public Const OFN_HIDEREADONLY = &H4
Public Const OFN_ALLOWMULTISELECT = &H200
Public Const OFN_EXPLORER = &H80000
VertName.flags = OFN_HIDEREADONLY +OFN_ALLOWMULTISELECT + OFN_EXPLORER

Re: Как вызвать окно выбора каталога или в окне выбора файлов разрешить выделять сразу несколько файлов?

Спасибо cadhelp!
Файлы теперь стали выделяться сразу несколько штук одновременно. Только ответ функции равен "".
Как мне получить информацию о выделенных файлах? Мне надо получить их названия и путь к каталогу в котором они находятся.
И ещё cadhelp, ты не знаешь как вызывать системное окно выбора активного каталога?

Re: Как вызвать окно выбора каталога или в окне выбора файлов разрешить выделять сразу несколько файлов?

Я все знаю, только мне некогда
>> Только ответ функции равен "".
обрати внимание VertName.nFileOffset содержит номер начала первого фила
незабудь увеличить  VertName.nMaxFile хотя бы до 1024, чтобы все филы влезли
по умолчанию он 256.
>> Только ответ функции равен "".
ответ в strTemp,
вместо
strTemp = (Trim(VertName.lpstrFile))
ShowOpen = Mid(strTemp, 1, Len(strTemp) - 1)
надо ShowOpen=strTemp
А какова хрена тебе не нравится ВиБишная CommonDialog ???

Re: Как вызвать окно выбора каталога или в окне выбора файлов разрешить выделять сразу несколько файлов?

http://www.freevbcode.com/ShowCode.asp?ID=852

Re: Как вызвать окно выбора каталога или в окне выбора файлов разрешить выделять сразу несколько файлов?

Спасибо cadhelp за ответ!
Вроде маленько разобрался.
А на вопрос почему не использую ВиБишную CommonDialog, потому что этот компонент не всегда добавляется на форму (особенно на работе) из-за лицензии
Послушай cadhelp! Научи меня беднягу одной хитрости: как вызывать окно выбора активного каталога (например куда надо скопировать файлы или откуда надо скопировать файлы) средствами VBA?
И ещё как отображать ProgressBar в строке состояния Excell, чтобы пользователь видел проценты отображения выполнения задачи!

Re: Как вызвать окно выбора каталога или в окне выбора файлов разрешить выделять сразу несколько файлов?

> выбора
активного каталога ??? What is that
CurDir
Returns a Variant (String) representing the current path.

Re: Как вызвать окно выбора каталога или в окне выбора файлов разрешить выделять сразу несколько файлов?

Sub WAIT(AllNumbers As Integer, ByVal CurNumber As Integer)
Dim str As String
str = Round(100 * (CurNumber / AllNumbers))
If AllNumbers = CurNumber Then
    Application.StatusBar = ""
Else
    Application.StatusBar = str & " % Done"
End If
End Sub

Re: Как вызвать окно выбора каталога или в окне выбора файлов разрешить выделять сразу несколько файлов?

Мне необходимо из каталога получить имена всех файлов чертежей

Используя библиотеку DOSLIB можно так:

' запись в одну строку
ThisDrawing.SendCommand "(setvar ""users1"" (vl-princ-to-string  (dos_getfilem ""Select a file"" ""C:\\"" ""Drawing files (*.dwg)|*.dwg|All files (*.*)|*.*||"")))" & vbCr

В "users1" будет результат