Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Excel con Vb6

Estas en el tema de Excel con Vb6 en el foro de Visual Basic clásico en Foros del Web. Hola a todos: La verdad se muy poco sobre visual Basic he trabajado con el editor de visual Basic de excel 2003 hace como 7 ...

  #1 (permalink)  
Antiguo 11/08/2008, 10:22
 
Fecha de Ingreso: mayo-2008
Mensajes: 21
Antigüedad: 16 años
Puntos: 0
Exclamación Excel con Vb6

Hola a todos:

La verdad se muy poco sobre visual Basic he trabajado con el editor de visual Basic de excel 2003 hace como 7 años y lo se manejar.No a la perfeccion pero me defiendo. Bueno la verdad es quisiera aprender a manejar visual 6 pero con datos en excel. Trate de averiguar si se podian ejecutar macros desde visual 6 pero parece que no se puede por que no encontre respuesta alguna. Ya hice la conexion a la base de datos de ecxel utilizando un control Data pero la verdad no me gusto mucho. Alguien me puede explicar como se puede conectar de otra forma a una hoja de calculo y manejar los datos lo mas parecido al visual 6 si es posible.

Gracias por su antencion y colaboracion

Feliz dia
  #2 (permalink)  
Antiguo 11/08/2008, 10:26
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Excel con Vb6

Puedes hacer una referencia a la aplicación Excel.
Código PHP:
Dim xlsApp As Object
Dim xlsBook 
As Object
Set xlsApp 
CreateObject("Excel.Application")
Set xlsBook xlsApp.WorkBooks.Open("C:\Book.xls"
A partir de ahí podrás manejar el libro y la aplicación de forma fácil (como si estuvieras en VBA).
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 11/08/2008, 12:11
 
Fecha de Ingreso: mayo-2008
Mensajes: 21
Antigüedad: 16 años
Puntos: 0
Respuesta: Excel con Vb6

Gracias por tu colaboracion la verdad no he podido probar. Disculpa si hago otra pregunta quisiera saber como hacer referencia a una hoja y un rango desde Visual 6

Gracias
  #4 (permalink)  
Antiguo 11/08/2008, 12:13
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Excel con Vb6

Siguiendo el mismo ejemplo que puse anteriormente, para hacer referencia a la hoja sería:
Código PHP:
Dim xlsSheet As Object
Set xlsSheet 
xlsBook.WorkSheets("Hoja1")
xlsSheet.Range("A1") = "Texto en la primera celda" 
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 11/08/2008, 12:31
 
Fecha de Ingreso: mayo-2008
Mensajes: 21
Antigüedad: 16 años
Puntos: 0
Respuesta: Excel con Vb6

Mil Gracias lo voy a probar y cualquier cosa te cuento
  #6 (permalink)  
Antiguo 14/08/2008, 09:54
 
Fecha de Ingreso: mayo-2008
Mensajes: 21
Antigüedad: 16 años
Puntos: 0
Respuesta: Excel con Vb6

Gracias amigo por tu ayuda me fue de mucha utilidad pero ahora tengo otro problema. Necesito ingresar un nuevo registro en una hoja de calculo yo lo hacia de esta forma en excel
Sheets("hoja1").Select
Range("A1").Select
Selection.End(xlDown).Select
Application.Goto Reference:="R[+1]c"
Aqui selecciono la ultima celda vacia y genero el ultimo registro
Me gustaria que por favor me explicaras si hay una forma de hacer algo similar desde VB6

Gracias
  #7 (permalink)  
Antiguo 14/08/2008, 10:04
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Excel con Vb6

Sí, siguiendo con el ejemplo sería:
Código PHP:
xlsBook.Sheets("hoja1").Range("A1").End(xlDown).Select
xlsApp
.Goto Reference:="R[+1]c" 
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 14/08/2008, 10:50
 
Fecha de Ingreso: mayo-2008
Mensajes: 21
Antigüedad: 16 años
Puntos: 0
Respuesta: Excel con Vb6

Gracias por tu ayuda. Que pena molestarte con tanta pregunta. Como se hace referencia a la celda activa en Excel es activecell pero no me funciona en vB6
  #9 (permalink)  
Antiguo 14/08/2008, 11:02
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: Excel con Vb6

Código PHP:
xlsApp.ActiveCell 
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #10 (permalink)  
Antiguo 19/08/2008, 08:05
 
Fecha de Ingreso: mayo-2008
Mensajes: 21
Antigüedad: 16 años
Puntos: 0
Respuesta: Excel con Vb6

Amigo que pena molestarte tanto con el tema pero esta linea del codigo no me funciona:

xlsBook.Sheets("hoja1").Range("A1").End(xlDown).Se lect

Podrias ayudarme por favor.


Gracias
  #11 (permalink)  
Antiguo 19/08/2008, 08:12
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Pregunta Respuesta: Excel con Vb6

¿Te da algún error o algo así?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #12 (permalink)  
Antiguo 19/08/2008, 08:21
 
Fecha de Ingreso: mayo-2008
Mensajes: 21
Antigüedad: 16 años
Puntos: 0
Respuesta: Excel con Vb6

Si dice que no se reconoce el procedimiento su o funcion. Bueno algo asi es que no tengo el proyecto aqui pero si da un error
  #13 (permalink)  
Antiguo 19/08/2008, 08:30
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Excel con Vb6

Lo siento, es que había olvidado que había una constante de Excel en el medio. Prueba así:
Código PHP:
xlsBook.Sheets("Hoja1").Range("A1").End(-4121).Select 
Aunque no debes olvidar de definir el xlsBook.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #14 (permalink)  
Antiguo 19/08/2008, 09:20
 
Fecha de Ingreso: mayo-2008
Mensajes: 21
Antigüedad: 16 años
Puntos: 0
Respuesta: Excel con Vb6

Amigo otra preguntacada ves que yo nececite que un control trabaje con el libro de excel debo definirlo como objeto nuevamente?
  #15 (permalink)  
Antiguo 19/08/2008, 09:39
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Excel con Vb6

Lo que yo suelo hacer si voy a necesitar varias veces la aplicación Excel o el Libro, es definirlo como variable con alcance público al iniciar la aplicación y destruirlo al salir de ella.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #16 (permalink)  
Antiguo 19/08/2008, 10:06
 
Fecha de Ingreso: mayo-2008
Mensajes: 21
Antigüedad: 16 años
Puntos: 0
Respuesta: Excel con Vb6

Es decir:

Public xlsBook As Object

Y como la destruyo???
  #17 (permalink)  
Antiguo 19/08/2008, 10:16
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: Excel con Vb6

Sí, así puedes hacerlo, pero si vas a usarlo dentro de varias ventanas la declaración debe ir en un módulo.

Cuando termines de usar el objeto lo destruyes así:
Código PHP:
Set xlsBook Nothing 
Aunque lo principal que hay que destruir es el xlsApp.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #18 (permalink)  
Antiguo 19/08/2008, 10:21
 
Fecha de Ingreso: mayo-2008
Mensajes: 21
Antigüedad: 16 años
Puntos: 0
Respuesta: Excel con Vb6

Ok muchas gracias por tu colaboracion lo voy a probar
  #19 (permalink)  
Antiguo 25/08/2008, 09:41
 
Fecha de Ingreso: mayo-2008
Mensajes: 21
Antigüedad: 16 años
Puntos: 0
Respuesta: Excel con Vb6

Estimado David muchas gracias por tu colaboracion me fue muy util. Ahora quisiera hacerte otra consulta espero no molestarte. Pero quisiera que por favor me ayudaras con esto. lo que quiero es saber si el siguiente codigo se puede aplicar VB6 este codigo se usa en ecxel para buscar valores en una hoja de calculo. ¿Sera posible?

Cells.Find(What:=Range("a1"), After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate


Gracias
  #20 (permalink)  
Antiguo 25/08/2008, 09:51
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: Excel con Vb6

Sería algo como esto:
Código:
xlsApp.Cells.Find(What:=xlsApp.Range("A1"), After:=xlsApp.ActiveCell, LookIn:=-4123, LookAt:= _
2, SearchOrder:=1, SearchDirection:=1, MatchCase:=False _
, SearchFormat:=False).Activate
Ahora, para que puedas aprender cómo hacerlo, te explico el porqué de las modificaciones. El código original era este:
Código:
Cells.Find(What:=Range("a1"), After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
        , SearchFormat:=False).Activate
Pero en Visual Basic no tenemos las constantes xlFormulas, xlPart, xlByRows y xlNext. Son constantes de Excel, así que lo que hice fue obtener el valor de esas constantes y colocarlas directamente en el código. Otra cosa, ActiveCell, Range y Cells también son variables en Excel pertenecientes a Application. Por eso, para pasarlas a Visual Basic antecedemos su declaración por el objeto que tenemos como aplicación Excel (xlsApp).
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #21 (permalink)  
Antiguo 25/08/2008, 10:12
 
Fecha de Ingreso: mayo-2008
Mensajes: 21
Antigüedad: 16 años
Puntos: 0
Respuesta: Excel con Vb6

Ok amigo ya entendi muchas gracias por tu ayuda ahora espero poder defenderme solo. Si se me presenta algun problema espero poder contar con tu ayuda.
  #22 (permalink)  
Antiguo 02/09/2008, 07:47
 
Fecha de Ingreso: mayo-2008
Mensajes: 21
Antigüedad: 16 años
Puntos: 0
Respuesta: Excel con Vb6

Hola como estas, me fue muy util tu explicacion y me ayudo muchisimo te lo agradezco mucho, pero ahora tengo un pequeño problema y espero que por favor me puedas ayudar. lo que sucede es que quiero insertar en un formulario un listbox y que me tome los datos de un rango de Excel, la verdad lo intente de muchas formas pero no lo logre. Me podrias ayudar gracias
  #23 (permalink)  
Antiguo 02/09/2008, 07:49
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Excel con Vb6

Puedes hacer un For Each que recorra todas las celdas del Rango y añada al ListBox con AddItem.
Código PHP:
For Each Celda In xlsSheet.Range("A1:A8"
En ese caso obtendrás en Celda a cada paso del bucle una celda del rango y podrás ir añadiéndolos al ListBox.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #24 (permalink)  
Antiguo 02/09/2008, 08:31
 
Fecha de Ingreso: mayo-2008
Mensajes: 21
Antigüedad: 16 años
Puntos: 0
Respuesta: Excel con Vb6

Y si tengo mas de una columna ¿Fuciona igual? Seria asi:

For Each Celda In xlsSheet.Range("A1:C8")
  #25 (permalink)  
Antiguo 02/09/2008, 08:37
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: Excel con Vb6

Sí, igual funciona, exactamente como pusiste.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #26 (permalink)  
Antiguo 02/09/2008, 08:45
 
Fecha de Ingreso: mayo-2008
Mensajes: 21
Antigüedad: 16 años
Puntos: 0
Respuesta: Excel con Vb6

Ok gracias
  #27 (permalink)  
Antiguo 02/09/2008, 14:05
 
Fecha de Ingreso: mayo-2008
Mensajes: 21
Antigüedad: 16 años
Puntos: 0
Respuesta: Excel con Vb6

Hola amigo gracias ya lo hice y es perfecto. lo que pas es que yo quiero que el listbox me presente los datos en tres columnas es decir lo de la colmna A en una colomna en el listbox lo de la colmna B en una colomna Siguiente y asi. La instruccion que me diste funciono pero me coloca todos los datos en una sola columna. No se si lo hice mal o que. espero que por favor me puedas ayudar . Gracias
  #28 (permalink)  
Antiguo 02/09/2008, 14:18
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Excel con Vb6

Primero, el ListBox de VB6 no permite columnas, lo que puedes es tener 3 ListBox.

Y para cargar los datos tienes dos opciones, o recorrer los rangos de cada columna por separado, o en el For Each comparar las columnas con Celda.Column.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #29 (permalink)  
Antiguo 02/09/2008, 14:28
 
Fecha de Ingreso: mayo-2008
Mensajes: 21
Antigüedad: 16 años
Puntos: 0
Respuesta: Excel con Vb6

upsss gracias amigo ya me estaba matando la cabeza. Pero tu no me puedes dar otra idea de como hacer esto pues la verdad la idea de tres listbox no me agrada mucho. Si tienes alguna idea que me pueda servir te lo agradeceria mucho.
  #30 (permalink)  
Antiguo 02/09/2008, 14:29
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Excel con Vb6

Con un ListView .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:26.