Tomás Vásquez – Blog

Notícias e Dicas sobre Tecnologia, Educação, Desenvolvimento, Web e Baboseiras em geral

Excel – Removendo quebras de linha – Parte 2

Recentemente, postei um artigo divulgando uma “artimanha” para efetuar a remoção de quebras de linha em células do Excel. Apesar de engenhosa e funcional, a solução fazia uso do Microsoft Word, o que não chega a ser um grande problema, já que os dois softwares são praticamente irmãos.

Mas, é possível fazer o mesmo, sem sair do Excel. Para isso, acione a caixa de diálogo Substituir (Ctrl+U), e no campo Localizar, mantenha a tecla Alt pressionada e digite 0010, soltando a tecla Alt em seguida. Vai aparecer um caractere estranho, mas sem pânico, pois ele é a representação da quebra de linha no Excel. Agora é só clicar em Substituir, ou Substituir tudo.

Simples, rápido, funcional!

Bom proveito!

Referências

http://www.pcreview.co.uk/forums/thread-1766687.php

VBA – Carregando o controle Imagem através de uma URL

Mais uma do fórum.

Em alguns sistemas, é comum precisar carregar uma imagem do disco local para mostrá-la num formulário VBA. A tarefa é simples e comum de ser fazer aos programadores VBA:

Imagem.Picture = LoadPicture("CaminhoLocal")

Simples. Porém, o método LoadPicture não dá suporte a carregar imagens da internet. Ao tentar colocar no parâmetro filename o um endereço de internet, o código gera um erro.  Nas andanças da Internet, chegamos a um código que, sendo  uma adaptação do LoadPicture, faz o dito trabalho (mantive os comentários originais para garantir a autoria):

Option Explicit
 
Private Declare Function URLDownloadToFile Lib "urlmon" Alias _
    "URLDownloadToFileA" (ByVal pCaller As Long, _
    ByVal szURL As String, ByVal szFileName As String, _
    ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
 
Private Declare Function DeleteUrlCacheEntry Lib "Wininet.dll" _
    Alias "DeleteUrlCacheEntryA" ( _
    ByVal lpszUrlName As String) As Long
 
Private Declare Function GetTempFileName Lib "kernel32" Alias _
    "GetTempFileNameA" (ByVal lpszPath As String, _
    ByVal lpPrefixString As String, ByVal wUnique As Long, _
    ByVal lpTempFileName As String) As Long
 
Private Declare Function SetFileAttributes Lib "kernel32" Alias _
    "SetFileAttributesA" (ByVal lpFileName As String, _
    ByVal dwFileAttributes As Long) As Long
 
 
Private Const ERROR_SUCCESS As Long = 0
Private Const BINDF_GETNEWESTVERSION As Long = &H10
Private Const INTERNET_FLAG_RELOAD As Long = &H80000000
Private Const FILE_ATTRIBUTE_TEMPORARY = &H100
 
 
Private Function DownloadFile(sSourceUrl As String, _
                              sLocalFile As String) As Boolean
 
  'Download the file. BINDF_GETNEWESTVERSION forces
  'the API to download from the specified source.
  'Passing 0& as dwReserved causes the locally-cached
  'copy to be downloaded, if available. If the API
  'returns ERROR_SUCCESS (0), DownloadFile returns True.
   DownloadFile = URLDownloadToFile(0&, _
                                    sSourceUrl, _
                                    sLocalFile, _
                                    BINDF_GETNEWESTVERSION, _
                                    0&) = ERROR_SUCCESS
 
End Function
 
Function LoadPictureUrl(sSourceUrl As String) As IPictureDisp
   Dim sLocalFile As String
 
   On Error GoTo err_h
 
   'Create a buffer
   sLocalFile = String(260, 0)
   'Get a temporary filename
   GetTempFileName "C:\", "KPD", 0, sLocalFile
   'Remove all the unnecessary chr$(0)'s
   sLocalFile = Left$(sLocalFile, InStr(1, sLocalFile, Chr$(0)) - 1)
   'Set the file attributes
   SetFileAttributes sLocalFile, FILE_ATTRIBUTE_TEMPORARY
 
  'Attempt to delete any cached version of the file.
   DeleteUrlCacheEntry sSourceUrl
 
   If DownloadFile(sSourceUrl, sLocalFile) = True Then
 
      'hfile = FreeFile
      'Open sLocalFile For Input As #hfile
      'Text1.Text = Input$(LOF(hfile), hfile)
      'Close #hfile
      Set LoadPictureUrl = LoadPicture(sLocalFile)
      Kill sLocalFile
   Else
      'Create a bogus error
      Err.Raise 999
   End If
 
   Exit Function
err_h:
   Set LoadPictureUrl = LoadPicture("")
End Function

Um exemplo de código bem simples que faz o trabalho seria:

Private Sub UserForm_Initialize()
    Me.Image1.Picture = LoadPictureUrl("http://www.tomasvasquez.com.br/images/Logo_Tomas.gif")
End Sub

Um viva a comunidade de VBA!

Referências

http://www.mrexcel.com/forum/showthread.php?t=116387

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

Firefox – Plugin para redicionar URLs (Redirector)

Outra necessidade que só o dia a dia explica. Em resumo, precisávamos que, ao apontar para um determinado domínio da internet, fosse feito um redirecionamento automático para outro.

A alternativa que vem a mente é a manutenção do arquivo hosts, no caso do Windows (mas acredito que haja algo equivalente no Linux), mas ele, além de não ser muito indicado para isso, não resolve todos os problemas de proxy reverso e não se dá muito bem com endereços de destino, preferindo endereços IP.

Mexer com DNS seria muito trabalhoso. A alternativa que resolveu? Um plugin para o navegador Firefox chamado Redirector.

O help é bem completo quanto ao uso e configuração. Depois de instalado, ele cria no canto inferior direito navegador um ícone que evidencia seu funcionamento:

Redirector em funcionamento

Redirector em funcionamento no Firefox

Um clique com o botão direito sobre o “R” ativa a tela de configurações. A partir daí, é só criar seus redirecionamentos, que conta com níveis de customizações desde simples WildCards até o uso de Regular Expressions! Um exemplo bem simples seria o seguinte:

Exemplo de uso do Redirector

Exemplo de uso do Redirector

Não dá para ser mais claro. Toda vez que alguma requisição for feito ao domínio http://www.meudominio.com.br, ela será automaticamente redirecionada para o http://teste.meudominio.com.br. Os caracteres adicionais foram necessários para que todo o restante da url seja passado corretamente, como querystrings e subpastas.

Página do plugin

https://addons.mozilla.org/pt-BR/firefox/addon/5064/

Talvez isso seja pouco comum no dia a dia, mas em cenários de testes, pode ajudar um bocado.

Página 20 de 129« Primeira...10...1819202122...304050...Última »