About Me

A minha foto
JRod - PORTUGAL
Microsoft [MVP] - Excel (10º ano consecutivo)
Ver o meu perfil completo
Com tecnologia do Blogger.

Seguidores

Estatisticas

Free Blog Counter

eXTReMe Tracker
2008-04-04

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:

2008-04-03

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:

image

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:

image

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: