27/06/2007, 14:56
|
| | Fecha de Ingreso: junio-2007
Mensajes: 1
Antigüedad: 17 años, 5 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. |