Hoje eu tinha em mãos dois templates do Word, sendo um para documentos em português e outro em inglês. Além de importar os estilos de um documento para o outro, era preciso também alterar o idioma para que ficassem de acordo com a versão do template (português ou inglês).
Este tipo de alteração em cascata mostra o quanto é importante encadear os estilos na hora de sua criação. O campo "estilo baseado em" faz este papel importante: ao alterar um estilo base (mudar tipo de fonte, idioma, etc.), todos os seus derivados são automaticamente atualizados. Assim, se todos os estilos estivessem devidamente encadeados, bastaria alterar o idioma do estilo Normal para atualizar os demais. Não era o caso.
Para resolver, rodei este pequeno trecho de código:
Sub MudarIdiomaEstilos()
Dim s As Style
For Each s In ThisDocument.Styles
If s.Type = wdStyleTypeParagraph Or s.Type = wdStyleTypeCharacter Or _
s.Type = wdStyleTypeLinked Or s.Type = wdStyleTypeParagraphOnly Then
s.LanguageID = wdPortugueseBrazil
End If
Next s
End Sub
Veja que a constante LanguageID nada mais é que o código do idioma (wdPortugueseID=1046, wdEnglishUS=1033, etc.).
Desenvolver soluções Office usando o Visual Studio é uma boa evolução para quem tem anos de prática de VBA. O ambiente é mais amigável, mais produtivo (quando bem utilizado) e tem mais recursos que o velho e bom VBA. Tudo uma maravilha, até o momento de distribuir a solução. Nesta hora, sempre penso a mesma coisa: "por que não fiz em VBA?"
Instalar add-ins VSTO do Office em ambientes corporativos é algo realmente penoso. Toda a produtividade ganha na fase de desenvolvimento pode ser perdida quando se faz (ou tenta se fazer) o deployment.
Para começar, é difícil encontrar uma empresa que tenha todos os requisitos atualizados:
- .NET Framework 3.5 com SP1
- VSTO Runtime 3.0 com SP1
- Office 2007 com SP2 (este requisito não é devidamente documentado, mas importante em vários tipos de solução, especialmente se manipular Charts do Office)
Em ambientes corporativos, o acesso à Internet não é livre, muito menos a permissão para baixar pacotes como estes que mencionei acima. Para piorar, os links para download da Microsoft costumam trazer a versão bootstrapper, ou seja, um instalador que começa o trabalho mas faz downloads adicionais, o que não resolve o problema. Portanto, se você está montando uma pasta de instaladores de pré-requisitos (PreRecs), precisa procurar pela versão redistributable dos componentes, o que nem sempre é fácil achar.
Segue aqui uma lista de endereços:
- .NET Framework 3.5 com SP1 (este eu demorei a achar!):
http://msdn.microsoft.com/en-us/netframework/aa569263.aspx
http://download.microsoft.com/download/2/0/e/20e90413-712f-438c-988e-fdaa79a8ac3d/dotnetfx35.exe
- VSTO Runtime 3.0:
http://www.microsoft.com/downloads/details.aspx?FamilyId=54EB3A5A-0E52-40F9-A2D1-EECD7A092DCB&displaylang=en
- VSTO Runtime SP1:
http://www.microsoft.com/downloads/details.aspx?familyid=D8EB4921-891A-4B5E-973F-0B96E6CCF376&displaylang=en
- VSTO Runtime Language Pack (para Windows em português):
http://www.microsoft.com/downloads/details.aspx?FamilyId=1DCA6E2D-5C1F-4DF8-BE5A-3D1561B8F0E3&displaylang=pt-br
- Office 2007 SP2 em português
http://www.microsoft.com/downloads/details.aspx?FamilyId=B444BF18-79EA-46C6-8A81-9DB49B4AB6E5&displaylang=pt-BR
- Office 2007 SP2 em inglês
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=b444bf18-79ea-46c6-8a81-9db49b4ab6e5