Есть функция, которая по замыслу должна на каждой итерации получать имена принтеров, и сохранять их в массив, чтобы можно было потом этот массив использовать в другой функции или макросе. 
Но получилось лишь одно: выводится последнее значение в переменную, а при попытке вывести в массив AllPrinters() выходит ошибка.
				Но получилось лишь одно: выводится последнее значение в переменную, а при попытке вывести в массив AllPrinters() выходит ошибка.
| Код | 
|---|
| Public Function AllPrinters() As String
    ' Used: Frans Bus, 2015. See http://pixcels.nl/set-activeprinter-excel
    Const HKEY_CURRENT_USER = &H80000001
    Dim regobj As Object
    Dim aTypes As Variant
    Dim aDevices As Variant
    Dim vDevice As Variant
    Dim sValue As String
    Dim Printer As String
        
    ' connect to WMI registry provider on current machine with current user
    Set regobj = GetObject("WINMGMTS:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
       
    ' get the Devices from the registry
    regobj.EnumValues HKEY_CURRENT_USER, _
    "Software\Microsoft\Windows NT\CurrentVersion\Devices", aDevices, aTypes
       
    ' find Printer and create full name
    For Each Printer In AllPrinters
        For Each vDevice In aDevices
            ' get port of device
            regobj.GetStringValue HKEY_CURRENT_USER, _
            "Software\Microsoft\Windows NT\CurrentVersion\Devices", vDevice, sValue
        Next
        Printer = vDevice & " " & Split(sValue, ",")(1)
    Next
End Function
 | 
