Ir ao conteúdo

Excel Extrair dados do Excel para um formulário do Word (VBE)


Ir à solução Resolvido por Edson Luiz Branco,

Posts recomendados

  • mês depois...
Postado

@Edson Luiz Branco, bom dia! Minhas atividades retornaram e pretendia implementar o procedimento que você me orientou. Porém, estou com um problema, que eu não havia previsto:

Há essa parte na OS:

image.png.cdc248e7983de5175bd195c05589cfe2.png 

É preciso criar um código que, por exemplo:

image.thumb.png.c8fc0b88dc35ad00a20f9ace48e82a42.png

Ao criar uma linha e colocar como responsável o Fulano C e clicar no botão Gerar OS, automaticamente, lá na OS, o Tipo de Manutenção Elétrica seja selecionada.

 

Planilha v1 Selton.rar

Postado

Não ficou claro de onde viria a informação que relaciona Fulano com Manutenção Elétrica. Estará numa tabela? No seu arquivo não vi nada que associe isso.

 

Em 28/07/2020 às 09:39, Selton Do Ramo disse:

Há essa parte na OS:

image.png.cdc248e7983de5175bd195c05589cfe2.png

 

Também não vi essa parte na OS ainda... você não enviou o arquivo errado? Ou você ainda vai implementar?

 

Postado

@Edson Luiz Branco, boa noite!

A semana foi bem corrida e hoje consegui parar para ver isso, desculpe a demora.

Isso é uma implementação para ficar mais parecida com a OS original que eu uso diariamente. A relação é dada no último campo, escrito "Area", como podemos ver abaixo.

image.thumb.png.d27a7b16a55b76b682280f92580c2c13.png

Planilha v1 Selton.rar

Quanto a modificação feita no formulário de OS, eu acrescentei o campo de seleção como podemos ver abaixo, então ao invés de passar o que tá escrito na seção "Area" na planilha, queria que o que estivesse escrito nela se relacionasse com a caixa de seleção que acrescentei no formulário da OS. Anexei o arquivo modificado aqui.

image.png.4ec66a3856554a31985463a6b67e6699.png

Postado

Elimine a linha que atualiza o bookmark bkmÁrea e acrescente as linhas destacadas abaixo:

...
'Eliminar: AtualizaIndicadores "bkmÁrea", rg.Cells(13).Value 
  AtualizaIndicadores "bkmFáb", rg.Cells(3).Value
  AtualizaIndicadores "bkmEquip", rg.Cells(10).Value
  AtualizaIndicadores "bkmResp", rg.Cells(8).Value
  AtualizaIndicadores "bkmTAG", rg.Cells(4).Value
  AtualizaIndicadores "bkmDescr", rg.Cells(2).Value
'----------------------------------------------------------------
'Acrescentar essas linhas:
  Dim i As Integer, índice As Integer
  Select Case rg.Cells(13).Value
    Case "Mecânica": índice = 1
    Case "Elétrica": índice = 2
    Case "Oficina":  índice = 3
  End Select
  For i = 1 To 3 'Qtd de Áreas que estão no formulário
    wdDoc.ContentControls(i).Checked = (i = índice)
  Next i
'----------------------------------------------------------------
End Sub

 

Postado

@Edson Luiz Branco , boa noite!

De acordo com o código, como é feito a relação entre o setor (Mecânica, Elétrica, Oficina) com a caixa de seleção? Como sei que ao escrever mecânica, ele irá marcar a caixa de seleção que está ao lado da palavra mecânica lá na OS?

Postado

Os Controles de Conteúdo do Word não são identificados pelo nome e sim por uma ID numérica longa (infelizmente não têm uma propriedade .Name como outros objetos). Só que, entre usar o ID e usar o seu índice, optei por esse último, por ser mais simples. Eles são numerados de acordo com a ordem com que vão sendo inseridos na estrutura do documento.


Como você inseriu primeiro o Mecânica, depois o Elétrica e por último o Oficina, nessa ordem, então seus índices automaticamente serão 1, 2 e 3 respectivamente. Essa é a justificativa do uso do Select Case. Por exemplo, se a área escolhida for Elétrica, o índice será o 2 (2ª CheckBox) que é justamente a de Elétrica. O laço For/Next portanto desmarca todas as que não forem a 2ª e marca somente esta.

 

Embora você possa inserir uma etiqueta com texto ao lado da caixinha para dizer a que ela se refere, ela não pertence ao controle, então não dá pra identificá-lo por ela.

 

Uma coisa que você poderia fazer se quisesse requintar um pouco mais é definir a propriedade Título (Title) ou Marca (Tag) do controle (guia Desenvolvedor > Propriedades) e referir-se ao controle usando-os. Por exemplo:

wdDoc.SelectContentControlsByTitle("títMecânica")(1).Checked = True ou False

ou

wdDoc.SelectContentControlsByTag("marcaMecânica")(1).Checked = True ou False

Não vejo muita vantagem nessa metodologia pois referir-se com títulos e tags NÃO retorna controles obrigatoriamente únicos (veja o 1 entre parênteses).

  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...