Category Archives: Word

Dicas sobre Word, um dos software carro chefe do pacote Office

Office – Problemas entre documentos do Word 2007 e 2010

Doc (xxxxx)
Doc (xxxxx)

Quem está vivendo com a versão 2010 do Office, principalmente no uso do Microsoft Word, deve ter percebido alguns probleminhas ao trocar documentos com outros usuários que utilizam a versão 2007.

Teoricamente, ambas são plenamente compatíveis, mas, tem se percebido alguns problemas, dos quais pode-se destacar:

  • Renumera repetidamente as páginas existentes no documento
  • Renumera repetidamente as quebras de página no documento
  • Layout e formatação do documento incorretos
  • Caracteres ilegíveis na tela
  • Mensagens de erro durante o processamento
  • Um computador que para de responder quando você abre o arquivo
  • Algum outro comportamento inesperado que não pode ser atribuído à operação normal do programa
  • Perda de referências e página do documento

O mais comum é isso acontecer quando se cria e salva do documento no Word 2010 e abre-se no Word 2007. A coisa ficou tão frequente que a Microsoft divulgou um artigo para falar especificamente do problema, que pode ser acesso aqui:

Como solucionar problemas de documentos danificados no Word 2007 e Word 2010

As soluções são várias, algumas até consideradas clichês. Confira se uma delas resolve seu problema, caso se isso que tenha trazido você até aqui.

Espera-se, claro, que um futuro Service Pack do Office possa resolver tais problemas. Enquanto isso, a vida continua.

Bom proveito!

Office – Removendo quebras de linha no Excel

Mais uma que valeu de tão ridículo.

A necessidade

Limpar os dados de uma planilha em Excel que tinha em várias colunas, texto com quebras de linha. Em resumo, era necessário tirar tais quebras de linha para fazer a análise dos dados. Das soluções que procurei e testei, desde de jogar os dados em outros programas, plugins pagos e outras coisas, a que mais resolveu foi essa:

  1. Selecione toda a área da planilha que contém as células com os dados a serem limpos e Copie (Ctrl+C)
  2. Cole em um documento do Word vazio (Ctrl+V) (os dados devem ir em formato de tabela)
  3. Ative a tela de Localizar/Substituir (Ctrl+U), clique em Mais de logo depois em Especial. Na lista que aparecer, selecione o item “Quebra manual de linha”. Na caixa de localizar deve aparecer o caractere “^l”
  4. Deixe a caixa Substituir por em branco
  5. Clique em Substituir tudo
  6. Com isso, as quebras de linha devem ter sido removidas de dentro das células
  7. Selecione a tabela do Word, Copie e Cole novamente no Excel

Acreditem ou não, foi a solução que mais deu resultado.

Bom proveito!

Referências

http://www.proz.com/forum/general_technical_issues/45225-is_there_a_way_to_remove_all_manual_line_breaks_in_an_excel_file.html

VBA – Ordenando Arrays Multi Dimensionais

Mais uma do fórum, dessa vez, da autoria do colega André.

O código abaixo faz a ordenação de um array multidimensional, incrementando um exemplo já colocado aqui no blog que fazia o trabalho, mas somente com em arrays com uma dimensão. Bom, o código e seus comentários falam por si:

'@Sort ArrayMulti
'@Data: 04/08/2010
'@Autor: André Tonini
'   Esta função ordena um array multidimensional
'   Parametros
'       @TheArray - Array - Array que será ordenado
'       @Column - Integer - Por qual coluna o array será ordenado
'       @ColumnCount - Integer - O número de colunas do array
 
Public Function SortArrayMulti(ByRef TheArray As Variant, _
                                    Column, _
                                    ColumnCount)
    'Variaveis
    '----------
    Dim temp()
    Dim x, i, y As Integer
    Dim sorted As Boolean
 
    'Dimensões do array
    '------------------
    ReDim Preserve temp(1 To UBound(TheArray, Column), 1 To ColumnCount)
 
 
    'Repetição para ordenar até o final do array
    '--------------------------------------------
    Do While Not sorted
 
        'No inicio ele está ordenado
        '--------------------------
        sorted = True
 
        'Laço que percorre as linhas
        '----------------------------
        For x = linhaCabecalho + 1 To UBound(TheArray, Column) - 1
 
            'Faz a comparação
            '----------------
            If (TheArray(x, Column) > TheArray(x + 1, Column) And TheArray(x + 1, Column) <> Empty) Then
 
                'Ando por todas as colunas
                '-------------------------
                For y = 1 To ColumnCount
                    temp(x, y) = TheArray(x + 1, y)
                Next y
 
                'Ando por todas as colunas
                '-------------------------
                For y = 1 To ColumnCount
                    TheArray(x + 1, y) = TheArray(x, y)
                Next y
 
                'Ando por todas as colunas
                '-------------------------
                For y = 1 To ColumnCount
                    TheArray(x, y) = temp(x, y)
                Next y
 
                'Passou pelo if, então não está ordenado
                '---------------------------------------
                sorted = False
 
            End If
        Next x
    Loop
 
End Function

Valeu André!

VBA – Retornando a última posição lida no documento do Word

O Microsoft Word não é muito bem o melhor leitor de textos do mundo. Como assim? Pois, ele é um excelente editor de textos, ou seja, para criar, editar, etc. Mas para ler, convenhamos, nem programas como o Adobe Reader suprem as necessidades que os eBook Readers trouxeram. Uma delas e muito bem vinda para documentos grandes é manter a página na qual se está navegando.

Por exemplo, você abre um documento de 200 páginas, vai lendo, pára a leitura na página 88 e fecha o documento porque tem que fazer outra coisa. Horas depois, ou mesmo dias, você volta o documento e, em qual página estava mesmo? Imagine isso em documentos maiores?

Pois bem, de posse dessa necessidade, o código VBA abaixo faz exatamente isso. Em miúdos, antes de fechar o documento, ele adicionará um Indicador do Word (Inserir->Indicador), que serve para isso mesmo, bem no local onde estiver o cursor naquele momento. Após fechar e salvar, o que é obrigatório para o funcionamento da rotina, ao abrir novamente o documento, ele posicionára o documento no indicador que foi adicionado e o removerá, deixando-o livre para a próxima vez em que o documento for fechado.

Para funcionar em no documento desejado, com ele aberto no Word, abra o VBA (Atl+F11), localize na janela de Projeto o documento atual, que estará como “Project (Nome do documento)”. Clique sobre este item com o botão direito e selecione Inserir->Módulo. Na janela em branco que aparecer, coloque o seguinte código:

Sub ReferenciaAtual()
    With ActiveDocument.Bookmarks
        .Add Range:=Selection.Range, Name:="ReferenciaAtual"
        .DefaultSorting = wdSortByName
        .ShowHidden = False
    End With
End Sub
 
Sub IrParaReferenciaAtual()
    Selection.GoTo What:=wdGoToBookmark, Name:="ReferenciaAtual"
End Sub
 
Sub RemoverReferenciaAtual()
    If ActiveDocument.Bookmarks.Exists("ReferenciaAtual") Then
        ActiveDocument.Bookmarks("ReferenciaAtual").Delete
    End If
End Sub

Volte a janela de Projeto e clique duas vezes em ThisDocument. Na janela que aparecer, que é o código referente ao objeto do documento atual, coloque o seguinte código:

Private Sub Document_Close()
    Call ReferenciaAtual
End Sub
 
Private Sub Document_Open()
    Call IrParaReferenciaAtual
    Call RemoverReferenciaAtual
End Sub

Agora salve o documento. Para que tudo funcione, é preciso sempre habilitar as macros. No caso do Word 2007, é preciso salvar o documento no formato .docm, que é um documento do Word habilitado para macros.

Seguindo os passos descritos acima, toda vez que abrir o documento, ele voltará para a última página em que estava antes de ser fechado.

Download da planilha de exemplo

http://www.tomasvasquez.com.br/downloads/Teste_Retorna_Ultima_Pagina.zip

Bom proveito!