Ver Mensaje Individual
  #3 (permalink)  
Antiguo 27/06/2007, 14:56
DarthOrthac
 
Fecha de Ingreso: junio-2007
Mensajes: 1
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: cambiar impresora predeterminada antes de datareport

He utilizado he me ha funcionado perfectamente...

Yo lo he introducido en un modulo. Hay que crear un archivo de texto con el nombre de la impresora que queremos cambiar. Llamamos a la función cambiar impresora con la ruta y nombre del fichero que contiene el nombre de la impresora:

En el archivo de texto pongo el nombre con el que me viene reflejado en impresoras y faxes

Por ejemplo:

Epson C48

Y desde cualquier parte del programa llamamos al procedimiento:

Call CambiarImpresora ("C:\impresora.txt")

A continuación pongo el modulo que he utilizado...

Option Explicit

Declare Function WriteProfileString Lib "kernel32" Alias "WriteProfileStringA" (ByVal lpszSection As String, ByVal lpszKeyName As String, ByVal lpszString As String) As Long
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lparam As String) As Long

Public Sub CambiarImpresora(pFichero As String)

Dim vNombre As String
Dim di As Variant
Dim L As Variant
vNombre = LeerFicheroAux(pFichero)

If vNombre <> "$$$$$$" Then

di = WriteProfileString("WINDOWS", "DEVICE", vNombre & ",winspool,Ne05")

End If


End Sub


Private Function LeerFicheroAux(NombreFichero As String) As String


Dim NumFichero As Integer

NumFichero = FreeFile

On Error GoTo error

Open NombreFichero For Input As NumFichero

LeerFicheroAux = Input(LOF(NumFichero), #NumFichero)

Close NumFichero

Exit Function

error:

If Err = 53 Then

LeerFicheroAux = "$$$$$$"

Else

MsgBox "Error de acceso, consulte con el proveedor del programa"

End If


End Function


A mi me ha funcionado utilizando datareport y cuando lo cargo vuelvo a poner la impresora predeterminda anteriormente guarda en otro fichero.

Seguramente se podra hacer más depurado, pero para lo que me hacia falta me parecio más fácil asin.

Gracias por la ayuda.