¿Cómo puedo evitar que Word / Excel intente llegar a la impresora?


6

Cada vez que realizo ciertas operaciones en Word o Excel (2007), estas aplicaciones intentan llegar a la impresora. Trabajo en una computadora portátil en el trabajo y en casa. Cuando estoy en casa (no conectado a la impresora de mi trabajo), a veces tengo que esperar muchos segundos para que Word / Excel responda después de realizar operaciones como poner una celda en negrita en Excel o pegar un párrafo de una página web a Word .

En Word puedo tener un pequeño mensaje en la parte inferior que dice algo como "Intentando conectarme a la impresora, presione Esc para abortar".

sin embargo

  1. Esa opción no existe en Excel

  2. y, a veces, si presiono Esc, Word se bloquea.

¿Hay alguna solución?

Respuestas:


8

Mi impresora predeterminada es la impresora PDF instalada a través de CutePDF , que es gratis :)

Mientras tenga una impresora local definida, y es predeterminada, todo está bien.

He visto el comportamiento exacto que describe al cambiar las fuentes, y creo que es porque algunas impresoras tienen fuentes permitidas, y Word está verificando si realmente se renderizarán en la impresora (aunque por qué esto es necesario hasta que realmente imprima es mas alla de mi).


Acabo de hacer ese cambio, pero actualmente estoy conectado a la red. Comprobaré si funciona más tarde, gracias.
Roee Adler

feliz eso es todo :)
Warren

3

Creo que la única forma de evitar esto es tener una impresora predeterminada que no sea remota. Aquí hay un JScript simple que configurará su impresora predeterminada en "Microsoft XPS Document Writer" (suponiendo que la tenga instalada) que siempre es una impresora local que no es de hardware.

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

Guarde eso como SetDefaultPrinter.jsy puede ejecutarlo usando la línea de comando:

cscript //nologo SetDefaultPrinter.js

... o simplemente puede guardarlo en su escritorio y hacer doble clic para ejecutarlo.


2

Una opción podría ser algo como esto para cambiar automáticamente la impresora según la dirección IP. Presumiblemente podría cambiar a ninguno cuando estás en casa.


1

Puede ser útil cambiar su impresora predeterminada a una que esté definida localmente.

No hay una razón racional obvia (al menos para mí) para que una aplicación interactúe con una impresora al cambiar un estilo de fuente, pero si eso es lo que está sucediendo, al menos una impresora local no estará en una red no conectada.


No tengo una impresora local y realmente me gusta el hecho de que tengo mi impresora predeterminada definida como la de trabajo (
imprimo

1

Puede agregar un procedimiento al ThisWorkbook/ThisDocumentmódulo de su personal.xls / normal.dot que detectaría si estaba en su casa y establecería la impresora por defecto de manera adecuada.

No he probado esto, pero USERDOMAIN(índice 30) debería ser adecuado para este propósito. El siguiente código debería darle una idea aproximada de lo que se requiere para hacer esto.

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

Tenga en cuenta que los puertos probablemente serán diferentes en su PC, puede ejecutar el siguiente código para verificar cómo VBA cree que se llaman sus impresoras.

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

Esto enumerará todos los nombres de impresoras instaladas en la ventana Inmediato del Editor de Visual Basic (CTRL + G para la ventana Inmediato si no está muy familiarizado con VBA)


1

Si bien puede verificar la propiedad ActivePrinter en Excel 2007, no puede configurarla por alguna razón (aunque puede hacerlo en un script de Word VBA). Aquí está la solución en Excel VBA:

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

oWord.ActivePrinter = NewDefaultPrinter$

oWord.Quit False

Set oWord = Nothing

Es especialmente útil cambiar la impresora predeterminada si está configurada actualmente en una impresora de red, ya que se experimentan retrasos si la macro VBA modifica un libro de trabajo (eliminar columnas, etc.); parece verificar la impresora con cada cambio realizado. Para evitar esto, la impresora predeterminada debe configurarse en una impresora local durante el proceso de modificación del libro de trabajo, y luego volver nuevamente.


0

Otra solución es simplemente deshabilitar la visualización de saltos de página en las pestañas lentas. Puede ver un ejemplo de esto aquí: http://blogs.mccombs.utexas.edu/the-most/2010/02/17/hidepagebreaks/

La comunicación impresa a menudo se debe a que Excel intenta constantemente repaginar su hoja, lo cual es costoso y generalmente innecesario. He visto buenas mejoras de rendimiento simplemente deshabilitando esa opción.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.