MyTetra Share
Делитесь знаниями!
Ошибка оператора ChDir в программе для выбора файла
Время создания: 16.03.2019 23:43
Текстовые метки: ChDir, сетевая папка
Раздел: !Закладки - VBA - FSO
Запись: xintrea/mytetra_db_adgaver_new/master/base/1515743043vcb13hhm0e/text.html на raw.githubusercontent.com

Написал программу для выбора файла, работает отлично. Но не могу заставить ее открывать нужную папку. Помогите кто чем может. Заранее спасибо.

sub searchfile()

ActWbk = ActiveWorkbook.Name

    ChDir Sheets("Set").Cells(13, 2).Value 'Эта команда не работает, что только не делал - открывает Мои документы

    While Msg <> 6

        If Application.FindFile = False Then Exit Sub

        OpenFileName = ActiveWorkbook.Name

        Msg = MsgBox("Этот файл подойдет?", vbYesNoCancel, "Выбор файла")

        If Msg = 2 Then

            ActiveWorkbook.Close

            Exit Sub

        End If

        If Msg = 7 Then ActiveWorkbook.Close

    Wend

end sub

В ячейке B13 сетевой адрес: \\192.168.0.200\s1\ЗАКАЗЫ\Заказы\Пробная\

 

Располагаю следющей информацией.

Свойства ChDrive, ChDir не умеют работать с сетевыми адресами в формате UNC. Они работают только с локальными адресами папок и с теми сетевыми адресами, в которых фигурируют буквы дисков, нпр. X:\...\...

 

Для работы с сетевыми папками можно:

а) создать соединение с нужной/корневой папкой в эксплорере (присвоить ему диск). Недостаток - на каждом комрьютере, на котором работает макрос, должно быть создано это соединение вручную.

б) Воспользоваться API функциями. Ниже приведен пример из учебника для этого случая. Вместо СhDir будет использоваться ChDirUNC - процедура из макроса.

 

' **************************************************************

' Declarations for the ChDirUNC example function

' **************************************************************

'Set the current directory to a UNC path

Private Declare Function SetCurDir Lib "kernel32" Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long

 

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

' Comments: Change to a UNC Directory

'

' Arguments:    sPath       The path to change to.

'                           Can be either standard or UNC form:

'                           <Drive Letter>:\Path

'                           \\server\share\path

'

' Date          Developer       Action

' --------------------------------------------------------------

' 02 Jun 04     Stephen Bullen  Created

'

Sub test_ChDirUNC()

Dim strPath As String

strPath = "путь"

ChDirUNC strPath

End Sub

 

Sub ChDirUNC(ByVal sPath As String)

    Dim lReturn As Long

    lReturn = SetCurDir(sPath)

    If lReturn = 0 Then

'        Err.Description vbObjectError + 1, "Error setting path."

        Debug.Print Err.Number

    End If

End Sub

 

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования