Modificar Libro de Excel desde un formulario

Solo consultas sobre Funciones y Fórmulas Excel.

Reglas del Foro
1. Antes de hacer tu pregunta intenta con el buscador de este foro (muchas preguntas ya fueron respondidas antes!)
2. Si haces una nueva pregunta, es muy recomendable que adjuntes el ejemplo Excel para poder comprenderla mejor!
3. Realiza tu pregunta de forma clara, explicando bien cada paso de lo que haces y tendrás más probabilidad de respuesta!
Compartir en:
     

Modificar Libro de Excel desde un formulario

Notapor mike_calor » 12 Mar 2010 22:35

Hola buen dia a todos:

En el siguiente archivo .rar tengo 2 libros de excel.

Lo que me gustaria saber es como modificar el archivo ORDEN.xls desde el formulario que existe en el archivo BASE.xls

En si en el formulario hay 3 Textbox y 1 CommandButton

me gustaria que al momento de darles valores y darle click en el boton, me actualize el libro ORDEN en las celdas E:4, E:6 y E:8, con los valores de los Textbox. y al mismo tiempo ejecute un comando de imprimir dicho libro.

gracias
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
mike_calor
Miembro Frecuente
Miembro Frecuente
 
Registrado: 18 Nov 2004 11:51
Ubicación: Camp

Re: Modificar Libro de Excel desde un formulario

Notapor jbjimenez » 12 Mar 2010 23:14

Con el grabador de macro y unos "retoques" lo sacas facil ... si tienes dudas en el camino nos cuentas !! 8)
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
jbjimenez
Miembro Frecuente
Miembro Frecuente
 
Registrado: 09 Mar 2010 23:49
Ubicación: Medellín, Colombia

Re: Modificar Libro de Excel desde un formulario

Notapor mike_calor » 13 Mar 2010 18:28

Gracias por la respuesta pero la idea es que lo haga el formulario ya que el formulario original tiene un listbox y de ahi selecciono x registros.

Por ahi antoni me echo la mano en sustituir variables en un archivo de word, en si el procedimiento buscaba en el archivo de word la variable y la sustituia con el valor ya sea del listbox o del textbox.

variables se definian asi en el archivo de word &LINEA. Pero como repito esto era en un archivo de word y utilizaba este codigo

Private Sub CREAR_CARTA()
Set Obj_Word = CreateObject("Word.Application")
Obj_Word.Visible = False
Obj_Word.DOCUMENTS.Open Filename:=DOC.List(DOC.ListIndex, 0)
Obj_Word.ActiveDocument.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:="1"
Obj_Word.Selection.Find.ClearFormatting
Obj_Word.Selection.Find.Replacement.ClearFormatting
'*********************************************************** LINEA1 *********************
With Obj_Word.Selection.Find
.Text = "&LINEA"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Obj_Word.Selection.Find.Execute
With Obj_Word.Selection
For x = 0 To LIS.ListCount - 1
If LIS.Selected(x) = True Then
LINEA = ""
For z = 0 To 0
LINEA = LINEA & ActiveSheet.Cells((z) + (x + 2), 1) & vbTab
Next z
.ParagraphFormat.Alignment = 0
.TypeText Text:=LINEA
.TypeParagraph
End If
Next x
End With


quisiera hacer lo mismo pero sustituyendo variables en un archivo de excel.

Gracias. Alguna ayuda???
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
mike_calor
Miembro Frecuente
Miembro Frecuente
 
Registrado: 18 Nov 2004 11:51
Ubicación: Camp

Re: Modificar Libro de Excel desde un formulario

Notapor Antoni » 14 Mar 2010 04:54

Hola de nuevo Mike:

Coloca el siguiente código en el formulario.
Código: Seleccionar todo
Dim x As Worksheet

Private Sub UserForm_Initialize()
Workbooks.Open Filename:=ThisWorkbook.Path & "\ORDEN.xls"
Set x = Workbooks(2).Worksheets("Hoja1")
End Sub

Private Sub CommandButton1_Click()
x.Cells(4, 5) = TextBox1
x.Cells(6, 5) = TextBox2
x.Cells(8, 5) = TextBox3
End Sub

Private Sub UserForm_Terminate()
Workbooks(2).Close
End Sub

Solo funcionará si no hay ningún otro libro abierto.

Fijate en el código, hemos definido 3 eventos:

Inicializar formulario(Se produce antes de mostrar el formulario)
Abrimos el libro ORDEN y asignamos la "Hoja1" a la variable "x", observa
Set x = Workbooks(2).Worksheets("Hoja1"), ese "2" es el número de libro abierto.
Excel asigna un correlativo desde 1 a todos los libro en el momento de abrirlos, de ahí la importancia de no tener ningún libro abierto en el momento de abrir el libro "HOLA".

Click en el botón
Asigna los Textbox1,2 y 3 a las celdas de la columna 5("E") filas 2,4 y 6.

Terminar formulario(Se produce inmediatamente antes de cerrar el formulario)
Cerramos el libro ORDEN. Si lo hemos modificado, nos preguntará si queremos guardarlo.

Conclusión principal
Para poder modificar un libro desde otro a través de un formulario, debemos abrirlo primero.

También, y esto es una opinión personal, es conveniente separar el software(Macros, módulos y formularios) de los datos. Esto permite tener una única versión de nuestras aplicaciones y de aligerar el tamaño de nuestros archivos de datos, por lo que, el hecho de tener el formulario en un libro ("HOLA") y los datos en otro ("ORDEN"), me parece una idea excelente.

Hasta la próxima

Salu2

Antoni
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Antoni
Miembro Frecuente
Miembro Frecuente
 
Registrado: 22 Dic 2009 04:58
Ubicación: GALICIA (ESPAÑA)

Re: Modificar Libro de Excel desde un formulario

Notapor galileogali » 14 Mar 2010 09:29

Dim x As Worksheet

Private Sub UserForm_Initialize()
Workbooks.Open Filename:=ThisWorkbook.Path & "\ORDEN.xls"
Set x = Workbooks(2).Worksheets("Hoja1")
End Sub

Private Sub CommandButton1_Click()
x.Cells(4, 5) = TextBox1
x.Cells(6, 5) = TextBox2
x.Cells(8, 5) = TextBox3
End Sub

Private Sub UserForm_Terminate()
x.Parent.Close
End Sub

Estoy codificando sin testeos, pero creo que así se resuelve el tema de otrso lIbros abiertos

GALILEOGALI

http://excelgali.mejorforo.net/
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
galileogali
Moderator
Moderator
 
Registrado: 07 Ene 2005 22:46
Ubicación: QUIROGA (ba), ARGENTINA

Re: Modificar Libro de Excel desde un formulario

Notapor Antoni » 14 Mar 2010 16:24

Gracias Gali:

Yo normalmente, utilizo una función para determinar el nº de libro, pero para no complicarle la vida a Mike, he preferido suponer que no hay mas libros abierto.

De todas maneras, ahí va la función.

Código: Seleccionar todo
Function LIBRO(NOMBRE As Variant)
LIBRO = 0
For X = 1 To Workbooks.Count
   If UCase(Workbooks(X).Name) = UCase(NOMBRE) Then
      LIBRO = X
      Exit Function
   End If
Next X
End Function


Hasta otra

Salu2 a to2

Antoni
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Antoni
Miembro Frecuente
Miembro Frecuente
 
Registrado: 22 Dic 2009 04:58
Ubicación: GALICIA (ESPAÑA)

Re: Modificar Libro de Excel desde un formulario

Notapor mike_calor » 14 Mar 2010 20:47

Esta muy bien la funcion, de cualquier forma tratare de no tener mas de 2 libros abiertos. Gracia1!!

Anexo adjunto como quedo, pero no hayo como poner el el libro "ORDEN" los valores que yo escoja del LIS.list y se alojen a partir de la celda ("B14"). En el archivo de word se hace con un for, pero todos los datos seleccionados reemplazaban a la variable &LINEA.

Como hacerle para que los datos que yo escoja se alojen en esas celdas????

Gracias
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
mike_calor
Miembro Frecuente
Miembro Frecuente
 
Registrado: 18 Nov 2004 11:51
Ubicación: Camp

Re: Modificar Libro de Excel desde un formulario

Notapor Antoni » 15 Mar 2010 05:32

Hola Mike:

Sustituye el procedimiento CommandButton1_Click por este otro:

Código: Seleccionar todo
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Workbooks.Open Filename:=ThisWorkbook.Path & "\ORDEN.xls"
Set x = Workbooks(2).Worksheets("ORDEN")
x.Cells(3, 2) = Clave.Value
x.Cells(4, 2) = Nombre.Value
x.Cells(5, 2) = Direccion.Value

'Líneas añadidas
'-------------------
x.Activate 'activa la hoja ORDEN
x.Range(Cells(14, 2), Cells(28, 5)).ClearContents 'Borra el contenido
                                                  'del área a rellenar
z = 14
For y = 0 To LIS.ListCount - 1 'Recorre la lista
   If LIS.Selected(y) = True Then 'Comprueba si el elemento de la lista
      x.Cells(z, 2) = LIS.List(y, 0) 'está seleccionado
      x.Cells(z, 4) = LIS.List(y, 1)
      x.Cells(z, 5) = LIS.List(y, 2)
      z = z + 1
   End If
Next y
Workbooks(2).Save 'Guarda los cambios
Workbooks(2).Close 'Cierra el libro
End Sub


Fíjate en la manera de recorrer la lista. Los elementos seleccionados tiene la propiedad
.Selected = True.

Salu2

Antoni
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Antoni
Miembro Frecuente
Miembro Frecuente
 
Registrado: 22 Dic 2009 04:58
Ubicación: GALICIA (ESPAÑA)

Re: Modificar Libro de Excel desde un formulario

Notapor mike_calor » 18 Mar 2010 21:41

MUCHAS GRACIAS POR LA AYUDA, ME HA SERVIDO A LA PERFECCION

GRACIAS POR TUS COLABORACIONES!!!


SALUDOS
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
mike_calor
Miembro Frecuente
Miembro Frecuente
 
Registrado: 18 Nov 2004 11:51
Ubicación: Camp


Compartir en:
     

  • Anuncio
Manual Excel avanzado

Volver a Funciones y Fórmulas

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado