Por lo cual no se puede mostrar ninguna barra de herramientas, menudo problema, porque me gustaría enviar ese informe a Word, con la barra de herramientas es muy fácil, pero sin el, es imposible, porque no me deja, ni siquiera, pulsar el botón derecho del ratón. ¿Hay alguna forma de enviar ese informe a Word?
Si abres la base de datos presionando mayúsculas al hacer doble click sobre ella, te dejara hacer lo que quieras en la base (modificarla) Modifica el informe para que puedas acceder a los menús de exportar y listo.
Sí, muchas gracias. Pero lo que quiero, es que esta base de datos se lo dejo a personas que no tienen ni idea y quería dejarle un botón o mejor dicho, utilizar unas teclas, como CTRL+MAY+W, para enviarlo a Word. Porque si les digo que pulse la tecla May. allá va la base de datos, sabe Dios que me hacen. Además lo tengo protegido con contraseña, para que no se les ocurra pulsar la tecla May. Me gustaría saber como se puede crear, pulsando las teclas CTRL+MAY+W que exporte el informe a Word y allí que lo modifiquen como les da la gana y si lo hacen mal, aún lo tienen en la base de datos sin ningún problema. Un saludo
Entonces se pone más difícil la cosa. Tienes que hacerlo sin pasar por el informe, exportando los datos desde el formulario. Te pongo un ejemplo: ******************************************************************** Option Explicit Private Sub Command1_Click() Call Exportar("c:\datos.doc", _ "select * Form Tabla", _ "c:\base.mdb") End Sub Private Sub Exportar(PathDesino As String, _ Sql As String, _ PathBd As String) On Error GoTo ErrSub Dim Word As New Word.Application Dim Doc As Word.Document Dim Tabla As Word.Table Dim f As ADODB.Field, Col As Integer Dim i As Integer, dato As Variant ' si la bd está abierta .. la cierra If cnn.State = adStateOpen Then cnn.Close End If ' abre la conexión cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data " & _ "Source=" & txtDb.Text ' Abre el recordset With rs .CursorLocation = adUseClient .Open Sql, cnn, adOpenStatic, adLockReadOnly End With ' progressbar With ProgressBar1 .Max = rs.RecordCount .Value = 0 End With Screen.MousePointer = vbHourglass ' agrega la tabla al docucumento, las filas y columnas Set Doc = Word.Documents.Add Set Tabla = Doc.Tables.Add(Word.Selection.Range, _ rs.RecordCount + 1, _ rs.Fields.Count) 'agrega los Campos Col = 1 For Each f In rs.Fields Tabla.Cell(1, Col).Range.Font.Bold = True dato = f.Name Tabla.Cell(1, Col).Range.Text = dato Col = Col + 1 Next ' los Datos rs.MoveFirst For i = 1 To rs.RecordCount ProgressBar1.Value = i Col = 1 For Each f In rs.Fields dato = rs.Fields(f.Name) Tabla.Cell(i + 1, Col).Range.Text = dato Col = Col + 1 Next rs.MoveNext ' siguiente Next ' fin ProgressBar1.Value = 0 Screen.MousePointer = vbNormal MsgBox "Listo", vbInformation ' guarda el documento y lo cierra Doc.SaveAs PathDesino Set Tabla = Nothing Set Doc = Nothing Word.Quit Set Word = Nothing ' cierra el recordset y la bd rs.Close Set rs = Nothing cnn.Close Set cnn = Nothing 'Rutina de Error '''''''''''''''''''' Exit Sub ErrSub: ' por si el dato es un Null If Err.Number = 94 Then Err.Clear dato = vbNullString Resume Next Else MsgBox Err.Description Screen.MousePointer = vbNormal End If End Sub Private Sub Form_Load() Command1.Caption = "exportar" End Sub ******************************************************************** Fuente del ejemplo: http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/404-recordset-a-word.htm
Muchas gracias otra vez. Pero las personas me piden que cuando están viendo la vista previa del informe, que quieren cambiar esto por aquello, entonces mi intención es enviárselo ese informe, tal como está, a Word y que ellos lo varíen, como les da la gana. Si lo están viendo en formulario no saben como va a salir en el informe. Con el botón Publicar en Word, es fácil y ya está. Lo que me gustaría saber es como al pulsar unas teclas lo ejecuta, por ejemplo, si estamos en la vista preliminar, pulsamos Ctrl+P lo manda a la impresora, por eso, me gustaría saber como puedo activar con unas teclas, para que lo mande a Word. Un saludo