vincular vinculacion una traer para otro otra libro jalar informacion importar hojas hoja enlazar desde definicion datos consolidar como alimentar excel vba ms-access access-vba

excel - una - vinculacion de datos definicion



Permitir al usuario de Access seleccionar la hoja de trabajo de Excel para vincular (1)

No veo por qué necesita almacenar los nombres de las hojas en una matriz. Puede almacenarlos como una lista en una variable de cadena. Luego, podría asignar esa cadena como la propiedad RowSource de un cuadro combinado que le permite al usuario seleccionar una de las hojas disponibles.

Dim strSheets As String '' adapt your existing code to use this ... For Each xlSheet In xlBook.Worksheets ''Debug.Print xlSheet.Name strSheets = strSheets & ";" & xlSheet.Name Next xlSheet '' discard leading semi-colon strSheets = Mid(strSheets, 2)

Después de haber recopilado los nombres de las hojas, aplíquelos como fuente de cuadro combinado.

'' ComboName should have Value List as Row Source Type Me.ComboName.RowSource = strSheets

Así que estoy usando VBA en Access para crear tablas vinculadas entre Excel y Access. Bastante simple y como algunos recursos en línea me guiaron, decidí utilizar el comando TransferSpreadsheet . Así que ejecuté un código para probar si tenía la sintaxis correcta y obtuve esto

DoCmd.TransferSpreadsheet acLink, acSpreadsheetTypeExcel12, _ "Link Name", "File Path", True, "Sheet Name!"

Eso funcionó perfectamente, pero quería automatizarlo para que alguien que no entiende cómo codificar pueda usar la función. Entonces, para la ruta del archivo configuro un cuadro de diálogo de archivo para que el usuario pueda seleccionar el archivo de Excel. Otra vez funcionó muy bien.

Entonces, al punto, quiero crear un cuadro de diálogo para que los usuarios seleccionen la hoja de Excel para vincular también. Entonces, esencialmente, el usuario seleccionaría primero el archivo de Excel y luego seleccionaría en un cuadro desplegable la hoja que desea vincular. es posible? Si es así, ¿cómo podría hacerlo? Aquí está mi código hasta ahora:

Public Sub linksheet() Dim fd As FileDialog Dim strpath As String Set fd = Application.FileDialog(msoFileDialogFilePicker) fd.AllowMultiSelect = False fd.Title = "Select Routing File" ''get the number of the button chosen Dim FileChosen As Integer FileChosen = fd.Show If FileChosen <> -1 Then Else strpath = fd.SelectedItems(1) DoCmd.TransferSpreadsheet acLink, acSpreadsheetTypeExcel12, _ "Test Link", strpath, True, "Current!" End If End Sub

Para agregar más a esto, estaba intentando utilizar este código que encontré para obtener los nombres, pero no estoy seguro de cómo almacenarlos como variables para usar.

Public Function WorkSheetNames(strwspath As String) As Boolean Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Dim strarray(25) Set xlApp = CreateObject("Excel.application") Set xlBook = xlApp.Workbooks.Open(strwspath, 0, True) For Each xlSheet In xlBook.Worksheets Debug.Print xlSheet.Name Next xlSheet xlBook.Close False xlApp.Quit Set xlBook = Nothing Set xlApp = Nothing Set xlSheet = Nothing End Function

Lo que hace el código anterior es enumerar cada nombre de hoja en la ventana de depuración, solo me resulta difícil insertar esos valores en una matriz.