VBA: Быстрая проверка наличия книги/надстройки в памяти

Если нужно узнать, загружена в памяти надстройка или рабочая книга без перебора и не только видимые книги, то можно это легко сделать вот таким вот способом:

'=======================================================================================
' Функция, проверяющая наличия в памяти книги/надстройки
Public Function CheckInMemory(ByVal WBName As String, Optional ByVal TrimName As Boolean = True) As Boolean

    CheckInMemory= False
    If TrimName Then WBName = Trim(WBName)
    If WBName = "" Then Exit Function

    On Error GoTo BayBay
    If Len(Workbooks(WBName).FullName) > 0 Then
        CheckInMemory= True
        Exit Function
    End If
BayBay:
End Function

Пример использования:

    If Not CheckInMemory("zip.xla") Then Exit Sub
    If CheckInMemory("mybase.xls") Then
        MsgBox "Можно работать дальше!"
    End If
Реклама

VBA: Быстрая проверка наличия компьютера в сети по пингу

Если необходимо узнать, подключен ли какой то компьютер сейчас или нет на VBA то самый быстрый способ это сделать с помощью команды PING:

' Возвращает TRUE, если пинг прошел
Public Function Ping(ByVal ComputerName As String) As Boolean
Dim oPingResult As Variant
     For Each oPingResult In GetObject("winmgmts://./root/cimv2").ExecQuery _
         ("SELECT * FROM Win32_PingStatus WHERE Address = '" & ComputerName & "'")
         If IsObject(oPingResult) Then
             If oPingResult.StatusCode = 0 Then
                 Ping = True
                 'Debug.Print "ResponseTime", oPingResult.ResponseTime
                Exit Function
             End If
         End If
     Next
End Function

Проверим наличие интернет соединения

Проверим наличие интернет соединения на VBA с помощью функции из библиотеки wininet.dll:

Private Declare Function InternetGetConnectedState _  
Lib "wininet.dll" (ByRef lpSFlags As Long, _  
ByVal dwReserved As Long) As Long  
  
Public Function InternetConnected() As Boolean  
  
  'Если у вас есть соединение, то функция вернет True, иначе - False  
  InternetConnected = InternetGetConnectedState(0&, 0&)  
  
End Function

Список надстроек в библиотеке и памяти

Просмотреть список надстроек, хранящихся в папке библиотеки (LIBRARY) и в памяти:

Sub AddIns_List()  
Dim iFor%, iRow%, WS As Worksheet  
  
  iRow = 1  
  Set WS = ThisWorkbook.Worksheets("AddIns")  
  
'Видит только папку LIBRARY  
  If Application.AddIns.Count > 0 Then  
  WS.Cells(iRow, 1) = "Установлены следующие надстройки (AddIns):"  
  For iFor = 1 To Application.AddIns.Count  
  iRow = iRow + 1  
  WS.Cells(iRow, 1) = Application.AddIns.Item(iFor).FullName  
  Next iFor  
  End If  
  
' - Только для офиса 2010 и 2013  
#If VBA7 Then  
  If iRow > 1 Then iRow = iRow + 1  
'Видит только папку LIBRARY и то, что сейчас есть в памяти  
  If Application.AddIns2.Count > 0 Then  
  WS.Cells(iRow, 1) = "Установлены следующие надстройки (AddIns2):"  
  For iFor = 1 To Application.AddIns2.Count  
  iRow = iRow + 1  
  WS.Cells(iRow, 1) = Application.AddIns2.Item(iFor).FullName  
  Next iFor  
  End If  
  
  If iRow > 1 Then iRow = iRow + 1  
'Description, Guid, ProgId - String; Connect - Boolean  
  If Application.COMAddIns.Count > 0 Then  
  WS.Cells(iRow, 1) = "Установлены следующие надстройки (COMAddIns):"  
  For iFor = 1 To Application.COMAddIns.Count  
  iRow = iRow + 1  
  WS.Cells(iRow, 1) = Application.COMAddIns.Item(iFor).Description  
  Next iFor  
  End If  
#End If  
  
If Not WS Is Nothing Then Set WS = Nothing  
End Sub

VBA — Visual Basic for Applications

Visual Basic for Applications (VBA, Visual Basic для приложений) — немного упрощённая реализация языка программирования Visual Basic, встроенная в линейку продуктов Microsoft Office (включая версии для Mac OS), а также во многие другие программные пакеты, такие как AutoCAD, SolidWorks, CorelDRAW, WordPerfect и ESRI ArcGIS. VBA покрывает и расширяет функциональность ранее использовавшихся специализированных макро-языков, таких как WordBasic.  VBA является интерпретируемым языком. Как и следует из его названия, VBA близок к Visual Basic. VBA, будучи языком, построенным на COM, позволяет использовать все доступные в операционной системе COM объекты и компоненты ActiveX. По сути, возможно создание приложения на основе Microsoft Word VBA, использующего только средства Corel Draw.  В будущем Microsoft планирует заменить VBA на Visual Studio Tools for Applications (VSTA) — инструментарий расширения функциональности приложений, основанный на Microsoft .NET.