Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
Avatar do usuário
Por FelipeBarbosa
Posts Avatar
#24202
Bom dia Pessoal,

Tenho uma macro que quando acionada para impressão ela copia o valor do documento e cola esse numero em outra celula, com base nesses numeros colados, gera-se um banco de dados para dizer se foi impresso ou não.

O meu problema é que quando dou imprimir e coloco o intervalo de impressão, ele sempre sai uma folha a mais, e é justamente a área onde os números são colados, alguém poderia me ajudar? Segue em anexo a planilha e abaixo a macro. Obrigado desde já.
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por FelipeBarbosa
Posts Avatar
#24203
Segue a macro em anexo.
Você não está autorizado a ver ou baixar esse anexo.
Por osvaldomp
#24204
Sugestão - sem considerar o seu código, informe exatamente o que você quer fazer.
Avatar do usuário
Por FelipeBarbosa
Posts Avatar
#24214
osvaldomp escreveu:Sugestão - sem considerar o seu código, informe exatamente o que você quer fazer.
Na hora de imprimir, não quero que essa ultima folha seja impressa, somente a área que defino está ótimo, mas não sei como sai essa pagina a mais.
Por osvaldomp
#24220
1. qual o intervalo que você quer imprimir ? ~~~> exemplo: 'A1:BJ500'
2. quantas cópias ?
3. só frente ou frente e verso ?
Avatar do usuário
Por FelipeBarbosa
Posts Avatar
#24250
osvaldomp escreveu:1. qual o intervalo que você quer imprimir ? ~~~> exemplo: 'A1:BJ500'
2. quantas cópias ?
3. só frente ou frente e verso ?
1. O intervalo é determinado pela pessoa que imprime, aparece a tela de setup da impressão e ele coloca por exemplo imprimir 1 de 10.

2. 1 cópia

3 Sim é frente e verso e a impressora já fica pré configura para isso.


O problema é que mesmo a pessoa configurando o intervalo 1 de 10 (ou 1 de 2...etc) , ainda sai uma pagina a mais com o intervalo da cópia que a macro faz para a coluna BT.
Por osvaldomp
#24254
Veja se entendi a sua necessidade.

1. o usuário coloca em 'AT1' e em 'AT2' o intervalo dos números das OFs que deseja imprimir (no seu exemplo está 67327 e 67329)
2. aí você quer imprimir uma via da OF e mais uma via do Apontamento, frente e verso, para cada número do item 1 acima ?
ex. imprimir uma folha com OF 67327 e no verso dessa folha imprimir Apontamento 67327,
idem para 67328 e 67329 ?
3. então o intervalo a ser impresso será 'B1:AN115'

sugestão - se for isso, podemos escrever um novo código que fará o trabalho ao clicar no botão, sem que o usuário precise determinar o intervalo a ser impresso, pois o intervalo constará no código, e o código irá numerar as OFs conforme os números colocados em 'AT1:AT2'. Me parece menos trabalhoso escrever um código novo do que revisar o seu.
Avatar do usuário
Por FelipeBarbosa
Posts Avatar
#24280
osvaldomp escreveu:Veja se entendi a sua necessidade.

1. o usuário coloca em 'AT1' e em 'AT2' o intervalo dos números das OFs que deseja imprimir (no seu exemplo está 67327 e 67329)
2. aí você quer imprimir uma via da OF e mais uma via do Apontamento, frente e verso, para cada número do item 1 acima ?
ex. imprimir uma folha com OF 67327 e no verso dessa folha imprimir Apontamento 67327,
idem para 67328 e 67329 ?
3. então o intervalo a ser impresso será 'B1:AN115'

sugestão - se for isso, podemos escrever um novo código que fará o trabalho ao clicar no botão, sem que o usuário precise determinar o intervalo a ser impresso, pois o intervalo constará no código, e o código irá numerar as OFs conforme os números colocados em 'AT1:AT2'. Me parece menos trabalhoso escrever um código novo do que revisar o seu.
Exato, é dessa forma que funciona Osvaldo, o codigo hoje já funciona, porém tem problemas, que é o caso da folha que sai a mais. Hoje ele imprime a folha da OF na frente e a de apontamento no verso, conforme você descreveu (Impressora tem a função frente e verso).

Tem como criar o código que você disse para que a Macro determine o intervalo de acordo com o digitado de AT1 a AT2? Se sim, poderia me ajudar com isso?
Por osvaldomp
#24288
Experimente o código abaixo. O resultado esperado ao rodar esse código é o que comentei no último post.
Código: Selecionar todos
Sub ImprimeOFeApont()
 Dim k As Long
  With Sheets("INJETORA")
   If .[AT1] < .[AT2] Or Application.CountA(.[AT1:AT2]) < 2 Then
    MsgBox "verifique os números desejados para as OFs"
    Exit Sub
   End If
   For k = .[AT2] To .[AT1]
    .[AG4] = k
    .PageSetup.PrintArea = "$B$1:$AN$115"
    .PrintOut Copies:=1, Collate:=True
   Next k
 End With
End Sub
obs. antes de testar desfaça a mesclagem de células na célula 'AL57', pois a mesclagem está "invadindo" até a coluna 'AO'
Avatar do usuário
Por FelipeBarbosa
Posts Avatar
#24289
osvaldomp escreveu:Experimente o código abaixo. O resultado esperado ao rodar esse código é o que comentei no último post.
Código: Selecionar todos
Sub ImprimeOFeApont()
 Dim k As Long
  With Sheets("INJETORA")
   If .[AT1] < .[AT2] Or Application.CountA(.[AT1:AT2]) < 2 Then
    MsgBox "verifique os números desejados para as OFs"
    Exit Sub
   End If
   For k = .[AT2] To .[AT1]
    .[AG4] = k
    .PageSetup.PrintArea = "$B$1:$AN$115"
    .PrintOut Copies:=1, Collate:=True
   Next k
 End With
End Sub
obs. antes de testar desfaça a mesclagem de células na célula 'AL57', pois a mesclagem está "invadindo" até a coluna 'AO'
Osvaldo, o problema é que não é somente duas paginas, por exemplo, eu sempre preciso colocar para imprimir da OF 67329 até 67335 ai no contador vai aparacer imprimir 1 - 14. Por isso hoje o outro código abre o PrintPreview para o o usuário digitar de que pagina a que pagina deseja imprimir.

Acha que consegue incluir isso no codigo, para a macro imprimir do intervalo AW3 até o AY3?
Por osvaldomp
#24290
Felipe, vamos por partes, antes de introduzir outros pontos no código, informe se você testou o código que passei e se o resultado foi o esperado de acordo com o que eu comentei no post anterior, e só depois que essa primeira parte estiver satisfatória trataremos dos outros pontos.
Avatar do usuário
Por FelipeBarbosa
Posts Avatar
#24291
osvaldomp escreveu:Felipe, vamos por partes, antes de introduzir outros pontos no código, informe se você testou o código que passei e se o resultado foi o esperado de acordo com o que eu comentei no post anterior, e só depois que essa primeira parte estiver satisfatória trataremos dos outros pontos.
Sim, eu testei o código, desfiz o mesclar da célula informada. Atende o que você descreveu.
Por osvaldomp
#24294
FelipeBarbosa escreveu: ... o problema é que não é somente duas paginas, por exemplo, eu sempre preciso colocar para imprimir da OF 67329 até 67335 ai no contador vai aparacer imprimir 1 - 14. Por isso hoje o outro código abre o PrintPreview para o o usuário digitar de que pagina a que pagina deseja imprimir.
Acha que consegue incluir isso no codigo, para a macro imprimir do intervalo AW3 até o AY3?
Se você quer imprimir da OF 67329 até a OF 67335 basta colocar esses números em AT2 = 67329 e em AT1=67335 e rodar o código que passei. Assim serão impressas 7 OFs, com os números desejados, e a folha Apontamento no verso, não precisamos de contador, não precisamos abrir o PrintView e tampouco precisamos do que está em 'AW3' e em 'AY3'.

sugestão - para responder clique em + Resposta localizado abaixo da última postagem, só clique em Responder com citação se necessário.
Avatar do usuário
Por FelipeBarbosa
Posts Avatar
#24350
Aparentemente deu certo, porém temos alguma probleminhas que estão ocorrendo.


O que a linha ".[AG4] = k" faz? Pois acabou substituindo uma formula que havia nessa celula, tem como referenciarmos em outra celula isso? Até tentei, mas ai ele imprimi todas as páginas iguais.

Já melhorou bastante do que eu tinha, te agradeço
Por osvaldomp
#24353
FelipeBarbosa escreveu:O que a linha ".[AG4] = k" faz? Pois acabou substituindo uma formula que havia nessa celula...
O código coloca em 'AG4' o número da OF a ser impressa. Sim, antes havia um PROCV naquela célula que buscava o número da OF, agora o código faz isso, não precisa mais de fórmula.
Avatar do usuário
Por FelipeBarbosa
Posts Avatar
#24389
Toda a impressão depende da célula AG4, pois outras células puxam PROCV dela, e por isso quando ele cola o código na hora da impressão acaba não puxando automático o restante das células e minha folha sai com a maioria dos campos em branco.

O que podemos fazer?
Por osvaldomp
#24391
O conteúdo de 'AG4', se for por resultado de fórmula ou for inserido pelo código, é igual, ou seja, é sempre o número da OF a ser impressa, por isso não entendo o problema que você comentou.

Você pode testar assim: coloque a fórmula em 'AG4' e desative a linha do código que insere o número da OF colocando um apóstrofo no início da linha ~~~> '.[AG4] = k
Avatar do usuário
Por FelipeBarbosa
Posts Avatar
#24392
Também não sei o porque, mas talvez ele não consiga ler o numero antes da impressão e não traga os valores, é uma suposição.

Mas vou Testar conforme você falou
Avatar do usuário
Por FelipeBarbosa
Posts Avatar
#24395
Desabilitando ele, imprime todas as paginas iguais.
Por osvaldomp
#24396
FelipeBarbosa escreveu:Toda a impressão depende da célula AG4, pois outras células puxam PROCV dela, e por isso quando ele cola o código na hora da impressão acaba não puxando automático o restante das células e minha folha sai com a maioria dos campos em branco.
Quais os números que você colocou em 'AT1' e em 'AT2' para fazer o teste acima ?
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord