UniversoExcelForo

Respuesta a consultas.
Fecha de creación: 09.Abril.2012

Fundadores: Wibly,Tyno,Servando,Sakkar,Rosendo2,RMaximo,Railar,Mcoronel,Ioyama,Igtelo,Hugotron,Drochar,Dedos,Alberto,Adolfo

No se puede subir archivos al foro, favor de hacerlo en servidor externo (Dropbox, Drive...) y dejan link. "Sin archivo no hay respuestas"

Favor de leer "Todos los temas" Click aquí.

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje [Página 1 de 1.]

1 Conexión de Datos Excel a Exel el 10/07/18, 08:56 pm

SALAVERRINO


Buenas noches a los integrantes de este foro, en esta ocasión recurro a Uds para solicitar su ayuda con alguna macro para realizar una conexión de datos de un Excel a otro Excel sin necesidad de abrir el archivo origen utilizando Herramienta OLEBD y SQL u otras herramientas siendo solamente de lectura y evitar la famosa vinculación de datos externos y estar siempre actualizando el vínculo de datos, adjunto código

Código:
[size=18]Sub CONECTAR_BBDD_EXCEL()
'Definimos las variables
Dim i As Double
Dim dfecha As Variant
Dim Dataread As ADODB.Recordset, obSQL As String
Dim cnn As ADODB.Connection
Dim bBien As Boolean[/size]
[size=18]'Limpiamos información de la hoja "DATOS"
Actualizar = Application.CountA(Worksheets("IMPORT").Range("a:a"))
If Actualizar > 0 Then
Worksheets("IMPORT").Range("A1:U" & Actualizar).ClearContents
End If[/size]
[size=18]'Si se produce un error en el proceso de importación, la macro finalizará y mostrará mensaje
On Error GoTo ControlError
bBien = True[/size]
[size=18]'Iniciamos la conexión ADO
Set cnn = New ADODB.Connection
With cnn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.ConnectionString = "DATA SOURCE=" & ThisWorkbook.Path & "\EJEMPLO_IMPORTAR.xls"
.Properties("Extended Properties") = "Excel 12.0; HDR=YES"
.Open
End With[/size]
[size=18]'Indicamos los parámetros de la consulta SQL para importar la tabla completa
obSQL = "SELECT [DATOS$].*" & "FROM [DATOS$] "[/size]
[size=18]'Procedemos a grababar los datos de la consulta
Set Dataread = New ADODB.Recordset
With Dataread
.Source = obSQL
.ActiveConnection = cnn
.CursorLocation = adUseClient
.CursorType = adOpenForwardOnly
.LockType = adLockReadOnly
.Open
End With
'Grabamos los cabeceros de cada columna
For i = 0 To Dataread.Fields.Count - 1
If IsDate(Dataread.Fields(i).Name) Then
dfecha = CDate(Dataread.Fields(i).Name)
Else
dfecha = Dataread.Fields(i).Name
End If
Worksheets("IMPORT").Cells(1, i + 1) = dfecha
Next
'Copiamos los datos de la consulta
With Worksheets("IMPORT").Select
Worksheets("IMPORT").Cells(2, 1).CopyFromRecordset Dataread
End With[/size]
[size=18]With Cells
'Ajustamos ancho de columnas.
.EntireColumn.AutoFit
'Alineamos al centro los datos.
.HorizontalAlignment = xlLeft
End With[/size]
[size=18]Salir:
On Error Resume Next
'Si existe un error de conexión mostraremos el siguiente mensaje
If Not bBien Then
MsgBox "NO SE HA PODIDO ACTUALIZAR LA BASE DE DATOS, INTÉNTALO MÁS TARDE."
End If
Exit Sub[/size]
[size=18]'Salimos del proceso
ControlError:
bBien = False
Resume Salir
End Sub[/size]

Desde ya agradezco su apoyo y colaboración.

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.