我创建了一个 Excel 工作表,用户可以插入一些行(最多 100 行)。
某些字段的值是从下拉列表中选择的。
我把公式放在所有 100 行上。
问题是,如果用户插入的行数少于 100,则数据不会在 access 中导入。在这种情况下,仅当我从剩余行中删除下拉列表的公式时才会导入数据。
要在访问中导入 excel 数据,我使用:
DoCmd.TransferSpreadsheet [Transfer Type], [Spreadsheet Type], [Table Name], [File Name], [Has Field Names], [Range]
我该如何解决这个问题?
编辑
在 Remou 的回答之后,我尝试了:
Private Sub import_Click()
Dim openDialog As FileDialog
Dim FileChosen As Integer
Set openDialog = Application.FileDialog(msoFileDialogFilePicker)
On Error GoTo DoNothing
With openDialog
.title = "Import"
.AllowMultiSelect = False
.Show
End With
filename = openDialog.SelectedItems.Item(1)
Dim xl As Excel.Application
Dim wb As Excel.Workbook
Dim rng As Excel.Range
Set xl = CreateObject("Excel.Application")
xl.Visible = True
Set wb = xl.Workbooks.Open(nomeFile)
c = wb.Worksheets("Sheet1").Range("1:1").end(-4161).Address
r = wb.Worksheets("Sheet1").Range("A:A").end(-4121).Row
ImportRange = "Sheet1!" & "A1:" _
& Replace(Mid(c, 1, InStrRev(c, "$")) & r, "$", "")
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, _
"ImportTable", filename, True, ImportRange
DoNothing:
If Err.Number = cdlCANCEL Then
End If
End Sub
但我在Dim xl As Excel.Application上有一个调试错误