Ir ao conteúdo
  • Cadastre-se

Rafael Borges P.

Membro Pleno
  • Posts

    57
  • Cadastrado em

  • Última visita

Reputação

2
  1. Boa tarde amigos, Estou com dificuldades em uma planilha minha, criei ela pelo excel 2013. O meu amigo foi acessá-la pelo excel dele 2010 e não conseguiu usar com macro, deu erro. Ele coleta dados e gera um documento no word. Fiz algumas modificações, uma delas foi que ao invés do ser Word.application, coloquei object ai funcionou no excel 2010, mas ainda há empecilhos na seguinte parte: Plan4.Range("A3:H11").ClearContents 'esta linha apaga o intervalo de A3 até H11 ultimaLinha = Plan1.Cells(Rows.Count, "a").End(xlUp).Row 'retorna a ultima linha da Plan1 que contém informações lin = 2 ' linha 2 For i = 3 To ultimaLinha 'da 3 linha até a ultima linha If Plan1.Cells(i, 1) <> "" Then 'se o intervalo(3 To ultimaLinha) da coluna 1 for diferente de "" (vazio) então 'será copiado na Plan4 os dados, desta mesma Plan4 referente a primeira linha com os dados A2 Plan4.Cells(i, 1) = Plan4.Cells(lin, 1) Plan4.Cells(i, 2) = Plan4.Cells(lin, 2) Plan4.Cells(i, 3) = Plan4.Cells(lin, 3) Plan4.Cells(i, 4) = Plan4.Cells(lin, 4) Plan4.Cells(i, 5) = Plan4.Cells(lin, 5) Plan4.Cells(i, 6) = Plan4.Cells(lin, 6) Plan4.Cells(i, 7) = Plan4.Cells(lin, 7) Plan4.Cells(i, = Plan4.Cells(lin, lin = lin + 1 ElseIf Plan1.Cells(i, 1) = "" Then 'se o intervalo(3 To ultimaLinha) da coluna 1 for igual a "" (vazio) então Plan4.Range("A3:H11").ClearContents 'esta linha apaga o intervalo de A3 até H11 End If Next Alguem saberia por qual código eu posso substituir?
  2. Boa tarde amigos, estou com conflito em versões do excel. Criei um documento no excel 2013 com macro, e quando um funcionário foi abrir na máquina dele, deu erro, pois é 2010, mudei algumas coisas no meu código e conseguir dar um passos a frente, mas ai ao clicar no botão " gerar documento" da erro. Segue a baixo o código que esta dando erro: Como sou razo em VBA, não sei quais dos códigos não são compatíveis com o excel 2010, alguém poderia me ajudar? Sub Retângulodecantosarredondados2_Clique() Plan4.Range("A3:H11").ClearContents 'esta linha apaga o intervalo de A3 até H11 ultimaLinha = Plan1.Cells(Rows.Count, "a").End(xlUp).Row 'retorna a ultima linha da Plan1 que contém informações lin = 2 ' linha 2 For i = 3 To ultimalinha 'da 3 linha até a ultima linha If Plan1.Cells(i, 1) <> "" Then 'se o intervalo(3 To ultimaLinha) da coluna 1 for diferente de "" (vazio) então 'será copiado na Plan4 os dados, desta mesma Plan4 referente a primeira linha com os dados A2 Plan4.Cells(i, 1) = Plan4.Cells(lin, 1) Plan4.Cells(i, 2) = Plan4.Cells(lin, 2) Plan4.Cells(i, 3) = Plan4.Cells(lin, 3) Plan4.Cells(i, 4) = Plan4.Cells(lin, 4) Plan4.Cells(i, 5) = Plan4.Cells(lin, 5) Plan4.Cells(i, 6) = Plan4.Cells(lin, 6) Plan4.Cells(i, 7) = Plan4.Cells(lin, 7) Plan4.Cells(i, = Plan4.Cells(lin, lin = lin + 1 ElseIf Plan1.Cells(i, 1) = "" Then 'se o intervalo(3 To ultimaLinha) da coluna 1 for igual a "" (vazio) então Plan4.Range("A3:H11").ClearContents 'esta linha apaga o intervalo de A3 até H11 End If Next Range("A3:H11").Font.ColorIndex = 15 'End If Dim total As Integer Range("A1").Select total = (Cells(Rows.Count, 1).End(xlUp).Row) MsgBox ("Basta clicar na janela do word que será aberta automaticamente.") 'Abrir documento do word pronto Dim WdDocument As Word.Document 'Dim wdApp As Word.Application, wdDoc As Word.Document On Error Resume Next Set wdApp = GetObject(, "Word.Application") If Err.Number <> 0 Then 'Word isn't already running Set wdApp = CreateObject("Word.Application") End If Set wdDoc = wdApp.Documents.Open("meu documento") wdApp.Visible = True For i = 2 To total 'Passando para a primeira tabela do Word wdDoc.Tables(1).Rows.Add 'Adicionando 1 linha à tabela ThisWorkbook.Sheets("CADASTRO").Range("A" & i & ":D" & i).Copy wdDoc.Range(wdDoc.Tables(1).Cell(i, 1).Range.Start, wdDoc.Tables(1).Cell(i, 4).Range.End).PasteAndFormat (22) 'Passando para a segunda tabela do Word (O instrutor novamente) wdDoc.Tables(2).Rows.Add 'Adicionando 1 linha à tabela ThisWorkbook.Sheets("CADASTRO").Range("A" & i).Copy wdDoc.Range(wdDoc.Tables(2).Cell(i, 1).Range.Start, wdDoc.Tables(2).Cell(i, 1).Range.End).PasteAndFormat (22) 'Passando para a segunda tabela do Word ThisWorkbook.Sheets("CADASTRO").Range("E" & i & ":G" & i).Copy wdDoc.Range(wdDoc.Tables(2).Cell(i, 2).Range.Start, wdDoc.Tables(2).Cell(i, 4).Range.End).PasteAndFormat (22) 'Passando para a terceira tabela do Word ( O instrutor novamente) 'wdDoc.Tables(3).Rows.Add 'Adicionando 1 linha à tabela ThisWorkbook.Sheets("GERAR DOCUMENTO").Range("A" & i).Copy wdDoc.Range(wdDoc.Tables(3).Cell(i, 1).Range.Start, wdDoc.Tables(3).Cell(i, 1).Range.End).PasteAndFormat (22) 'Passando para a terceira tabela do Word ThisWorkbook.Sheets("GERAR DOCUMENTO").Range("B" & i).Copy wdDoc.Range(wdDoc.Tables(3).Cell(i, 2).Range.Start, wdDoc.Tables(3).Cell(i, 2).Range.End).PasteAndFormat (22) 'Passando para a quarta tabela do Word 'wdDoc.Tables(4).Rows.Add 'Adicionando 1 linha à tabela ThisWorkbook.Sheets("GERAR DOCUMENTO").Range("C" & i & ":E" & i).Copy wdDoc.Range(wdDoc.Tables(4).Cell(i, 1).Range.Start, wdDoc.Tables(4).Cell(i, 3).Range.End).PasteAndFormat (22) 'Passando para a quinta tabela do Word 'wdDoc.Tables(5).Rows.Add 'Adicionando 1 linha à tabela ThisWorkbook.Sheets("GERAR DOCUMENTO").Range("F" & i & ":H" & i).Copy wdDoc.Range(wdDoc.Tables(5).Cell(i, 1).Range.Start, wdDoc.Tables(5).Cell(i, 3).Range.End).PasteAndFormat (22) Application.CutCopyMode = False Next Set wordapp = Nothing Set wdDoc = Nothing Range("A3:H3").Select Selection.ClearContents ActiveCell.Select Range("A4:H4").Select Selection.ClearContents ActiveCell.Select Range("A5:H5").Select Selection.ClearContents ActiveCell.Select Range("A6:H6").Select Selection.ClearContents ActiveCell.Select End Sub
  3. Boa tarde amigos Gênios, Estou com um documento que contem uma lista suspensa, queria ajuda nela. Eu precisa que ao digitar na célula, aparecesse automaticamente uma "ajuda" com a lista suspensa. Ex: Ao digitar Rafael na célula, eu gostaria que aparecesse os "Rafael", ai se eu continuar e colocar um B, apareça os Rafael com B, e assim por diante... alguém poderia quebrar esse galho? Segue a planilha fictícia. Teste_Excel.zip
  4. Consegui, muito obrigado, estarei verificando e já já te dou um feedeback. adicionado 11 minutos depois Carambaaaaa @LaerteB você é o CARA, muito obrigado, funcionou perfeitamente e era isso que eu queria.... Estou muito feliz!!! Obrigado mais uma vez... Abraços, Rafael
  5. @LaerteB Boa tarde laerte, poderia me enviar o documento sem ser em rar? poderia ser normal?
  6. Boa tarde Laerte, Esse documento é fictício. Tenho um documento no excel, e preciso que na Plan. "Gerar documento" só copie os dados das células A2:H2 e cole no A3:H3 SE na Plan. (Cadastro) tiver valor na célula A3 e assim por diante (o limite é ate A6, não passará disso). Ex: Tendo valor na A4 (Cadastro), ta autorizada a cópia dos dados da A2:H2 (Gerar documento) para A4:H4 (Gerar documento) e etc. o código que to utilizando por enquanto: 'Copiar e colar dados da Gerar Documento Sheets("GERAR DOCUMENTO").Select Range("A2:H2").Select Selection.Copy Sheets("GERAR DOCUMENTO").Select Range("A3:H3").Select ActiveSheet.Paste Sheets("GERAR DOCUMENTO").Select Range("A2:H2").Select Selection.Copy Sheets("GERAR DOCUMENTO").Select Range("A4:H4").Select ActiveSheet.Paste Sheets("GERAR DOCUMENTO").Select Range("A2:H2").Select Selection.Copy Sheets("GERAR DOCUMENTO").Select Range("A5:H5").Select ActiveSheet.Paste Sheets("GERAR DOCUMENTO").Select Range("A2:H2").Select Selection.Copy Sheets("GERAR DOCUMENTO").Select Range("A6:H46").Select ActiveSheet.Paste Application.CutCopyMode = False Pensei então que pode haver outra opção, usando uma condição que faça o seguinte: 'Se a célula A3 da planilha cadastro tiver valor.Então 'vai apagar a linha 3 da plan "gerar documento" 'Se a célula A4 da planilha cadastro tiver valor.Então 'vai apagar a linha 4 da plan "gerar documento" 'Se a célula A5 da planilha cadastro tiver valor.Então 'vai apagar a linha 5 da plan "gerar documento" 'Se a célula A6 da planilha cadastro tiver valor.Então 'vai apagar a linha 6 da plan "gerar documento" Mas talvez seja considerável ficar com a primeira opção, pois penso que a segunda será mais trabalhosa, uma vez que ( vai copiar e colar dos dados e depois irá ter que ficar excluindo caso não tenha valor na(s) célula(s) A3 ou A4 ou A5 ou A6. @LaerteB
  7. 'Se a coluna A3 da planilha cadastro tiver valor.Então 'vai apagar a linha 3 da plan "gerar documento" 'Se a coluna A4 da planilha cadastro tiver valor.Então 'vai apagar a linha 4 da plan "gerar documento" 'Se a coluna A5 da planilha cadastro tiver valor.Então 'vai apagar a linha 5 da plan "gerar documento" 'Se a coluna A6 da planilha cadastro tiver valor.Então 'vai apagar a linha 6 da plan "gerar documento"
  8. ACHEI ESSE CÓDIGO, MAS NÃO CONSEGUI ADAPTAR PARA O QUE QUERO. DEU ERRO Public Sub CORRETO() ' Inicio do Programa Dim Y, X As Integer Range("B15").Select ' Seleciona a começa a correr a celula a partir desta posição Do ' Inicio do LOOP If IsEmpty(ActiveCell) = False Then ' Verifica se posição tem ou não texto ActiveCell.Offset(1, 0).Select End If ' Fim de IF Loop Until IsEmpty(ActiveCell) = True ' Se posição inicial não tem texto efetuar comandos X = InputBox("Digite Quantidade:") ' Apresenta caixa de texto para inserir valor de X. Sheets("Plan2").Select ' Vai para plan2. Range("A2").Clear ' Limpa a celula A2 Range("A2").Value = X ' Insere novo valor Range("A2 : C2").Select ' Na posição A1 Selection.Copy ' Copia o valor que estiver na celula Sheets("Plan1").Select ' Busca plan1 ActiveSheet.Paste ' Cola o valor da primeira planilha
  9. Boa tarde André, Tenho um documento no excel, onde faço cadastro de alguns funcionários, queria que na plan (Gerar documento) só copiasse os dados das colunas A2:H2 e colassem até A6:H6, SE (IF) na plan (Cadastro) tivesse algum valor na coluna A3 ou A4 ou A5 ou A6. Consegui explicar direitinho? Eu preciso que só copiei na plan (Gerar documento) os dados da coluna A2:H2 e colem no A3:H3 se na plan (Cadastro) tivesse algum valor na coluna A3 e assim por diante. Segue em anexo o documento. To usando o seguinte código: 'Copiar e colar dados do Gerar Documento Sheets("GERAR DOCUMENTO").Select Range("A2:H2").Select Selection.Copy Sheets("GERAR DOCUMENTO").Select Range("A3:H3").Select ActiveSheet.Paste Sheets("GERAR DOCUMENTO").Select Range("A2:H2").Select Selection.Copy Sheets("GERAR DOCUMENTO").Select Range("A4:H4").Select ActiveSheet.Paste Sheets("GERAR DOCUMENTO").Select Range("A2:H2").Select Selection.Copy Sheets("GERAR DOCUMENTO").Select Range("A5:H5").Select ActiveSheet.Paste Sheets("GERAR DOCUMENTO").Select Range("A2:H2").Select Selection.Copy Sheets("GERAR DOCUMENTO").Select Range("A6:H6").Select ActiveSheet.Paste Application.CutCopyMode = False Mas preciso que entre essa condição que pedi nele..... Teste_Excel.zip
  10. Bom dia amigos, mais uma vez venho pedir pela ajuda de vocês. Alguém poderia me ajudar? até agora não consegui solucionar o problema.
  11. Boa tarde amigos, tenho um documento no excel que possui algumas planilhas... Estou usando vba e através de um código eu gero dados de duas planilhas para o Word. A primeira planilha é o cadastro de alguns funcionários, já na segunda é a continuação( onde eu coloco local e etc) Estive com problemas na hora de gerar os dados porque como a primeira planilha as vezes possuía mais de um cadastro, ou seja, usou mais de uma linha. Ai na segunda planilha, como tudo é o mesmo local fica só uma linha. Ao VBA fazer a leitura só passava o primeiro funcionário que cadastrei. Eu queria que então ao clicar no botão, ele copiasse as informações do local ( segunda planilha) e colasse na quantidade de linhas que foram criadas na primeira planilha... Segue os documentos em anexo. Alguém poderia me ajudar?  Teste_Excel.zip Teste_Word.zip
  12. Boa tarde amigos, tenho um documento no excel que possui algumas planilhas... Estou usando vba e através de um código eu gero dados de duas planilhas para o Word. A primeira planilha é o cadastro de alguns funcionários, já na segunda é a continuação( onde eu coloco local e etc) Estive com problemas na hora de gerar os dados porque como a primeira planilha as vezes possuía mais de um cadastro, ou seja, usou mais de uma linha. Ai na segunda planilha, como tudo é o mesmo local fica só uma linha. Ao VBA fazer a leitura só passava o primeiro funcionário que cadastrei. Eu queria que então ao clicar no botão, ele copiasse as informações do local ( segunda planilha) e colasse na quantidade de linhas que foram criadas na primeira planilha... Alguém poderia me ajudar? adicionado 22 minutos depois Estou usando o seguinte código: Sub Retângulodecantosarredondados2_Clique() 'Copiar e colar dados do Gerar Documento Sheets("GERAR DOCUMENTO").Select Range("A2:H2").Select Selection.Copy Sheets("GERAR DOCUMENTO").Select Range("A3:H3").Select ActiveSheet.Paste Application.CutCopyMode = False Dim total As Integer Range("A1").Select total = (Cells(Rows.Count, 1).End(xlUp).Row) MsgBox ("Basta clicar na janela do word que será aberta automaticamente.") 'Abrir documento do word pronto Dim wdApp As Word.Application, wdDoc As Word.Document On Error Resume Next Set wdApp = GetObject(, "Word.Application") If Err.Number <> 0 Then 'Word isn't already running Set wdApp = CreateObject("Word.Application") End If Set wdDoc = wdApp.Documents.Open("meu documento") wdApp.Visible = True For i = 2 To total 'Passando para a primeira tabela do Word wdDoc.Tables(1).Rows.Add 'Adicionando 1 linha à tabela ThisWorkbook.Sheets("CADASTRO").Range("A" & i & ":D" & i).Copy wdDoc.Range(wdDoc.Tables(1).Cell(i, 1).Range.Start, wdDoc.Tables(1).Cell(i, 4).Range.End).PasteAndFormat (22) 'Passando para a segunda tabela do Word (O instrutor novamente) wdDoc.Tables(2).Rows.Add 'Adicionando 1 linha à tabela ThisWorkbook.Sheets("CADASTRO").Range("A" & i).Copy wdDoc.Range(wdDoc.Tables(2).Cell(i, 1).Range.Start, wdDoc.Tables(2).Cell(i, 1).Range.End).PasteAndFormat (22) 'Passando para a segunda tabela do Word ThisWorkbook.Sheets("CADASTRO").Range("E" & i & ":G" & i).Copy wdDoc.Range(wdDoc.Tables(2).Cell(i, 2).Range.Start, wdDoc.Tables(2).Cell(i, 4).Range.End).PasteAndFormat (22) 'Passando para a terceira tabela do Word ( O instrutor novamente) 'wdDoc.Tables(3).Rows.Add 'Adicionando 1 linha à tabela ThisWorkbook.Sheets("GERAR DOCUMENTO").Range("A" & i).Copy wdDoc.Range(wdDoc.Tables(3).Cell(i, 1).Range.Start, wdDoc.Tables(3).Cell(i, 1).Range.End).PasteAndFormat (22) 'Passando para a terceira tabela do Word ThisWorkbook.Sheets("GERAR DOCUMENTO").Range("B" & i).Copy wdDoc.Range(wdDoc.Tables(3).Cell(i, 2).Range.Start, wdDoc.Tables(3).Cell(i, 2).Range.End).PasteAndFormat (22) 'Passando para a quarta tabela do Word 'wdDoc.Tables(4).Rows.Add 'Adicionando 1 linha à tabela ThisWorkbook.Sheets("GERAR DOCUMENTO").Range("C" & i & ":E" & i).Copy wdDoc.Range(wdDoc.Tables(4).Cell(i, 1).Range.Start, wdDoc.Tables(4).Cell(i, 3).Range.End).PasteAndFormat (22) 'Passando para a quinta tabela do Word 'wdDoc.Tables(5).Rows.Add 'Adicionando 1 linha à tabela ThisWorkbook.Sheets("GERAR DOCUMENTO").Range("F" & i & ":H" & i).Copy wdDoc.Range(wdDoc.Tables(5).Cell(i, 1).Range.Start, wdDoc.Tables(5).Cell(i, 3).Range.End).PasteAndFormat (22) Application.CutCopyMode = False Next Set wordapp = Nothing Set wdDoc = Nothing End Sub adicionado 23 minutos depois 'Copiar e colar dados do Gerar Documento Sheets("GERAR DOCUMENTO").Select Range("A2:H2").Select Selection.Copy Sheets("GERAR DOCUMENTO").Select Range("A3:H3").Select ActiveSheet.Paste Application.CutCopyMode = False Nesta parte que preciso modificar, ao invés de ser A3:H3... Preciso que seja pela contagem de linhas da planilha CADASTRO
  13. Boa tarde Pessoal, estou com um documento que passa dados para um tabela do excel, eu queria que quando esse dados do excel fosse m para a tabela do word, eles ficassem centralizados.. uso o seguinte código para transferir: 'Passando para a primeira tabela do Word wdDoc.Tables(1).Rows.Add 'Adicionando 1 linha à tabela ThisWorkbook.Sheets("CADASTRO").Range("A" & i & ":D" & i).Copy wdDoc.Range(wdDoc.Tables(1).Cell(i, 1).Range.Start, wdDoc.Tables(1).Cell(i, 4).Range.End).PasteAndFormat (22) Queria que ao criar essa linha para colocar os dados, os dados ficassem centralizados. ME AJUDEM PF!!!
  14. Boa tarde to usando o seguinte código, gostaria de saber o que eu posso acrescentar para que ao clicar no botão "Gerar documento" o word abra na tela do meu computador sem eu ter que clicar na janela que foi aberta.... Sub Retângulodecantosarredondados2_Clique() Dim total As Integer Range("A1").Select total = (Cells(Rows.Count, 1).End(xlUp).Row) 'Abrir documento do word pronto Dim wdApp As Word.Application, wdDoc As Word.Document On Error Resume Next Set wdApp = GetObject(, "Word.Application") If Err.Number <> 0 Then 'Word isn't already running Set wdApp = CreateObject("Word.Application") End If Set wdDoc = wdApp.Documents.Open("meu documento") wdApp.Visible = True For i = 2 To total 'Passando para a primeira tabela do Word wdDoc.Tables(1).Rows.Add 'Adicionando 1 linha à tabela ThisWorkbook.Sheets("CADASTRO").Range("A" & i & ": D" & i).Copy wdDoc.Range(wdDoc.Tables(1).Cell(i, 1).Range.Start, wdDoc.Tables(1).Cell(i, 4).Range.End).PasteAndFormat (22) 'Passando para a segunda tabela do Word (O instrutor novamente) wdDoc.Tables(2).Rows.Add 'Adicionando 1 linha à tabela ThisWorkbook.Sheets("CADASTRO").Range("A" & i).Copy wdDoc.Range(wdDoc.Tables(2).Cell(i, 1).Range.Start, wdDoc.Tables(2).Cell(i, 1).Range.End).PasteAndFormat (22) 'Passando para a segunda tabela do Word ThisWorkbook.Sheets("CADASTRO").Range("E" & i & ":G" & i).Copy wdDoc.Range(wdDoc.Tables(2).Cell(i, 2).Range.Start, wdDoc.Tables(2).Cell(i, 4).Range.End).PasteAndFormat (22) 'Passando para a segunda tabela do Word (O Local) ThisWorkbook.Sheets("GERAR DOCUMENTO").Range("A" & i).Copy wdDoc.Range(wdDoc.Tables(2).Cell(i, 5).Range.Start, wdDoc.Tables(2).Cell(i, 5).Range.End).PasteAndFormat (22) 'Passando para a terceira tabela do Word ( O instrutor novamente) wdDoc.Tables(3).Rows.Add 'Adicionando 1 linha à tabela ThisWorkbook.Sheets("CADASTRO").Range("A" & i).Copy wdDoc.Range(wdDoc.Tables(3).Cell(i, 1).Range.Start, wdDoc.Tables(3).Cell(i, 1).Range.End).PasteAndFormat (22) 'Passando para a terceira tabela do Word ThisWorkbook.Sheets("GERAR DOCUMENTO").Range("B" & i).Copy wdDoc.Range(wdDoc.Tables(3).Cell(i, 2).Range.Start, wdDoc.Tables(3).Cell(i, 2).Range.End).PasteAndFormat (22) 'Passando para a quarta tabela do Word 'wdDoc.Tables(4).Rows.Add 'Adicionando 1 linha à tabela ThisWorkbook.Sheets("GERAR DOCUMENTO").Range("C" & i & ":E" & i).Copy wdDoc.Range(wdDoc.Tables(4).Cell(i, 1).Range.Start, wdDoc.Tables(4).Cell(i, 3).Range.End).PasteAndFormat (22) 'Passando para a quinta tabela do Word 'wdDoc.Tables(5).Rows.Add 'Adicionando 1 linha à tabela ThisWorkbook.Sheets("GERAR DOCUMENTO").Range("F" & i & ":H" & i).Copy wdDoc.Range(wdDoc.Tables(5).Cell(i, 1).Range.Start, wdDoc.Tables(5).Cell(i, 3).Range.End).PasteAndFormat (22) Next Set wordapp = Nothing Set wdDoc = Nothing End Sub

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