打开从 Excel 工作表单元格中选择的特定记录的访问表单

Posted

技术标签:

【中文标题】打开从 Excel 工作表单元格中选择的特定记录的访问表单【英文标题】:Open an Access Form to a specific record selected from an excel sheet cell 【发布时间】:2019-07-05 01:25:14 【问题描述】:

我正在处理我负责处理的工作问题。在 Excel 工作表中有一个 ID 列表和一个 MS Access 数据库,其中包含与这些记录对应的记录。我需要编写代码来打开一个访问表单,以访问从 excel 字段中识别的记录。

Sub OpenAccess()

   Dim LPath As String
   Dim StudentID As Integer

   'Path to Access database
   LPath = "C:\Users\Admin\Desktop\CNRC_Test.accdb"

   'Open Access and make visible
   Set oApp = CreateObject("Access.Application")
   oApp.Visible = True

   'Open Access database as defined by LPath variable
   oApp.OpenCurrentDatabase LPath

   'Open form called Categories filtering by CategoryID

   oApp.DoCmd.OpenForm "Student Details", , , "Student ID=" & StudentID


End Sub

我试过这段代码:

Sub OpenAccess()

   Dim LPath As String
   Dim StudentID As Integer

   'Path to Access database
   LPath = "C:\Users\Admin\Desktop\CNRC_Test.accdb"

   'Open Access and make visible
   Set oApp = CreateObject("Access.Application")
   oApp.Visible = True

   'Open Access database as defined by LPath variable
   oApp.OpenCurrentDatabase LPath

   'Open form called Categories filtering by CategoryID

   oApp.DoCmd.OpenForm "Student Details", , , "Student ID=" & StudentID


End Sub

【问题讨论】:

有什么问题?描述错误或您有什么问题?另外,您使用的是什么 excel 和 access 版本? Office 2016 代码打开访问表单,但不是通过单击 Excel 单元格或转到 Excel 单元格指定的记录。我需要打开对单击的 excel 单元格指定的记录的访问表单。 【参考方案1】:

oApp.DoCmd.OpenForm "Student Details", , , "Student ID=" & StudentID

在 Office 16 上测试:如果“学生详细信息”是您的表单名称,并且您的表单的记录源是您要从中获取的表,并且“学生 ID”是索引号列,并且有一个表单上的文本字段,其控件源是该索引号列或表中其他列的名称,那么应该返回一条记录(在文本框中显示结果)。

一个例子如下:

首先,将顶部的函数 def 重写为 OpenAccess(StudentID)

接下来,从您要使用的工作表中分配 StudentID:

用您选择的索引值填充 B3。

然后将活动单元暂时停放在 A1 中。

然后从左侧 VBE 窗格的 VBAProject 树中的 Microsoft Excel 对象中调出 Sheet 对象。将其写入其模块:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Target.Address = "$B$3" Then
  Call OpenAccess(Target.Value)
 End If
End Sub

然后点击进入B3。

【讨论】:

StudentID需要来自excel文档中的点击事件/值,并在access中打开对应记录。 现在一切正常吗,还是缺少管道? 我仍在寻求帮助,以编写实现以下目标的方法:StudentID 需求来自 excel 文档中的点击事件/值,并在 access 中打开相应记录【参考方案2】:

您可以将此代码复制/粘贴到 Excel 工作表模块后面并对其进行自定义以满足您的需求:

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Dim studentID As Long

    ' Exit if selection is more than one cell
    If Target.Cells.Count > 1 Then
        Exit Sub
    End If

    ' Validate if selected cell is in range
    If Not Application.Intersect(Range("A1:A5"), Range(Target.Address)) _
           Is Nothing Then

        ' Assign studentid value from current cell
        studentID = Target.Value

        ' Call the open procedure with current cell value
        Call OpenAccess(studentID)

    End If

End Sub


Sub OpenAccess(studentID As Long)


    Dim oApp As Object
    Dim LPath As String


    'Path to Access database
    LPath = "C:\Temp\Test.accdb"

    ' Check if Access is open
    On Error Resume Next
        Set oApp = GetObject(LPath)
        If Err.Number <> 0 Then Err.Clear
    On Error GoTo 0

    oApp.Visible = True

    'Open form called Categories filtering by CategoryID
    oApp.DoCmd.OpenForm "Student Details", , , "[Student ID]=" & studentID


End Sub

【讨论】:

运行打开访问并立即关闭 你调整了DB的路径吗? 你能用你当前的代码编辑/更新你的问题吗?

以上是关于打开从 Excel 工作表单元格中选择的特定记录的访问表单的主要内容,如果未能解决你的问题,请参考以下文章

VBA Excel - 从 Excel 中的一个单元格中选择一个值以更新 SQL 表

用于工作表的谷歌应用脚​​本 - 选择多个列表值并记录在同一个单元格中

excel两个工作表如何关联

如何从选定的 Excel 工作表单元格中在宏中添加时间戳

表格中如何提取指定单元格的内容呢?

在excel中如何用vba来实现查找特定的字符串?