locked
Macro RRS feed

  • Pergunta

  • Bom Dia a Todos!

     

    Eu tenho um documento do word onde eu coloquei varios indicadores e pra cada indicador eu fiz uma macro, os campos da macro eu trago de um arquivo em dbf, ele executa a primeira macro ai qdo vai pra segunda macro da um erro

    Erro em tempo de execução '4605' Este método ou propriedade não está disponível porque alguns dos objetos ou todos eles não se referem a uma tabela.

    'Insere uma nova linha na tabela
     Selection.MoveRight Unit:=wdCell

    Eu fiz varias pesquisas e encontrei essa referencia.

    No tempo de execução:Ocorridos por efetuar uma operação inválida(divisão por zero,abertura de arquivo excluido),etc.
    Eu não tenho muita experiencia com macros mas eu acho pq eu repito esse comando em todas as macros dentro desse documento pq o primeiro ele executa.

    Na realidade eu precisando q a cada itens ele acrescente uma linha alguem saberia me explicar pq eu não sei.

    Muito Obrigado

    Estou colocando a macro se alguem puder me ajudar eu agradeço muito.

     

    A primeira macro

    Sub tabprod()
    ' orcaword Macro
    '
    '
    Dim nItem As Integer
    Dim Campo As String

    Selection.GoTo what:=wdGoToBookmark, Name:="tabprod"
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = " "
        .Replacement.Text = " "
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With

    nItens = Val(ActiveDocument.Variables.Item("prt_nroit_pro").Value)

    For K = 1 To nItens
     
     'Insere uma nova linha na tabela
     ' Selection.MoveRight Unit:=wdCell
     
     ' Insere o campo Produto
     Selection.MoveRight Unit:=wdCell
     Campo = "DOCVARIABLE prt_prod" & Trim(Str(K))
     Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:=Campo, PreserveFormatting:=True
     
     ' Insere forma do produto
     Selection.MoveRight Unit:=wdCell
     Campo = "DOCVARIABLE prt_forprod" & Trim(Str(K))
     Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:=Campo, PreserveFormatting:=True
     

     ' Insere peso
     Selection.MoveRight Unit:=wdCell
     Campo = "DOCVARIABLE prt_peso" & Trim(Str(K))
     Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:=Campo, PreserveFormatting:=True

       
     ' Insere modelo
     Selection.MoveRight Unit:=wdCell
     Campo = "DOCVARIABLE prt_modelo" & Trim(Str(K))
     Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:=Campo, PreserveFormatting:=True
       
     ' Insere dimensão
     Selection.MoveRight Unit:=wdCell
     Campo = "DOCVARIABLE prt_dimen" & Trim(Str(K))
     Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:=Campo, PreserveFormatting:=True
       
     ' Insere material
     Selection.MoveRight Unit:=wdCell
     Campo = "DOCVARIABLE prt_material" & Trim(Str(K))
     Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:=Campo, PreserveFormatting:=True
       
     ' Insere rendimento
     Selection.MoveRight Unit:=wdCell
     Campo = "DOCVARIABLE prt_rend" & Trim(Str(K))
     Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:=Campo, PreserveFormatting:=True
     
    Next

    End Sub

    2 Macro

    Sub tabequi()
    ' tabequi Macro
    '
    Dim nItem As Integer
    Dim Campo As String

    Selection.GoTo what:=wdGoToBookmark, Name:="tabequi"
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = " "
        .Replacement.Text = " "
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With

    nItens = Val(ActiveDocument.Variables.Item("prt_nroi_equi").Value)

    For K = 1 To nItens
     
     ' Insere o campo item
     Selection.MoveRight Unit:=wdCell
     Campo = "DOCVARIABLE prt_item" & Trim(Str(K))
     Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:=Campo, PreserveFormatting:=True
     
     ' Insere maquina
     Selection.MoveRight Unit:=wdCell
     Campo = "DOCVARIABLE prt_maq" & Trim(Str(K))
     Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:=Campo, PreserveFormatting:=True

     ' Insere descrição
     Selection.MoveRight Unit:=wdCell
     Campo = "DOCVARIABLE prt_desc" & Trim(Str(K))
     Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:=Campo, PreserveFormatting:=True

    Next

    End Sub

    terça-feira, 9 de setembro de 2008 13:12

Todas as Respostas

  • Olá Cecília, tudo bem?

     

    Este erro está acontecendo porque em um dado momento da execução da sua macro o cursor está saindo da tabela. Ao pedir para mover para a próxima célula, estando fora de uma tabela, ocorre este erro.

     

     

     

    quinta-feira, 20 de novembro de 2008 22:27
    Moderador