Archivo de la etiqueta: Visual Basic

Borrar tabla en Visual Basic

[vb]
Function BorraTabla()
Dim DataBaseName, TableName As String
Dim DB As Database, t As TableDef
Dim TableExists As Boolean
DataBaseName = “c:\data\local.mdb”
TableName = “AYUDANTS”
On Error GoTo errorhandler
Set DB = Workspaces(0).OpenDatabase(DataBaseName)
On Error Resume Next
Set t = DB.TableDefs(TableName)
TableExists = Err.Number = 0
If TableExists Then
DB.Execute “Drop Table ” & TableName
End If
DB.Close
Exit Function
errorhandler:
Err.Raise Err.Number
Exit Function
End Function
[/vb]

Uso del registro en Visual Basic 6.

Todo programador sabe que es muy útil cargar y descargar parámetros de una aplicación en el registro de Windows.

Las operaciones mas frecuentes son las siguientes:

DeleteSetting appname, section[, key]

Elimina una clave de la sección de la aplicación o la entrada de la configuración del sistema del Registro.
AppName especifica el nombre de la aplicación, y section es el nombre de la sección que deseas borrar. Si la clave (key opcional) se usa, sólo esa clave será eliminada y no toda la sección.

GetAllSetting (appname, section)

Devuelve una lista de claves de configuración y sus valores de la aplicación desde el registro.
AppName es el nombre de la aplicación, y section el nombre de la sección.

GetSetting (appname, section, key[, default])

Devuelve una única clave de configuración de la aplicación y la sección de entrada en el registro del sistema.
AppName es el nombre de la aplicación, y el nombre de la la sección es section. Si no hay valor especificado en el registro entonces devuelve el valor por defecto (default). En caso de no especificar default y no existir la clave en el registro devolverá una cadena de longitud cero.

SaveSetting (appname, section, key, setting)

Salva al registro una seccion o clave y el valor de en el registro del sistema.
AppName es el nombre de la aplicación, section es el nombre de la sección, key es la clave que fijamos y settings el valor que le damos a esa clave.

Ejemplo de función para salvar al registro los datos de nuestra aplicación:

[vb]
Public Sub SetAppInfo(DbName As String)
If GetSetting(App.Title, “Control”, “Title”) = “” Then
Call SaveSetting(App.Title, “Control”, “Title”, App.Title)
Call SaveSetting(App.Title, “Control”, “Version”, App.Major & “.” & App.Minor & “.” & App.Revision)
Call SaveSetting(App.Title, “Install”, “Date”, Now())
Call SaveSetting(App.Title, “Install”, “AppPath”, App.Path)
Call SaveSetting(App.Title, “NCS”, “Copyright”, “(c)” & Year(Date))
Call SaveSetting(App.Title, “Data”, “DBName”, DbName)
Call SaveSetting(App.Title, “Data”, “DBPath”, App.Path & “\Data”)
End If
End Sub
[/vb]

Importar Excel a tabla de Access con Visual Basic.

Una simple rutina que sirve para importar un rango de filas y columnas de un fichero de Excel a una tabla en una base de datos de Access.

Había probado de multitud de maneras encontradas por internet, ejecutando una macro desde Excel y llamándola desde Visual, intentando crear una macro en access para llamarla desde visual y otros casos mas extraños aún.

La solución era mucho mas sencilla de lo que me esperaba, mediante la biblioteca de ADO.
[vb]
Call ImportadelExcel(fichero, App.Path & “\midb.mdb”, “ImpExcel”)
[/vb]
En el siguiente procedimiento las variables que necesita:

  • sFichero es el fichero Excel que quiero importar
  • DS es el DataSource o ruta a la base de datos que va a importar
  • sTablaDestino el nombre de la tabla que se creará con los datos del Excel

[vb]
Sub ImportadelExcel(sFichero As String, DS As String, sTablaDestino As String)

Dim sTablaOrigen As String
Dim sConnect As String, sSQL As String
Dim cnnActiva As ADODB.Connection

‘ Establezco la conexión con la base de datos de Access,
‘ la cual será la base de datos “Activa”
Set cnnActiva = New ADODB.Connection
cnnActiva.Open “Provider=Microsoft.Jet.OLEDB.4.0;” & _
“Data Source=” & DS & “;”

‘Rango que quiero importar dela hoja Sheet1
sTablaOrigen = “[Sheet1$A1:C1500]”

‘ Importo la tabla a la base de datos “Activa”
sConnect = “‘” & sFichero & “‘ ‘Excel 8.0;HDR=Yes;’”

sSQL = “SELECT * INTO ” & sTablaDestino & ” FROM ” & sTablaOrigen & ” IN ” & sConnect
cnnActiva.Execute sSQL

‘ Cierro la conexión
cnnActiva.Close
End Sub
[/vb]

Crear y ejecutar macro de Excel desde Visual Basic.

A veces nos es muy tediosa la forma de preparar determinada información para ser explotada entre las aplicaciones Excel y otros programas o bases de datos.

Hoy voy a dejar aqui plasmado para quien lo necesite y para mi mismo si en alguna otra ocasión necesito tirar de ello de nuevo, la forma de crear desde Visual Basic una Macro de Excel y ejecutarla después.

Sin duda podemos encontrar por la red multitud de formas de ejecutar una macro ya existente en un fichero de Excel desde visual Basic pero ¿que ocurre si la macro la necesitamos ejecutar no está en el libro de Excel y debemos tratar multitud de ficheros?

La única forma es grabar la macro en el fichero antes de ejecutarla y todo ello desde Visual Basic. A continuación os expongo el procedimiento que yo mismo he utilizado.

Primero he creado la macro necesaria en Excel asegurándome del buen funcionamiento de la misma. Hay que tener claro que si cometemos un error, este será trasladado a todos los ficheros que tratemos.

Cuando ya la tenemos la forma de utilizarla en un procedimiento sería la siguiente:

[vb]
Private Sub PreparaExcel(sArchivo As String)
‘ Arrancamos Excel
Dim xlapp As Object ‘Aplicacion de Excel
Set xlapp = CreateObject(“Excel.Application”)

‘ La hacemos visible, si comentamos esta linea el excel no se verá
xlapp.Visible = True

‘ Añadimos una hoja de trabajo
Dim xlbook As Object ‘ Hoja de trabajo de Excel
Set xlbook = xlapp.Workbooks.Open(sArchivo)

‘ Ahora añadimos un modulo
Dim xlmodule As Object ‘VBComponent
Set xlmodule = xlbook.VBProject.VBComponents.Add(1)
Msgbox “Creando Macro…”
‘ Añade la macro al nuevo módulo
Dim strCode As String
strCode = _
“sub MiMacro()” & vbCr & _
“Cells.Select” & vbCr & “Selection.UnMerge” & vbCr & _
“Rows(“”1:2″”).Select” & vbCr & _
“Range(“”A2″”).Activate” & vbCr & _
“Selection.Delete Shift:=xlUp” & vbCr & _
“Range(“”A1:C2″”).Select” & vbCr & “Selection.ClearContents” & vbCr & _
“Columns(“”B:B”").Select” & vbCr & _
“Selection.Delete Shift:=xlToLeft” & vbCr & _
“Columns(“”C:J”").Select” & vbCr & _
“Selection.Delete Shift:=xlToLeft” & vbCr & _
“Columns(“”D:Q”").Select” & vbCr & _
“Selection.Delete Shift:=xlToLeft” & vbCr & _
“ActiveWindow.ScrollColumn = 1″ & vbCr & _
“ActiveWindow.ScrollColumn = 2″ & vbCr & _
“ActiveWindow.ScrollColumn = 1″ & vbCr & _
“Range(“”B1″”).Select” & vbCr & _
“Range(“”B1:B1500″”).Select” & vbCr & _
“Selection.Cut Destination:=Range(“”B2:B1501″”)” & vbCr & _
“Columns(“”A:A”").ColumnWidth = 47.86″ & vbCr & _
“Columns(“”B:B”").ColumnWidth = 48.57″ & vbCr & _
“Columns(“”C:C”").ColumnWidth = 12″ & vbCr & _

“ActiveWorkbook.Save” & vbCr & _
“end sub”
xlmodule.CodeModule.AddFromString strCode

‘ Ejecutamos la macro
Msgbox “Ejecutando Macro…”
xlapp.Run “MiMacro”

‘ Acuerdate de liberar el módulo
Set xlmodule = Nothing

‘ Salvamos el fichero y cerramos el Excel
xlbook.Saved = True
xlapp.Quit

End Sub
[/vb]

A disfrutarla con salud que a mi me ha costado un poco llegar a ella.

Funciones para comprobar caracteres en cadenas. Visual Basic.

Las siguientes funciones son para comprobar las cadenas de texto o numéricas en Visual Basic 6.

Primera función. Devuelve “True” si todos los caracteres de una cadena son alfabéticos, es decir, si son todos letras. Si no lo son o si la cadena de texto es de longitud 0 devuelve “False”.
[vb]
Public Function IsAlphaBetical(TestString As String) As Boolean
Dim sTemp As String
Dim iLen As Integer
Dim iCtr As Integer
Dim sChar As String

sTemp = TestString
iLen = Len(sTemp)
If iLen > 0 Then
For iCtr = 1 To iLen
sChar = Mid(sTemp, iCtr, 1)
If Not sChar Like “[A-Za-z]” Then Exit Function
Next

IsAlphaBetical = True
End If
End Function
[/vb]

Segunda función. Devuelve “True” si todos los caracteres de una cadena son alfanumericos, es decir, si los elementos que componen la cadena son números o letras. Si no lo son o si la cadena de texto es de longitud 0 devuelve “False”.
[vb]
Public Function IsAlphaNumeric(TestString As String) As Boolean

Dim sTemp As String
Dim iLen As Integer
Dim iCtr As Integer
Dim sChar As String

sTemp = TestString
iLen = Len(sTemp)
If iLen > 0 Then
For iCtr = 1 To iLen
sChar = Mid(sTemp, iCtr, 1)
If Not sChar Like “[0-9A-Za-z]” Then Exit Function
Next

IsAlphaNumeric = True
End If

End Function
[/vb]
Tercera función. Devuelve “True” si todos los caracteres de una cadena son numéricos, es decir, si los elementos que componen la cadena son números. Si no lo son o si la cadena de texto es de longitud 0 devuelve “False”. Esta función se diferencia de IsNumeric() en que Isnumeric(30.45) devuelve “True” mientras que en esta función devolvería “False”.

[vb]
Public Function IsNumericOnly(TestString As String) As Boolean
Dim sTemp As String
Dim iLen As Integer
Dim iCtr As Integer
Dim sChar As String

sTemp = TestString
iLen = Len(sTemp)
If iLen > 0 Then
For iCtr = 1 To iLen
sChar = Mid(sTemp, iCtr, 1)
If Not sChar Like “[0-9]” Then Exit Function
Next

IsNumericOnly = True
End If

End Function
[/vb]