Страницы: 1
RSS
Как заставить функцию выводить значения в массив?
 
Есть функция, которая по замыслу должна на каждой итерации получать имена принтеров, и сохранять их в массив, чтобы можно было потом этот массив использовать в другой функции или макросе.
Но получилось лишь одно: выводится последнее значение в переменную, а при попытке вывести в массив 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
 
Это Вы трусы через голову пытаетесь одеть.
Код
Public Function AllPrinters()
' 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
    ' 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
    AllPrinters = aDevices
End Function
Я сам - дурнее всякого примера! ...
 
Цитата
kuklp написал:
Это Вы трусы через голову пытаетесь одеть.
:D  катаюсь...

Что-то всё равно идёт не так. Не верно задан тип переменной, как я понимаю.
Задал тип String, ругается теперь на другую строку.
 
Не так у Вас руки идут. Вам уже советовали книжку почитать. Что по-Вашему должен вывести дебаг? Массив? И с чего Вы это взяли? Учите матчасть, здесь не бесплатные курсы по информатике для начинающих.
Я сам - дурнее всякого примера! ...
 
Цитата
kuklp написал:
Вам уже советовали книжку почитать.
Укажите из какой главы какой книги можно об этом узнать, и я прочитаю, а пальцем в небо тыкать, и читать всё под ряд времени не хватит, увы, да и целесообразность сомнительна, для решения одной прикладной задачи.
 
Цитата
Ярослав Чикал написал:
Укажите из какой главы какой книги
- не вопрос. Только боюсь для Вас это будет слишком дорого. Не потянете.
Я сам - дурнее всякого примера! ...
 
Если повезёт, найду там, где оно будет бесплатным, вы только поделитесь  ;)  
 
Цитата
Ярослав Чикал написал:
целесообразность сомнительна, для решения одной прикладной задачи
Тогда смысл разбираться, отнимать время у помогающих... Платный раздел - просто и быстро!
 
Цитата
AAF написал:
Платный раздел - просто и быстро!
Давали бы мне деньги на платные решения, я бы так и делал, всегда. Но что имею, то имею. Потому и обращаюсь на форумы, что есть люди знающие то, чего не знаю я, и которые заходят на форум именно для того, чтобы помочь тем, кто о помощи просит.  
 
Цитата
Ярослав Чикал написал:
Давали бы мне деньги на платные решения
Вы бесплатно работаете? Но это оффтоповая тема...

Цитата
Ярослав Чикал написал:
что имею, то имею
При этом и останетесь, если решать будете свои вопросы чужими руками и мозгами.

Цитата
Ярослав Чикал написал:
заходят на форум именно для того, чтобы помочь
Помощь стоит научиться принимать, а не учить помогающих, как ее оказывать.
 
Оффтоп:
Цитата
Ярослав Чикал написал:
чтобы помочь тем, кто о помощи просит.  
А не подскажете, на какой форум нужно зайти, чтобы обратиться к вам за помощью? И функция поиска я вам уже написал, чем она вам не подходит, коль вы там не отписываетесь, и не пора ли прекратить обсуждение того, чему вы учиться не желаете?
Изменено: Андрей VG - 01.08.2017 13:47:17
Страницы: 1
Наверх