Код, который вы связали, создает SWbemObjectSet, а затем перечисляет свойства его членов (звуковые устройства). Из того, что я могу сказать, вы хотите этот объект, но не хотите перечислять свойства («выходные данные»).
Если это правильно, создайте функцию, которая удаляет выходные операторы и просто возвращает объект SWbemObjectSet.
Public Function getSoundDevices(Optional strComputer As String = ".") As Object
Const cstrQuery As String = "Select * from Win32_SoundDevice"
Dim objWMIService As Object 'TypeName = SWbemServicesEx '
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set getSoundDevices = objWMIService.ExecQuery(cstrQuery, , 48)
Set objWMIService = Nothing
End Function
Затем вызовите функцию, чтобы использовать SWbemObjectSet в качестве ввода для вашего другого кода.
Public Sub test_getSoundDevices()
Dim objSoundDevices As Object 'TypeName = SWbemObjectSet '
Dim objDevice As Object 'TypeName = SWbemObjectEx '
Set objSoundDevices = getSoundDevices()
For Each objDevice In objSoundDevices
'* do what you want for each sound device here *'
Debug.Print "ProductName: " & objDevice.ProductName
Next objDevice
Set objDevice = Nothing
Set objSoundDevices = Nothing
End Sub