none
Adicionar botão "salvar como" em um script de inventário RRS feed

  • Pergunta

  • Bom dia!

    Pessoal alguns dias atrás peguei aqui no fórum um ótimo script de inventário, estou usando aqui na empresa e está sendo bem útil.

    Porém para deixá-lo melhor adaptado aqui para a empresa recorro ao fórum para a seguinte pergunta:

    - Como posso adicionar um botão de salvar como no inicio do script de inventário de modo que o técnico possa escolher onde deseja salvar este relatório?

    Não postei aqui este script pois é muito grande e excede o número de caracteres permitido.

    Desde já agradeço a atenção.
    terça-feira, 20 de outubro de 2009 11:51

Respostas

  • Olá,

    Substitua as linhas abaixo:


    ':::::::::::::::::::::::::::::::::::::
    ':: ::
    ':: Função Cria Relatório HTML ::
    ':: ::
    ':::::::::::::::::::::::::::::::::::::
    Sub DataG_CreateFileHTML(byval strPc)
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strPC & "\root\cimv2")
    strProperties = "Name"
    Set colPC = objWMIService.ExecQuery("SELECT " & strProperties & " FROM Win32_ComputerSystem", , wbemFlagReturnImmediately + wbemFlagForwardOnly)
    For Each objItem in colPC
    Host_name = objItem.Name
    Date_Time = Replace(Date, "/", "-") & "~" & Replace(Time,":", "-")
    htmlRel = UCase(caminho & Host_name & "-" & Date_Time & ".html")

    Set objDialog = CreateObject("SAFRCFileDlg.FileSave")

    objDialog.FileName = "inventario.html"
    objDialog.FileType = "html"
    intReturn = objDialog.OpenFileSaveDlg

    If intReturn Then
    Set objFileSys = CreateObject("Scripting.FileSystemObject")
    Set objFH = objFileSys.CreateTextFile(objDialog.FileName)
    objFH.WriteLine HeaderHtml()
    objFH.WriteLine MountHtml
    objFH.WriteLine "</body>" & vbCrLf
    objFH.WriteLine "</html>"
    objFH.close
    End if



    Set oFileSys = Nothing
    Set objFH = Nothing
    wScript.Quit
    Next
    End Sub

    ':::::::::::::::::::::::::::::::::::::
    Init() ::
    ':::::::::::::::::::::::::::::::::::::


    São as ultimas linhas.


    Até mais,

    Jesiel

    Obs.: Se útil, classifique




    • Sugerido como Resposta DIEGO RIERA segunda-feira, 26 de outubro de 2009 16:59
    • Marcado como Resposta Fábio JrModerator sexta-feira, 13 de janeiro de 2012 11:09
    terça-feira, 20 de outubro de 2009 16:52

Todas as Respostas

  • Olá,

    Poste o script ou o link do script para tentarmos te ajudar.

    Para salvar, utilize o exemplo abaixo:


    Set objDialog = CreateObject("SAFRCFileDlg.FileSave")

    objDialog.FileName = "C:\teste.txt"
    objDialog.FileType = "Text"
    intReturn = objDialog.OpenFileSaveDlg

    If intReturn Then
        Set objFSO = CreateObject("Scripting.FileSystemObject")
        Set objFile = objFSO.CreateTextFile(objDialog.FileName)
        objFile.WriteLine "teste de salvamento"
        objFile.Close
    Else
        Wscript.Quit
    End If
       



    Até mais,

    Jesiel

    Obs.: Se útil, classifique



    terça-feira, 20 de outubro de 2009 12:11
  • Disponibilizei o script neste link:

    http://www.mandamais.com.br/download/xf6d20102009102011

    terça-feira, 20 de outubro de 2009 12:40
  • Olá,

    Substitua as linhas abaixo:


    ':::::::::::::::::::::::::::::::::::::
    ':: ::
    ':: Função Cria Relatório HTML ::
    ':: ::
    ':::::::::::::::::::::::::::::::::::::
    Sub DataG_CreateFileHTML(byval strPc)
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strPC & "\root\cimv2")
    strProperties = "Name"
    Set colPC = objWMIService.ExecQuery("SELECT " & strProperties & " FROM Win32_ComputerSystem", , wbemFlagReturnImmediately + wbemFlagForwardOnly)
    For Each objItem in colPC
    Host_name = objItem.Name
    Date_Time = Replace(Date, "/", "-") & "~" & Replace(Time,":", "-")
    htmlRel = UCase(caminho & Host_name & "-" & Date_Time & ".html")

    Set objDialog = CreateObject("SAFRCFileDlg.FileSave")

    objDialog.FileName = "inventario.html"
    objDialog.FileType = "html"
    intReturn = objDialog.OpenFileSaveDlg

    If intReturn Then
    Set objFileSys = CreateObject("Scripting.FileSystemObject")
    Set objFH = objFileSys.CreateTextFile(objDialog.FileName)
    objFH.WriteLine HeaderHtml()
    objFH.WriteLine MountHtml
    objFH.WriteLine "</body>" & vbCrLf
    objFH.WriteLine "</html>"
    objFH.close
    End if



    Set oFileSys = Nothing
    Set objFH = Nothing
    wScript.Quit
    Next
    End Sub

    ':::::::::::::::::::::::::::::::::::::
    Init() ::
    ':::::::::::::::::::::::::::::::::::::


    São as ultimas linhas.


    Até mais,

    Jesiel

    Obs.: Se útil, classifique




    • Sugerido como Resposta DIEGO RIERA segunda-feira, 26 de outubro de 2009 16:59
    • Marcado como Resposta Fábio JrModerator sexta-feira, 13 de janeiro de 2012 11:09
    terça-feira, 20 de outubro de 2009 16:52
  • Bom dia Jesiel!

    Efetuei as alterações no VBS conforme indicastes, porém está ocorrendo os dois erros abaixo:
    Estes erros ocorrem aleatoriamente, testei este script em umas 6 estações com windows 7 e XP e os erro 1 ocorreu em algumas máquinas. já em outras ocorreu o erro 2.

    LInha: 2058
    Caract: 1
    Erro: O componente do ActiveX não pode criar objeto: 'SAFRCFileDlg.FileSave'
    Código: 800A01AD
    Origem: Erro de tempo de execução do Microsoft VBScript


    Também está ocorrendo este outro erro:

    Linha: 2068
    Caract: 1
    Erro: Chamada de procedimento ou argumento inválido
    Código: 800A0005
    Origem: Erro de tempo de execução do Microsoft VBScript
    quarta-feira, 21 de outubro de 2009 10:57
  • Outra informação, estou testando no Internet Explorer 7. Será que este problema é na montagem do HTML?
    quinta-feira, 22 de outubro de 2009 13:33
  • Jesiel, estou fazendo testes no script que me passastes porém não estou encontrando o que pode estar errado. A classe SAFRCFileDLG.Filesave está completa?
    quinta-feira, 22 de outubro de 2009 17:57
  • Outra informação, estou testando no Internet Explorer 7. Será que este problema é na montagem do HTML?

    Olá Paulo,

    Eu testei aqui e funcionou sem problemas, tentou deixar exatamente como o nosso amigo Jesiel propos?

    ':::::::::::::::::::::::::::::::::::::
    ':: ::
    ':: Função Cria Relatório HTML ::
    ':: ::
    ':::::::::::::::::::::::::::::::::::::
    Sub DataG_CreateFileHTML(byval strPc)
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strPC & "\root\cimv2")
    strProperties = "Name"
    Set colPC = objWMIService.ExecQuery("SELECT " & strProperties & " FROM Win32_ComputerSystem", , wbemFlagReturnImmediately + wbemFlagForwardOnly)
    For Each objItem in colPC
    Host_name = objItem.Name
    Date_Time = Replace(Date, "/", "-") & "~" & Replace(Time,":", "-")
    htmlRel = UCase(caminho & Host_name & "-" & Date_Time & ".html")

    Set objDialog = CreateObject("SAFRCFileDlg.FileSave")

    objDialog.FileName = "inventario.html"
    objDialog.FileType = "html"
    intReturn = objDialog.OpenFileSaveDlg

    If intReturn Then
    Set objFileSys = CreateObject("Scripting.FileSystemObject")
    Set objFH = objFileSys.CreateTextFile(objDialog.FileName)
    objFH.WriteLine HeaderHtml()
    objFH.WriteLine MountHtml
    objFH.WriteLine "</body>" & vbCrLf
    objFH.WriteLine "</html>"
    objFH.close
    End if



    Set oFileSys = Nothing
    Set objFH = Nothing
    wScript.Quit
    Next
    End Sub

    ':::::::::::::::::::::::::::::::::::::
    Init() ::
    ':::::::::::::::::::::::::::::::::::::


    Abraço
    Server 2003
    segunda-feira, 26 de outubro de 2009 17:01
  • Olá Jesiel,

    Sabes me informar como faço para utilizar variável do Win no VBS?

    Ex: c:\Documents and Settings\%username%\Desktop

    Obrigado
    Server 2003
    segunda-feira, 26 de outubro de 2009 17:04
  • Boa tarde Diego!

    Testei o script em algumas estações, por exemplo de 10 máquinas que eu testei umas 4 apresentaram o problema que eu descrevi acima, ou seja é algum componente ou alguma Dll que tem que ser registrada.

    Então antes de implementar este script no teu parque, testa em mais estações para garantir.
    segunda-feira, 26 de outubro de 2009 17:26