none
Ajuda para criar um script que altere os templates do PowerPoint 2010 e 2013 RRS feed

  • Pergunta

  • Ola Pessoal

    Boas a todos

    Gostaria de pedir um grande favor.

    Tenho que alterar os templates que ficam dentro do Power Point em 6 mil estações, são templates criados por encomenda para um cliente.

    O Script deve identificar o idioma do Office e sobrepor com o novo template correspondente com o idioma instalado, se o Office for em português ele deve sobrepor o template em português, se o Office for em ingles ele deve sobrepor o template em inglês e se o Office for em espanhol ele deve sobrepor o template em espanhol gerando um relatório ao final da implementação.

    Caminho dos templates do Office 2013: C:\Users\jvaz\Microsoft Office 15\root\Document Themes 15

    Caminho dos templates do Office 2010:

    Agradeço a ajuda


    • Editado Joao Paulo Augusto quarta-feira, 9 de outubro de 2013 02:35 correção ortografica
    quarta-feira, 9 de outubro de 2013 02:34

Respostas

  • Dando continuidade a conversa iniciado no fórum do Office.

    Pode usar um simples .BAT

    robocopy "\\seuservidor\seushare\modelos" "%APPDATA%\Microsoft\Modelos"

    Neste caso ele vai copiar os arquivos do servidor para a máquina local, usando a váriavel %APPDATA% ele já vai pegar a pasta do usuário.

    Um inconveniente, No inicio você citou que tem Office em outros idiomas, não sei se os Sistemas Operacionais também estão em outros idiomas, se estiverem a pasta de destino pode ser diferente (Portugues=Modelos, Inglês acho que é templates). Se for o caso aí retornamos pro inicio desta postagem: os IFs.


    Fábio de Paula Junior

    quarta-feira, 16 de outubro de 2013 23:00
    Moderador

Todas as Respostas

  • Com este script você consegue identificar a versão do Office e o ID da Linguagem (Português é o 1046, consulte a tabela do link ou execute o script abaixo em uma máquina de outro idioma).

    Bom tendo a versão e o idioma agora é só brincar de copiar arquivo.

    Const msoLanguageIDInstall = 1
    Const msoLanguageIDUI = 2
    
    WScript.Echo "Version of Office installed (0 eq. none): " & GetOfficeVer()
    
    With CreateObject("Word.Application")
    	.Visible = False
    	iLanguageID = .LanguageSettings.LanguageID(msoLanguageIDInstall)
    	.Application.Quit
    End With
    
    WScript.Echo "Language ID: " & iLanguageID
    
    
    
    Function GetOfficeVer()
    
    	sRegPre = "HKLM\SOFTWARE\Microsoft\Office\"
    	sRegPost = "\Common\InstallRoot\"
    	Select Case True
    		Case RegKeyExists(sRegPre & "15.0" )
    			sOfficeVer = "2013"
    		Case RegKeyExists(sRegPre & "14.0" )
    			sOfficeVer = "2010"
    		Case RegKeyExists(sRegPre & "11.0" )
    			sOfficeVer = "2003"
    		Case RegKeyExists(sRegPre & "10.0" )
    			sOfficeVer = "2002"
    		Case RegKeyExists(sRegPre & "9.0" )
    			sOfficeVer = "2000"
    		Case RegKeyExists(sRegPre & "8.0" )
    			sOfficeVer = "97"
    		Case Else
    			sOfficeVer = "0"
    	End Select
    	GetOfficeVer = sOfficeVer
    End Function
    
    
    Function RegKeyExists(ByVal sRegKey)
      ' Returns True or False based on the existence of a registry key.
    
      Dim sDescription, oShell
      Set oShell = CreateObject("WScript.Shell")
    
      RegKeyExists = True
      sRegKey = Trim (sRegKey)
      If Not Right(sRegKey, 1) = "\" Then
        sRegKey = sRegKey & "\"
      End If
    
      On Error Resume Next
      oShell.RegRead "HKEYNotAKey\"
      sDescription = Replace(Err.Description, "HKEYNotAKey\", "")
    
      Err.Clear
      oShell.RegRead sRegKey
      RegKeyExists = sDescription <> Replace(Err.Description, sRegKey, "")
      On Error Goto 0
    End Function
    
    
    
    Function Language(ByVal iLanguageID)
    
    	Set oShell = CreateObject("WScript.Shell")
    	sLangHex = Right("000" & Hex(iLanguageID), 4)
    
    	On Error Resume Next
    	sLanguage = ""  ' Init value
    	sLanguage = oShell.RegRead("HKLM\SOFTWARE\Classes\MIME\Database\Rfc1766\" _
    						 & sLangHex)
    	' remove unnecessary stuff
    	aOSLanguage = Split(sLanguage, ";")
    	sLanguage = aOSLanguage(UBound(aOSLanguage))
    	If Instr(sLanguage, "(") > 0 Then
    		aOSLanguage = Split(sLanguage, "(")
    		sLanguage = Trim(aOSLanguage(0))
    	End If
    
    	If sLanguage = "" Then
    		Language = "Unknown"
    	Else
    		Language = sLanguage
    	End If
    
    End Function

    Ref.:

    Determine Office VErsion and language

    https://groups.google.com/forum/#!topic/microsoft.public.scripting.vbscript/ylIAPqv1RQk

    Locale IDs Assigned by Microsoft

    http://msdn.microsoft.com/en-us/goglobal/bb964664.aspx


    Fábio de Paula Junior

    • Sugerido como Resposta Durval Ramos terça-feira, 15 de outubro de 2013 02:06
    quinta-feira, 10 de outubro de 2013 19:42
    Moderador
  • Fábio

    Muito obrigado meu amigo, vou testar aqui no meu LAB.

    Acho que a pedra vai ser adicionar os novos templates em 6 mil estações.

    Muito obrigado


    sábado, 12 de outubro de 2013 05:10
  • Ola pessoal

    Alguem poderia me ajudar, adicionar estes templates em 6 mil estações fica bastante complicado já que o arquivo não pode ser executável.

    segunda-feira, 14 de outubro de 2013 17:19
  • JVAZ,

    O script para instalar em 10 ou 10.000 é o mesmo.

    O mais difícil eu já te passei (já testou?) que é identificar a versão e idioma, agora você tem que dar continuidade, isto é, usar a informação que você já tem e fazer os "IFs" para copiar os arquivos corretos.



    Fábio de Paula Junior

    segunda-feira, 14 de outubro de 2013 17:38
    Moderador
  • Se já tem o script que a linguagem e versão você tem que começar a fazer os "SEs" (IFs).

    Se versão="2013" e linguagem="Portugues" então

       copia "da origem" para "a pasta onde deve ficar os arquivos desta versao\linguagem"

    fim se

    Se versão="2013" e linguagem="Espanhol" então

       copia "da origem" para "a pasta onde deve ficar os arquivos desta versao\linguagem"

    fim se

    Aguardo retorno.


    Fábio de Paula Junior



    segunda-feira, 14 de outubro de 2013 21:32
    Moderador
  • Pode ser útil

    VBScript Conditional Statements

    http://www.w3schools.com/vbscript/vbscript_conditionals.asp

    CopyFile Method

    http://msdn.microsoft.com/en-us/library/e1wf9e7w(v=vs.84).aspx


    Fábio de Paula Junior

    terça-feira, 15 de outubro de 2013 01:09
    Moderador
  • Dando continuidade a conversa iniciado no fórum do Office.

    Pode usar um simples .BAT

    robocopy "\\seuservidor\seushare\modelos" "%APPDATA%\Microsoft\Modelos"

    Neste caso ele vai copiar os arquivos do servidor para a máquina local, usando a váriavel %APPDATA% ele já vai pegar a pasta do usuário.

    Um inconveniente, No inicio você citou que tem Office em outros idiomas, não sei se os Sistemas Operacionais também estão em outros idiomas, se estiverem a pasta de destino pode ser diferente (Portugues=Modelos, Inglês acho que é templates). Se for o caso aí retornamos pro inicio desta postagem: os IFs.


    Fábio de Paula Junior

    quarta-feira, 16 de outubro de 2013 23:00
    Moderador
  • Jvaz,

    Resolvido?


    Fábio de Paula Junior

    sexta-feira, 25 de outubro de 2013 12:24
    Moderador