miércoles, 7 de diciembre de 2016

Conectar una base de datos Sqlite con Excel Visual Basic

Para utilizar una base de datos creada con Sqlite desde Visual Basic (Excel) podemos seguir los siguientes pasos:

1. Instalar el odbcsqlite para VisualBasic, podemos descargarlo desde aqui (Para Windows).
2. Vamos a Microsoft Excel y abrimos el entorno de desarrollo para Visual Basic (Alt + F11), luego vamos a la pestaña Herramientas -> Referencias como se ve en la imagen:


3. Activamos la librería que se ve en la imagen:



Con esto es suficiente, ya podemos programar en Visual Basic (Excel) utilizando una base de datos sqlite

Aqui podemos ver un ejemplo:


Dim rs As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim scn As String
Dim s As String
scn
= "DRIVER=SQLite3 ODBC Driver;Database=C:\ruta_base_de_datos\myDB.sqlite;" _ & "LongNames=0;Timeout=1000;NoTXN=0;SyncPragma=NORMAL;StepAPI=0;" cn.ConnectionString = scn cn.Open cn.Execute "CREATE TABLE tbl2 (ID int, Stuff Text(50))" cn.Execute "INSERT INTO tbl2 (ID, Stuff) VALUES (2, 'def')" s = "SELECT * FROM tbl2" rs.Open s, cn Debug.Print rs.GetString

viernes, 2 de diciembre de 2016

Evento al salir de una celda de excel desde visual basic

Evento al salir de una celda de Excel desde Visual Basic


1. Abrir desde VisualBasic la hoja sobre la cual queremos realizar el control



2. Una forma de hacer esto es crear una variable global, para el ejemplo crearemos una llamada variable

Si hemos nombrado la celda que queremos controlar podemos hacerlo asi (supongamos que el nombre que le pusimos a la celda es nombreCelda)

Public variable As Boolean

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 
    If variable = True Then
        'nuestro codigo aqui
        largoInternoCambio = False        
    End If
 
    If Not Application.Intersect(Range("nombreCelda"), Range(Target.Address)) _
           Is Nothing Then
        variable = True
    End If

End Sub

En caso de no haber nombrado la celda puede hacerse asi:

Public variable As Boolean

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 
    If variable = True Then
        'nuestro codigo aqui
        largoInternoCambio = False        
    End If
 
    If Target.Address = "$E$3" Then
           Is Nothing Then
        variable = True
    End If

End Sub



Excel Visual Basic macro o evento al seleccionar una celda

Para realizar cualquier operación desde Visual Basic al seleccionar una celda cualquiera en Excel podemos realizar el siguiente procedimiento:

1. Abrir desde VisualBasic la hoja sobre la cual queremos realizar el control


En este caso por ejemplo vamos a controlar una celda de la Hoja1


2. Ahora controlamos el evento sobre la celda.

Si hemos nombrado la celda puede ser de esta manera (supongamos que el nombre que le pusimos a la celda es nombreCelda)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)      
 
    If Not Application.Intersect(Range("nombreCelda"), Range(Target.Address)) _
          'Nuestro codigo aqui      
    End If

End Sub

En caso de no haber nombrado la celda puede hacerse así:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)      
 
   If Target.Address = "$E$3" Then
          'Nuestro codigo aqui      
    End If

End Sub

Si no queremos controlar solo una celda sino un rango de celdas podemos hacerlo asi:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range

    Set KeyCells = Range("A1:C10")
 
    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then
        'Nuestro codigo aqui    
    End If
End Sub