Оболочка в VBA.Я что-то упускаю, чтобы заставить Shell работать в другой базе данных доступа - PullRequest
2 голосов
/ 19 июня 2019

Я почесал голову на этом.Обычно я нахожу ответ из-за какого-то глупого синтаксиса или отсутствия места, но этот сбивает меня с толку

Я уже использовал функцию «Оболочка» в других базах доступа для открытия папок, и я собирался использовать тот жеструктура кода, чтобы сделать то же самое, однако теперь я постоянно получаю 5 код ошибки «Недопустимый вызов процедуры или аргумент»

Использование функции оболочки следующим образом:

Dim FreightFile_Path As String

FreightFile_Path = "S:\Supply Chain\Freight"

Shell "explorer.exe" & " " & FreightFile_Path, vbNormalFocus

Я пробовалдвойные кавычки и Chr (34) вокруг них, которые я опубликую в разделе кода.Я также буквально скопировал код из одной базы данных (в которой он работал) в другую, и это вызвало у меня ошибку.

Мне не хватает чего-то, что мне нужно активировать в ms Access, чтобы разрешить Shell функция для работы?Я проверил ссылки в VBA и убедился, что они совпадают.

Ищу несколько предложений.

Вещи, которые я пробовал:

Call Shell("explorer.exe" & " " & Chr(34) & "S:\Shared" & Chr(34), 
vbNormalFocus)
Shell "explorer.exe " & Chr(34) & FreightFile_Path & Chr(34), vbNormalFocus
Shell "explorer.exe" & " " & FreightFile_Path, vbNormalFocus
Dim retVal
retVal = Shell("explorer.exe" & " " & FreightFile_Path, vbNormalNoFocus)
Dim i As String
i = "explorer.exe" & " " & FreightFile_Path
Shell i, vbNormalFocus
FreightFile_Path = "S:\Supply Chain\Freight"
Shell "explorer.exe " & FreightFile_Path, vbNormalFocus

Перезапустил приложение, перезагрузил компьютер;ничего из этого не сработало.

Ответы [ 4 ]

1 голос
/ 20 июня 2019

У меня просто была такая же проблема. В моем случае это был антивирус, блокирующий Shell. Так уж сложилось, что ИТ-отделы установили исключения для моего компьютера для одной базы данных, но не для другой. См. мой вопрос и ответ для более подробной информации.

0 голосов
/ 20 июня 2019

Новая попытка.Используйте вызов WinAPI

Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, _
    ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, _
    ByVal lpDirectory As String, ByVal lpnShowCmd As Long) As Long

Public Sub ShellEx(ByVal Path As String, Optional ByVal Parameters As String, Optional ByVal HideWindow As Boolean)
    If Dir(Path) > "" Then
        ShellExecute 0, "open", Path, Parameters, "", IIf(HideWindow, 0, 1)
    End If
End Sub

Sub Test()
    FreightFile_Path = "S:\Supply Chain\Freight"
    ShellEx "c:\windows\explorer.exe", """" & FreightFile_Path & """"
End Sub
0 голосов
/ 20 июня 2019

Спасибо всем за помощь. Возможно, это не ответ на проблему Shell, но он будет работать для открытия пути к файлу.

Dim FreightFilePath As String
FreightFilePath = "S:\Supply Chain\Freight"
Application.FollowHyperLink FreightFilePath
0 голосов
/ 19 июня 2019

Попробуйте:

FreightFile_Path = "S:\Supply Chain\Freight"
Shell "cmd /c start explorer.exe """ & FreightFile_Path & """"

Это обходной путь, но он работает ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...