Private Sub Command1_Click()
' en este procedimiento exportamos el informe
' seleccionado en el ListBox
Dim ObjectType As Integer
Dim ReportName As String
Dim ExportFormat As String
Dim SNPFile As String
Dim OnlyOnce As Boolean
Dim x As Long
Dim BlockProceso() As Process
x = Shell(App.Path & "\Snapview\Snapview.exe")
If Me.List1.ListIndex > -1 Then
' tipo de objeto (acReport)
ObjectType = 3 'acOutputReport
' nombre del informe
ReportName = Me.List1.Text
' formato al que se exportará el informe
ExportFormat = "Snapshot Format (*.snp)"
' nombre y ruta del archivo que se exportará
SNPFile = App.Path & "\" & Me.List1.Text & ".snp"
On Error GoTo err_OutputTo
Dim progID As Integer
Bolckproceso() = Process.GetProcessesByName("msaccess")
progID = BlockProceso.Length() - 1
AppActivate (BlockProceso(progID).MainWindowTitle)
' exportamos el informe seleccionado al formato
' snapshot
oApp.DoCmd.OutputTo _
ObjectType, ReportName, _
ExportFormat, SNPFile, 1
' cargamos el formulario donde se visualizarán los informes
Load Form2
'le ponemos el nombre del informe que se mostrará
Form2.Caption = "Informe: " & List1.Text
' vinculamos el archivo que hemos exportado con el visor
' de archivos Snapshot
Form2.SnapshotViewer1.SnapshotPath = SNPFile
' eliminamos el archivo
Kill SNPFile
' mostramos el formulario
Form2.Show
' hacemos que el informe se ajuste al tamaño del formulario
Form2.SnapshotViewer1.Zoom = snapZoomToFit
Else
MsgBox "Escoge un informe", vbExclamation, "Atención"
End If
Exit Sub
err_OutputTo:
If OnlyOnce = False Then
' si el formato snapshot no está disponible
If Err = 2282 Then
' si se han podido cambiar las entradas erróneas del registro
If ChangeReg Then
' reiniciaremos la aplicación Access para que los cambios
' surtan efecto
Call ResetAccess
' volvemos a intentarlo
OnlyOnce = True
Resume
Else
MsgBox "Ha ocurrido un error imprevisto"
End If
Else
MsgBox "Error: " & Err.Number & vbCrLf & vbCrLf & Err.Description
End If
Else
' por alguna razón esto no tira :-S
MsgBox "No se puede ejecutar el ejemplo"
End If
End Sub