About Me
Seguidores
Estatisticas
214: VBA - Mudar de impressora, para Output, em Excel
Recebido por mail (adaptado):
"A minha duvida é a seguinte:
Tenho umas macros num documento de excel para executarem algumas funções, entre as quais a de gravar uma imagem em formato MDI.
Acontece que o ficheiro principal está num servidor assim como as pastas onde gravo essas imagens.
Tenho atalhos em varios computadores da rede para esse ficheiro.
1ª - Qual a possibilidade de puder trabalhar no mesmo ficheiro ao mesmo tempo nos tres computadores?
2ª- Após a instalação de uma impressora nova que serve dois desses computadores as macros deixaram de funcionar convenientemente, pois só num
dos computadores é permitido executar a macro correctamente. No outro computador para quando chega à parte de gravar a imagem .MDI.
As macros são as seguintes ou melhor parte delas.
________________________________________________
Sheets("M D").Select
Range("A1").Select
Application.Dialogs(xlDialogPrinterSetup).Show
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Application.ActivePrinter = "Microsoft Office Document Image Writer em
Ne01:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, _
ActivePrinter:="Microsoft Office Document Image Writer em Ne01:", _
Collate:=True, _
PrintToFile:=True, _
PrToFileName:="\\Hdl\cir\Stocks\Coz\Mapas\Mapa de " &
Format(Now, "dd-mmm-yy h-mm-ss") & ".mdi"
__________________________________________________
Sheets("Extemporanea").Select
Application.Dialogs(xlDialogPrinterSetup).Show
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Application.ActivePrinter = "Microsoft Office Document Image Writer em
Ne01:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, _
ActivePrinter:="Microsoft Office Document Image Writer em Ne01:", _
Collate:=True, _
PrintToFile:=True, _
PrToFileName:="\\Hdl\cir\Stocks\Coz\Extemporaneas\Extemporânea
Quando a macro chega a [[Application.ActivePrinter = "Microsoft Office Document Image Writer em Ne01:"]] pára, mas só num computador, se alterar para
[[Application.ActivePrinter = "Microsoft Office Document Image Writer em Ne00:"]], fica a funcionar nesse computador e dá erro no outro.
Serão as portas da impressora?? Como faço para remediar a coisa??
Já tentei retirar [[em Ne00 ou em Ne01]], mas tambem dá erro."
Comentário:
Como possível solução, inserir, no início das macros, o seguinte código:
Dim sStr As String
sStr = Application.ActivePrinter
Application.EnableEvents = False
On Error Resume Next
Application.ActivePrinter = "Microsoft Office Document Image Writer on Ne02:"
If Err.Number = 1004 Then
Application.ActivePrinter = "Microsoft Office Document Image Writer on Ne01:"
Err.Clear
End If
Tópicos relacionados:
213: Excel - Referência circular
C. Moreira, enviou-me uma folha de cálculo, na qual pretendia o seguinte:
Alterar o mês em A1 e o valor em B1. Se o mês for Janeiro, Fevereiro ou Março, as células D1, D2 e D3 assumem o valor de B1, caso contrário ficam com os valores que apresentam.
Apresentou então o exemplo:
E forneceu a solução, ou seja, com a utilização da chamada "referência circular".
Vejamos, então, como foi feito:
Em D1, digitou: =IF(A1="Janeiro";B1;D1)
Em D2: =IF(A1="Fevereiro";B1;D2)
Em D3: =IF(A1="Março";B1;D3)
Depois, fez o seguinte:
Como se pode ver, sempre que em A1 se coloque o mês, o valor transfere-se para a coluna D, para a célula que corresponde ao mês digitado.
Comentário:
O único problema da referência circular é que, se for aberto outro workbook antes deste, aparece, por defeito, o facto de não haver referência circular. Logo, quando se abre o 2º workbook (que tem a tal referência circular) vai aparecer sempre uma mensagem de aviso...
Claro que há uma maneira de resolver o problema e fazer com que a referência circular fique por defeito, mesmo que se abra outro qualquer workbook primeiro: é colocar a seguinte macro no próprio workbook:
Private Sub Workbook_Open()
Application.Iteration = True
End Sub
Deste modo, sempre que o workbook seja aberto, vai ler, à abertura, a macro acima e, assim, activa referência circular.
Tópicos relacionados: