transferspreadsheet objaccess formulario exportar ejemplo docmd desde datos crear acspreadsheettypeexcel9 acces vba ms-access access-vba

objaccess - Acceda al recuento de VBA TransferSpreadsheet



exportar formulario access a excel vba (2)

Desea mostrar la cantidad de filas contenidas en tblImport . No creo que necesite un conjunto de registros para darle esa información. Pruebe uno de estos ...

MsgBox CurrentDb.TableDefs("tblImport").RecordCount & " records" MsgBox DCount("*", "tblImport") & " records"

Sin embargo, si necesita o simplemente desea hacerlo con un conjunto de registros, use un enfoque más rápido para OpenRecordset .

Set rs = db.OpenRecordset("tblImport", dbOpenTable, dbReadOnly) rs.MoveLast MsgBox rs.RecordCount & " records"

Estoy usando DoCmd.TransferSpreadsheet para llenar una tabla. Este comando se llama usando un botón en un formulario. Después de que se complete la transferencia, quiero decirle al usuario cuántos registros se agregaron. Para intentar esto, utilizo db.OpenRecordset("select * from tblImport") luego MsgBox(rs.RecordCount)
El problema es que se llama al conteo de registros antes de que se complete la transferencia. ¿Hay alguna forma de llamar esto sincrónicamente?

Aquí está el código completo

Private Sub cmdVIT_Click() On Error Resume Next Dim strPath As String Dim filePicker As FileDialog Dim db As DAO.Database Dim rs As DAO.Recordset Set db = CurrentDb Set filePicker = Application.FileDialog(msoFileDialogFilePicker) With filePicker .AllowMultiSelect = False .ButtonName = "Select" .InitialView = msoFileDialogViewList .Title = "Select File" With .Filters .Clear .Add "All Files", "*.*" End With .FilterIndex = 1 .Show End With strPath = filePicker.SelectedItems(1) Debug.Print strPath DoCmd.TransferSpreadsheet TransferType:=acImport, SpreadsheetType:=acSpreadsheetTypeExcel12, TableName:="tblImport", FileName:=strPath, HasFieldNames:=True Set rs = db.OpenRecordset("select * from tblImport") MsgBox rs.RecordCount & " records" End Sub


Necesitas una línea adicional:

Set rs = db.OpenRecordset("select * from tblImport") ''Populate recordset rs.MoveLast MsgBox rs.RecordCount & " records"