Como posso evitar que o Word / Excel tente acessar a impressora?

6

Sempre que executo determinadas operações no Word ou Excel (2007), esses aplicativos estão tentando acessar a impressora. Eu trabalho em um laptop no trabalho e em casa. Quando estou em casa (não conectado à impressora do meu trabalho), às vezes tenho que esperar muitos segundos para o Word / Excel se tornar responsivo após executar operações como tornar uma célula em negrito no Excel ou colar um parágrafo de uma página da Web no Word. .

No Word, posso ter uma pequena mensagem na parte inferior dizendo algo como "Tentando se conectar à impressora, pressione Esc para abortar".

No entanto

  1. Essa opção não existe no Excel

  2. e às vezes, se eu pressionar Esc, o Word trava.

Existe uma solução alternativa?

    
por Roee Adler 30.08.2009 / 19:46

7 respostas

8

Minha impressora padrão é a impressora PDF instalada através do CutePDF , que é gratuito:)

Desde que eu tenha uma impressora local definida, e ela é padrão, tudo está bem.

Eu vi o comportamento exato que você descreve ao trocar fontes, e acho que é porque algumas impressoras têm fontes permitidas e o Word está verificando se elas ' vai realmente renderizar na impressora (embora por que isso é necessário até você realmente imprimir está além de mim).

    
por 14.09.2009 / 14:05
3

Acho que a única maneira de evitar isso é ter uma impressora padrão que não seja remota. Aqui está um simples JScript que irá definir sua impressora padrão como "Microsoft XPS Document Writer" (supondo que você tenha instalado), que é sempre uma impressora local, sem hardware.

var network = new ActiveXObject("WScript.Network");
network.SetDefaultPrinter("Microsoft XPS Document Writer");

Salve isso como SetDefaultPrinter.js e você pode executá-lo usando a linha de comando:

cscript //nologo SetDefaultPrinter.js

... ou você pode salvá-lo em sua área de trabalho e clicar duas vezes para executá-lo.

    
por 30.08.2009 / 20:00
2

Uma opção seria algo como isso para alternar automaticamente sua impressora com base no endereço IP. Presumivelmente, poderia mudar para nenhum quando você está em casa.

    
por 02.09.2009 / 22:02
1

Pode ser útil alterar a sua impressora padrão para uma definida localmente.

Não há uma razão racional óbvia (para mim, pelo menos) para um aplicativo interagir com uma impressora ao alterar um estilo de fonte, mas se é isso que está acontecendo, pelo menos uma impressora local não estará rede desconectada.

    
por 30.08.2009 / 19:51
1

Você pode adicionar um procedimento ao módulo ThisWorkbook/ThisDocument do seu personal.xls / normal.dot que detectaria se você estivesse em casa e definiria o padrão da impressora adequadamente.

Eu não testei isso, mas USERDOMAIN (índice 30) deve ser adequado para essa finalidade. O código a seguir deve fornecer uma ideia aproximada do que é necessário para fazer isso.

Sub checkDomain()
    Dim desiredPrinter As String

    If Environ(30) = "USERDOMAIN=YOURWORKDOMAIN" Then
        'Set work default printer
        desiredPrinter = "\NetworkAddress\Work Printer on Ne04:"
    Else
        'Set home default printer
        desiredPrinter = "Microsoft XPS Document Writer on Ne01:"
    End If

    If Not Application.ActivePrinter = desiredPrinter Then
        Application.ActivePrinter = desiredPrinter
    End If
End Sub

Observe que as portas provavelmente serão diferentes em seu PC, você pode executar o seguinte código para verificar o que o VBA acha que suas impressoras são chamadas.

Sub PrinterList()
    Dim objWMIService
    Dim colInstalledPrinters
    Dim objPrinter
    Dim strPrinterName As String
    Dim strComputer As String

    strPrinterName = Application.ActivePrinter
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\" & strComputer & "\root\cimv2")
    Set colInstalledPrinters = objWMIService.ExecQuery("Select * from Win32_Printer ")

    For Each objPrinter In colInstalledPrinters
        If objPrinter.PrinterStatus = 1 Or objPrinter.PrinterStatus = 2 Or objPrinter.PrinterStatus =     7 Then
            Debug.Print "offline:" & objPrinter.Name
        Else
            If InStr(strPrinterName, objPrinter.Name) Then
                Debug.Print objPrinter.Name & "*"
            Else
                Debug.Print objPrinter.Name
            End If
        End If
    Next
End Sub

Isso listará todos os nomes de impressoras instaladas na janela Immediate do Editor do Visual Basic (CTRL + G para a janela Immediate se você não estiver muito familiarizado com o VBA)

    
por 01.09.2009 / 09:36
1

Embora você possa verificar a propriedade ActivePrinter no Excel 2007, não é possível defini-la por algum motivo (mesmo que seja possível em um script VBA do Word). Aqui está a solução alternativa no Excel VBA:

Set oWord = CreateObject(Class:="Word.Application")

oWord.ActivePrinter = NewDefaultPrinter$

oWord.Quit False

Set oWord = Nothing

É especialmente útil alterar a impressora padrão se ela estiver definida atualmente como uma impressora de rede, pois haverá atrasos se a macro VBA modificar uma pasta de trabalho (excluir colunas, etc.) - parece verificar na impressora cada alteração feita. Para evitar isso, a impressora padrão precisa ser configurada para uma impressora local durante o processo de modificação da pasta de trabalho, depois voltar novamente.

    
por 22.07.2011 / 07:35
0

Outra solução é simplesmente desabilitar a exibição de quebras de página na (s) guia (s) lenta (s). Você pode ver um exemplo disso aqui: link

A comunicação de impressão geralmente ocorre porque o Excel está tentando repaginar constantemente sua planilha, o que é caro e geralmente desnecessário. Vi boas melhorias no desempenho simplesmente desativando essa opção.

    
por 17.03.2014 / 23:07