none
Macro no word 2013 sobre nitidez das imagens RRS feed

  • Pergunta

  • Boa tarde

    Fiz uma macro no Word 2013 que controla para todas as imagens o brilho e o contraste para os valores que desejo automaticamente.

    Mas também quero controlar a nitidez e não faço qualquer ideia qual a sua sintaxe.

    O estranho é não haver qualquer informação em lado nenhum. Se alguém conseguir ajudar-me. Obrigado. 

    A minha macro é esta:

    Sub Macro1()

            
     Dim myShape As Shape
                    
    For i = 1 To ActiveDocument.InlineShapes.Count

        ActiveDocument.InlineShapes(1).Select
                
        Set myShape = Selection.InlineShapes(1).ConvertToShape
             
        With myShape


          .PictureFormat.IncrementBrightness -0.1    ' 0.1  é 20%
          .PictureFormat.IncrementContrast 0.2

                  '. nitidez????

        End With

       
    Next i

    End Sub

    quinta-feira, 10 de julho de 2014 19:04

Respostas


  • Calma aí, antes de soltar os cães, experimente o código abaixo:

     

    Sub Macro1()
      Dim myShape As Shape
      Dim i As Long
      
      For i = 1 To ActiveDocument.InlineShapes.Count
        ActiveDocument.InlineShapes(1).Select
        Set myShape = Selection.InlineShapes(1).ConvertToShape
        With myShape
          .PictureFormat.IncrementBrightness -0.1    ' 0.1  é 20%
          .PictureFormat.IncrementContrast 0.2
          
          'Se quiser resetar a nitidez, use o código abaixo:
          'While .Count > 0
          '  .Fill.PictureEffects.Delete 1
          'Wend
          
          'Nitidez: -0.5 significa 'borrar' 50%, 0.7 significa aumentar a nitidez em 70%, etc.
    .Fill.PictureEffects.Insert(msoEffectSharpenSoften).EffectParameters(1).Value = 0.4 End With Next i End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    quarta-feira, 16 de julho de 2014 01:49
    Moderador

Todas as Respostas

  • Experimente alterar a propriedade .ShapeRange.Shadow.Blur de um objeto Shape ou Picture.

    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    sexta-feira, 11 de julho de 2014 00:13
    Moderador
  • Eu não quero altera a característica "sombra" mas a nitidez da imagem.

    É algo novo que só passou a existir a partir do Word 2010 e que se encontra no separador formatar imagem -> Correções de imagem.

    sexta-feira, 11 de julho de 2014 08:39
  • Essa tá difícil. Pedi ajuda para uns experts no assunto e volto a postar os resultados aqui.

    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    terça-feira, 15 de julho de 2014 01:57
    Moderador
  • Creio que tal não foi feito. É típico.

    Ou seja, a equipe da Microsoft que faz o VBA ou Office não se deu ao trabalho de fazer tal instrução.

    O que não deve ser muito difícil pois o Word já tem tudo prontinho para aparecer tal instrução no VBA do Office.

    Possivelmente, existe outra forma de ajustar a nitidez através de correções da cor e outras coisas.

    Mas para isso é necessário saber muito sobre processamento de  imagens, tendo uma teoria com melhor forma de o  fazer. Só que a Microsoft já fez quase tudo.

    A frustração é que podia ser simples e não o é graças a Microsoft.

    É típico.


    terça-feira, 15 de julho de 2014 14:20

  • Calma aí, antes de soltar os cães, experimente o código abaixo:

     

    Sub Macro1()
      Dim myShape As Shape
      Dim i As Long
      
      For i = 1 To ActiveDocument.InlineShapes.Count
        ActiveDocument.InlineShapes(1).Select
        Set myShape = Selection.InlineShapes(1).ConvertToShape
        With myShape
          .PictureFormat.IncrementBrightness -0.1    ' 0.1  é 20%
          .PictureFormat.IncrementContrast 0.2
          
          'Se quiser resetar a nitidez, use o código abaixo:
          'While .Count > 0
          '  .Fill.PictureEffects.Delete 1
          'Wend
          
          'Nitidez: -0.5 significa 'borrar' 50%, 0.7 significa aumentar a nitidez em 70%, etc.
    .Fill.PictureEffects.Insert(msoEffectSharpenSoften).EffectParameters(1).Value = 0.4 End With Next i End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    quarta-feira, 16 de julho de 2014 01:49
    Moderador
  • Muito obrigado.

    Funciona perfeitamente.

    Tem que ser feito logicamente em duas macros.

    uma com a nitidez.

    E outra com o reset da nitidez mas esta ultima com apenas a instrução:

      .Fill.PictureEffects.Delete 1

    pois já estava dentro de um ciclo tipo With

    E eu, normalmente, tenho que soltar os cães porque a informação na Microsoft é, no mínimo, muito muito confusa, mal arrumada, para não dizer mesmo a loucura total.


    quarta-feira, 16 de julho de 2014 10:55
  • Nem me diga! Eu fico cada vez mais decepcionado com o trabalho que a Microsoft vem fazendo com o VBA.

    - Não atualiza o VBA desde 1999;

    - A ajuda do VBA piora a cada edição do Office. Em 2007, cortaram vários exemplos e reduziram o texto de explicação de várias propriedades, métodos, instruções e funções. Em 2010, veio o lance online, que, por sorte, é possível desabilitar. A Microsoft se superou no Office 2013, causando insatisfação geral: a ajuda de um tópico agora demora 10 segundos para aparecer ao usuário, uma vez que está disponível apenas online* e abre um browser com numa URL de ajuda da Microsoft sobre o tópico. Pô, e se você não possuir acesso à internet no momento?;

    - Não modernizou a interface do VBE (sem Faixa de Opções, ferramentas primitivas para escrever código);

    - Bugs "milenares" que não são corrigidos;

    - A cada nova versão, mais e mais métodos do modelo de objeto das aplicações são descontinuados;

    - Criar interface para executar macros no Outlook usando o VBA está praticamente impossível no Office 2013;

    - Falta de atenção para bibliotecas como TreeView, ListView, Calendar porque a Microsoft não teve o bom senso de criá-las para Office 64 bits;

    - Bagunça geral nas constantes de compilação VBA7 e WIN64, principalmente ao se declarar chamadas API. Sobre chamadas API. A declaração incorreta dessas chamadas pode gerar crashes na aplicação Office.

    - O VBA para Mac é de chorar. Isso não me afeta porque odeio Macs, mas ruim para a Microsoft porque afasta os Macfags.

    - Falta multithread e robustez maior na segurança de macros. Herança de classes, alguns eventos importantes das aplicações, métodos decentes para automatizar o PowerPivot/View/Maps/Query, um tratamento de exceção decente, uma pilha de chamadas menos quebradiça, um coletor de lixo que não deixe vazar tanta memória, falta suporte à VBA no Web Apps e muito mais.

    Eu poderia ficar chorando aqui por horas. Tudo bem, mas o VBA ainda é a melhor opção existente para automatizar documentos Office: http://www.ambienteoffice.com.br/officevba/visual_basic_for_applications_(vba)/

    ---

    *Na verdade, a Microsoft disponibilizou uma ajuda offline de VBA para o Office 2013, mas é uma porcaria porque ela é "à parte", isto é, não é integrada ao VBE.


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    quinta-feira, 17 de julho de 2014 02:16
    Moderador