Страницы: 1
RSS
Макрос получения полного имени пользователя в Windows, Макрос получения полного имени пользователя в Windows. выдаёт ошибку Run Time error 94
 
Всем добрый день. У меня вопрос. есть макрос получения полного имени пользователя в Windows. Так вот как оказалось что не везде он работает и выдаёт вот такую ошибку: Run Time error "94" invalid use off null. Подскажите как это исправить и что можно с этим сделать? Спасибо.
Код
Public Function GetDiskInfo()
    Dim pWMI As Object, pDisks As Object, pDisk As Object
    Dim res As String, s As String
     
    Set pWMI = GetObject("winmgmts:\\")
    Set pDisks = pWMI.ExecQuery("Select * from Win32_DiskDrive Where BytesPerSector Is Not Null", , 48)
     
    For Each pDisk In pDisks
        s = TrimAll(pDisk.SerialNumber)
        If Len(s) Then res = res & "-" & s
    Next
    GetDiskInfo = Mid(res, 2)
End Function

После срабатывания макроса должна выходить форма с номером После ошибки ругается на user form
Изменено: juk2000 - 15.12.2016 14:07:37
 
juk2000, добрый день.
Лучше приложите файл, дело может быть не только в приведенной вами функции.
 
ПРОБЛЕМА РЕШЕНА, МОЖНО ТЕМУ ЗАКРЫВАТЬ. СПАСИБО
 
А поделиться решением проблемы?
 
Jungl, я не разбираюсь особо в макросах. просто вышел на связь человек. который этот макрос мне делал. что то там исправил, и я да же не знаю что. и всё заработало
 
juk2000, вы можете привести функцию из первого поста в исправленном варианте?.. вероятно, изменения были внесены в строку запроса
Изменено: JeyCi - 15.12.2016 20:05:40
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Код
Option Explicit

Public Function GetDiskInfo() As String
    Dim pWMI As Object, pDisks As Object, pDisk As Object
    Dim res As String, s As String
     
    Set pWMI = GetObject("winmgmts:\\")
    If pWMI Is Nothing Then Exit Function
    Set pDisks = pWMI.ExecQuery("Select * from Win32_DiskDrive Where BytesPerSector Is Not Null", , 48)
    If pDisks Is Nothing Then Exit Function
    For Each pDisk In pDisks
        s = TrimAll(pDisk.SerialNumber & "")
        If Len(s) Then res = res & "-" & s
    Next
    GetDiskInfo = Mid(res, 2)
End Function
Function TrimAll(ByVal s As String)
    s = Replace(s, vbCrLf, " ")
    s = Replace(s, vbLf, " ")
    s = Replace(s, Chr(10), " ")
    s = Replace(s, vbNewLine, " ")
    s = Replace(s, vbTab, " ")
    s = Replace(s, " ", "")
    TrimAll = s
End Function
ВОТ РЕШЕНИЕ ПРОБЛЕММЫ, КТО ПОНИМАЕТ, ТОТ РАЗБЕРЁТСЯ. ЛИЧНО ДЛЯ МЕНЯ НИЧЕГО НЕ ПОНЯТНО. МЕНЯ ВОЛНОВАЛ КОНЕЧНЫЙ РЕЗУЛЬТАТ
 
судя по коду:
просто какие-то (непечатаемые) символы (разметка рекордсета?), видимо, мешали... вобщем, зачистить результат запроса надо... juk2000 спасибо
Изменено: JeyCi - 15.12.2016 21:14:10
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Страницы: 1
Читают тему
Наверх