Ir ao conteúdo
  • Cadastre-se

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...

@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

Link para o comentário
Compartilhar em outros sites

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?

 

Link para o comentário
Compartilhar em outros sites

@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

Link para o comentário
Compartilhar em outros sites

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

 

Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!