Discussion:
Exportar datos de un subFormulario a EXCEL...
(demasiado antiguo para responder)
Wally
2007-11-23 19:07:45 UTC
Permalink
Que tal Grupo? con el siguiente problema, necesito enviar los datos de
un subFormulario de ACCESS a EXCEL, he visto muchos ejemplos de los
MVPs, muy buenos por cierto, pero no he visto algo similar a lo que
pretendo, que es los siguiente...

- por default mi subFormulario muestra todos los datos de una tabla.
- los datos pueden ser filtrados por controles que tengo en el mismo
formulario... para el filtrado utilizo:

Form_subRegistros.Filter = strFiltro
Form_subRegistros.FilterOn = True

[el código está en un botón, FILTRAR], entonces lo que quiero es que
ya que estan aplicadas las sentencias anteriores (cuando los datos ya
estan filtrados) si presiono un botón GUARDAR los datos sean guardados
en un archivo XLS... ¿Hay alguna forma de hacerlo directamente a
partir de lo que se esta viendo en el subFormulario, o se tiene que
hacer otra consulta atravez de un recordSet para poder mandar los
datos a un libro de EXCEL?

De antemano gracias por su atención!!!!
Patxi Sanz
2007-11-25 16:04:09 UTC
Permalink
Hola Wally:

Puedes preparar una consulta SQL a partir del origen de datos del
subformulario (nombre de la tabla), cuya parte WHERE sea el filtro que has
establecido en el subformulario:

Dim strSql As String

If Form_subRegistros.FilterOn = True Then
strSql = "SELECT * FROM NombreTabla WHERE " & Form_subRegistros.Filter
Else
strSql = "SELECT * FROM NombreTabla"
End If

Y a partir de la sentencia SQL que tienes en la variable strSql, crear una
consulta y enviarla a Excel.
--
Un saludo,


Patxi Sanz
patxisanz[ARROBA]yahoo[PUNTO]es
Tudela (NA)
chiri
2007-11-25 19:12:30 UTC
Permalink
Mira si te sirve algo así:

Private Sub Comando1_Click()
On Error GoTo Err_Comando1_Click

Dim rst As Recordset
Dim i As Long

Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

' Abro la referencia a un archivo de excel
Set xlBook = GetObject("C:\BOOK1.XLS")
Set xlApp = xlBook.Application

' hago referencia al primer libro de excel

Set xlSheet = xlBook.WorkSheets(1)

'doy valor al rst del los datos que hay en el subformulario
Set rst = Me![Subformulario Tabla1].Form.RecordsetClone
'muevo al primero
rst.MoveFirst
i = 1
With rst

Do While Not rst.EOF
xlSheet.Cells(i, 1).Value = !campo1
xlSheet.Cells(i, 2).Value = !campo2
xlSheet.Cells(i, 3).Value = !campo3
rst.MoveNext
i = i + 1
Loop

End With

xlBook.Close SaveChanges:=True

' Close Excel and destroy object variables.
Set xlSheet = Nothing
Set xlBook = Nothing
xlApp.Quit
Set xlApp = Nothing

Exit_Comando1_Click:
Exit Sub

Err_Comando1_Click:
MsgBox Err.Description
Resume Exit_Comando1_Click

End Sub
"Wally" <***@gmail.com> escribi� en el mensaje news:5aa5ab17-f45c-4714-97e3-***@e6g2000prf.googlegroups.com...
Que tal Grupo? con el siguiente problema, necesito enviar los datos de
un subFormulario de ACCESS a EXCEL, he visto muchos ejemplos de los
MVPs, muy buenos por cierto, pero no he visto algo similar a lo que
pretendo, que es los siguiente...

- por default mi subFormulario muestra todos los datos de una tabla.
- los datos pueden ser filtrados por controles que tengo en el mismo
formulario... para el filtrado utilizo:

Form_subRegistros.Filter = strFiltro
Form_subRegistros.FilterOn = True

[el código está en un botón, FILTRAR], entonces lo que quiero es que
ya que estan aplicadas las sentencias anteriores (cuando los datos ya
estan filtrados) si presiono un botón GUARDAR los datos sean guardados
en un archivo XLS... ¿Hay alguna forma de hacerlo directamente a
partir de lo que se esta viendo en el subFormulario, o se tiene que
hacer otra consulta atravez de un recordSet para poder mandar los
datos a un libro de EXCEL?

De antemano gracias por su atención!!!!
CarCar
2007-11-26 08:37:27 UTC
Permalink
Hola:

Una tercera opción que puse en su momento, en el foro del Búho:

Public Function GenExcelDeSubfActivo()
On Error Goto Err_GenExcelDeSubfActivo

Dim oAppExcel As Object
Dim oAppLibro As Object
Dim oAppHoja As Object

Dim ElControl As Control
Dim ElFormulario As Form
Dim X As Long

Set ElFormulario = Screen.ActiveForm

For X = 0 To ElFormulario.Controls.Count - 1
If ElFormulario.Controls(X).ControlType = 112 Then
DoCmd.GoToControl ElFormulario.Controls(X).Name
DoCmd.RunCommand acCmdSelectAllRecords
DoCmd.RunCommand acCmdCopy

Set oAppExcel = CreateObject("Excel.Application")
Set oAppLibro = oAppExcel.Workbooks.Add
Set oAppHoja = oAppLibro.Worksheets.Add

oAppHoja.Paste
oAppExcel.Visible = True
End If
Next X

Exit Function

Err_GenExcelDeSubfActivo:
If Err.Number = 2475 Then
MsgBox "No existe un formulario del que se puedan extraer
datos para un Excel.", vbExclamation
Exit Function
End If
MsgBox Err.Number & " " & Err.Description
End Function

Con Set ElFormulario = Screen.ActiveForm obtenemos el formulario
activo, después, en un bucle, vamos recorriendo todos los controles
que existen en él, los controles subformularios son el tipo de control
112, para cada uno de ellos generamos su hoja Excel.

Saludos,
CarCar (desde Tenerife, España)
MVP Access
Post by Wally
Que tal Grupo? con el siguiente problema, necesito enviar los datos de
un subFormulario de ACCESS a EXCEL, he visto muchos ejemplos de los
MVPs, muy buenos por cierto, pero no he visto algo similar a lo que
pretendo, que es los siguiente...
- por default mi subFormulario muestra todos los datos de una tabla.
- los datos pueden ser filtrados por controles que tengo en el mismo
Form_subRegistros.Filter = strFiltro
Form_subRegistros.FilterOn = True
[el código está en un botón, FILTRAR], entonces lo que quiero es que
ya que estan aplicadas las sentencias anteriores (cuando los datos ya
estan filtrados) si presiono un botón GUARDAR los datos sean guardados
en un archivo XLS... ¿Hay alguna forma de hacerlo directamente a
partir de lo que se esta viendo en el subFormulario, o se tiene que
hacer otra consulta atravez de un recordSet para poder mandar los
datos a un libro de EXCEL?
De antemano gracias por su atención!!!!
chiri
2007-11-26 10:05:44 UTC
Permalink
¡Anda! se puede copiar y pegar un formulario en hoja de datos, me gusta

"CarCar" <***@hotmail.com> escribi� en el mensaje news:38eba543-485f-49be-b6c5-***@w34g2000hsg.googlegroups.com...
Hola:

Una tercera opción que puse en su momento, en el foro del Búho:

Public Function GenExcelDeSubfActivo()
On Error Goto Err_GenExcelDeSubfActivo

Dim oAppExcel As Object
Dim oAppLibro As Object
Dim oAppHoja As Object

Dim ElControl As Control
Dim ElFormulario As Form
Dim X As Long

Set ElFormulario = Screen.ActiveForm

For X = 0 To ElFormulario.Controls.Count - 1
If ElFormulario.Controls(X).ControlType = 112 Then
DoCmd.GoToControl ElFormulario.Controls(X).Name
DoCmd.RunCommand acCmdSelectAllRecords
DoCmd.RunCommand acCmdCopy

Set oAppExcel = CreateObject("Excel.Application")
Set oAppLibro = oAppExcel.Workbooks.Add
Set oAppHoja = oAppLibro.Worksheets.Add

oAppHoja.Paste
oAppExcel.Visible = True
End If
Next X

Exit Function

Err_GenExcelDeSubfActivo:
If Err.Number = 2475 Then
MsgBox "No existe un formulario del que se puedan extraer
datos para un Excel.", vbExclamation
Exit Function
End If
MsgBox Err.Number & " " & Err.Description
End Function

Con Set ElFormulario = Screen.ActiveForm obtenemos el formulario
activo, después, en un bucle, vamos recorriendo todos los controles
que existen en él, los controles subformularios son el tipo de control
112, para cada uno de ellos generamos su hoja Excel.

Saludos,
CarCar (desde Tenerife, España)
MVP Access
Post by Wally
Que tal Grupo? con el siguiente problema, necesito enviar los datos de
un subFormulario de ACCESS a EXCEL, he visto muchos ejemplos de los
MVPs, muy buenos por cierto, pero no he visto algo similar a lo que
pretendo, que es los siguiente...
- por default mi subFormulario muestra todos los datos de una tabla.
- los datos pueden ser filtrados por controles que tengo en el mismo
Form_subRegistros.Filter = strFiltro
Form_subRegistros.FilterOn = True
[el código está en un botón, FILTRAR], entonces lo que quiero es que
ya que estan aplicadas las sentencias anteriores (cuando los datos ya
estan filtrados) si presiono un botón GUARDAR los datos sean guardados
en un archivo XLS... ¿Hay alguna forma de hacerlo directamente a
partir de lo que se esta viendo en el subFormulario, o se tiene que
hacer otra consulta atravez de un recordSet para poder mandar los
datos a un libro de EXCEL?
De antemano gracias por su atención!!!!
CarCar
2007-11-26 14:56:39 UTC
Permalink
Hola:

Me alegro. :-)

Saludos,
CarCar (desde Tenerife, España)
MVP Access


On 26 nov, 10:05, "chiri"
Post by chiri
¡Anda! se puede copiar y pegar un formulario en hoja de datos, me gusta
Wally
2007-11-27 19:29:15 UTC
Permalink
Gracias por las opciones que me ofrecen (Patxi Sanz, CarCar y Chiri)
las voy a estudiar a ver cual se adapta mejor a lo que pretendo... mil
gracias a todos...
Post by CarCar
Me alegro. :-)
Saludos,
CarCar (desde Tenerife, España)
MVP Access
On 26 nov, 10:05, "chiri"
¡Anda! se puede copiar y pegar un formulario en hoja de datos, me gusta- Ocultar texto de la cita -
- Mostrar texto de la cita -
Loading...