Альтернатива использованию shell32.dll
Можно ли написать процедуру печати файла, не используя слово "Shell32.dll", так как использование этого в моем защищенном VBA в файле XLSB указывает на то, что файл Excel содержит сценарий, связанный с трояном, и не может отправить по электронной почте или загрузить файл Excel.
Существующий код, вызывающий сообщение об ошибке троянца.
Option Explicit
#If VBA7 Then
Private Declare PtrSafe 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 nShowCmd As Long) As Long
#Else
Private 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 nShowCmd As Long) As Long
#End If
Public Const SW_HIDE = 0
Sub PrintFile(ByVal strFilePath As String)
Dim retVal As Long
retVal = ShellExecute(0, "Print", strFilePath, 0, 0, SW_HIDE)
If retVal < 32 Then
MsgBox "An error occured...Could not print"
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
End If
End Sub
1 ответ
Стандартная библиотека VBA содержит тонкую оболочку вокруг этой функции API, удобно названную Shell
, в VBA.Interaction
модуль - может быть, это может работать для вас?
result = Shell("print " & path, vbHide)