Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA代码,用于根据数据库中的表名创建项目清单_Vba_Ms Access - Fatal编程技术网

VBA代码,用于根据数据库中的表名创建项目清单

VBA代码,用于根据数据库中的表名创建项目清单,vba,ms-access,Vba,Ms Access,我不熟悉在MS Access中编写VBA代码。我已经创建了一个表单来将excel文件导入Access,但是我需要帮助创建我在表单中上载的表/文件的清单。 例如: condition if table name = "abc" is True then, display ABC1 if table name = "bac" is True then, display ABC2 else " "

我不熟悉在MS Access中编写VBA代码。我已经创建了一个表单来将excel文件导入Access,但是我需要帮助创建我在表单中上载的表/文件的清单。 例如:

    condition if table name = "abc" is True then,
    display ABC1 
    if table name = "bac" is True then,
    display ABC2
    else " "
    end if

有人能帮我吗?

你的问题不清楚,如果我回答错了,我深表歉意。一个常见问题是将Excel中记录的数据导入Access数据库。所以access提供了一个向导。在功能区上,依次单击“外部数据”、“新建数据源”、“文件”和“Excel”。按照您的方式完成向导

提示:在构建数据库时,您可以通过导入到新表来获得启动,但也可以选择“附加到当前表”。为从Excel导入的每个表生成并保存导入查询

提示2:access和Excel可以相互对话,但在access中必须启用该功能。这里有一个链接,介绍如何执行此操作,因为通常您希望在导入excel表的数据后清除这些表。如果由于Excel表格格式不正确而导致向导无法工作,则可以在启用通信后逐个单元格获取数据

假设您现在拥有适当的访问表,则创建一个新的空白表单,并将每个表拖到“表单详细信息”部分。Access随后将为每个表创建子窗体。将子窗体堆叠在彼此的顶部。这样,如果只有一个子窗体可见,则它们都显示在同一位置。接下来,向表单标题部分添加一个列表框和一个按钮

我还创建了一个表来跟踪excel表名以及它们上次导入的时间

以下是将所有内容连接在一起的代码:

Option Compare Database

Private OriginalListboxColor As Long


Private Sub cmdImportDatafromExcelTable_Click()
'show the appropriate table and import any data in the appropriate excel table
Dim AppropriateUniformsTableID As Integer: AppropriateUniformsTableID = 1
Dim OfficersTableID As Integer: OfficersTableID = 2
If lstExcelTableNames = AppropriateUniformsTableID Then
Me.Officers_subform.Visible = False
Me.AppropriateUniforms_subform.Visible = True
DoCmd.RunSavedImportExport ("LoadUniformData")
UpdateExcelTableNamesLastImportedOn (AppropriateUniformsTableID)
ChangeListboxColorifInvalidLastImportedOn

Else
Me.AppropriateUniforms_subform.Visible = False
Me.Officers_subform.Visible = True
DoCmd.RunSavedImportExport ("LoadOfficerData")
UpdateExcelTableNamesLastImportedOn (OfficersTableID)
ChangeListboxColorifInvalidLastImportedOn
End If
Me.Refresh 'update data from recordsource
End Sub

Private Sub UpdateExcelTableNamesLastImportedOn(TableID As Integer)
Dim db As Database
Dim sqlstring As String
Set db = CurrentDb
sqlstring = "UPDATE ExcelTableNames SET LastImportedOn = #" & Now() & "# WHERE ID = " & TableID
db.Execute sqlstring
Set db = Nothing
End Sub

Private Sub Form_Load()
OriginalListboxColor = Me.lstExcelTableNames.BorderColor
ChangeListboxColorifInvalidLastImportedOn
End Sub

Private Sub ChangeListboxColorifInvalidLastImportedOn()
If DateDiff("d", DMin("LastImportedOn", "ExcelTableNames"), Now()) > 2 Then
Me.lstExcelTableNames.BorderColor = vbRed
Me.lstExcelTableNames.BorderWidth = 2
Else
Me.lstExcelTableNames.BorderColor = OriginalListboxColor
Me.lstExcelTableNames.BorderWidth = 1
End If
End Sub

Private Sub Form_Open(Cancel As Integer)
'OriginalListboxColor = Me.lstExcelTableNames.BorderColor
'ChangeListboxColorifInvalidLastImportedOn
End Sub
点击按钮后,表单将从所选excel表导入数据,并在上次导入表单时更新。如果两天内没有导入任何表,列表框边框将变为红色。我无法使用默认的listbox控件将listbox项变成红色,但您可以执行其他操作。上次加载的日期是我对您想要的标准的最佳猜测


很抱歉,不清楚您在问什么。为什么要使用VBA清单?我建议创建一个包含excel工作表信息的表。然后,您可以选中“导入的是/否”复选框。比较文件名和表名不是一个好主意。让我试着把问题弄清楚一点。我创建了一个表单,用于将Excel文件导入Access数据库。但现在我在想,是否可以提供用户每次导入时上传的文件列表?表格不需要显示在表单中,但应显示名称。谢谢。但让我试着把问题弄清楚一点。我创建了一个表单,用于将Excel文件导入Access数据库。但现在我在想,是否可以提供用户每次导入时上传的文件列表?表格不需要显示在表单中,但名称应为。您需要的是: