4

我有一个 Excel 电子表格,可以根据各种测试结果计算风险(动脉瘤修复后的围手术期死亡率)。

用户将测试结果输入电子表格(输入单元格),然后输出一组预测死亡率的各种模型的数字(约 6 个结果)。电子表格作为一个复杂的函数,一次生成一个患者的结果。

我还有一个(单独的)访问数据库,其中包含多个患者的数据——包括进入电子表格的所有测试结果数据。目前我必须手动将这些数据输入到电子表格中,得到结果,然后手动将它们输入到数据库中。

有没有办法自动做到这一点。即我可以将data1、data2、data3...从Access导出到电子表格中到需要输入数据的单元格中,然后从显示结果的单元格中获取结果(result1、result2、result3...)移植回访问。

理想情况下,这可以现场完成。

我想我可以尝试将电子表格的功能编程为一个复杂的访问功能,但老实说,我不确定电子表格中的算法是如何工作的。它是由比我聪明得多的麻醉师设计的......

希望这是有道理的。非常感谢任何帮助。

克里斯·哈蒙德

4

3 回答 3

3

可以从 Access 自动化 Excel。

Const cstrFile As String = "C:\SomeFolder\foo.xls"
Dim xlApp As Object
Dim xlWrkBk As Object
Dim xlWrkSt As Object

Set xlApp = CreateObject("Excel.Application")
xlApp.Workbooks.Open cstrFile, ReadOnly:=True
Set xlWrkBk = xlApp.Workbooks(1)
Set xlWrkSt = xlWrkBk.Worksheets(1)
With xlWrkSt
    .Range("A1") = 2
    .Range("A2") = 19
    Debug.Print .Range("A3")
End With
xlWrkBk.Close SaveChanges:=False

但是,对于 Access 表的每一行重复这似乎很麻烦,我不确定这样做是否合理。

我会尝试使 Excel 计算适应 Access VBA 函数并在 Access 查询中使用这些自定义函数。但我不知道这会有多大的任务。我建议您不要被麻醉师的聪明所吓倒;这并不意味着他们实际上比您更了解 VBA。至少看看你是否可以解决它。

于 2013-05-02T16:00:19.900 回答
0

不确定完全理解您想要什么,但如果您只想将查询结果导出到电子表格,您可以使用以下内容:

Private Sub ExportAccessDataToExcel()
    Dim SqlString As String

    SqlString = "CREATE TABLE testMeasurements (TestName TEXT, Status TEXT)"

    DoCmd.RunSQL (SqlString)
    SqlString = "INSERT INTO testMeasurements VALUES('Average Power','PASS')"
    DoCmd.RunSQL (SqlString)
    SqlString = "INSERT INTO testMeasurements VALUES('Power Vs Time','FAIL')"
    DoCmd.RunSQL (SqlString)

    SqlString = "SELECT testMeasurements.TestName, testMeasurements.Status INTO exportToExcel "
    SqlString = SqlString & "FROM testMeasurements "
    SqlString = SqlString & "WHERE (((testMeasurements.TestName)='Average Power'));"

    DoCmd.RunSQL (SqlString)
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel7, "exportToExcel", "C:\TestMeasurements.xls", True, "A1:G12"
End Sub

来源:http ://www.ehow.com/how_7326712_save-access-query-excel-vba.html

这可以直接从数据库或 Excel 中完成(您需要使用 Excel VBA 打开数据库才能这样做,但大多数 Office 套件产品可以相互很好地交互)。

如果您想将电子表格的数据推送到 Access 数据库中,那就不同了。您只需要打开数据库并循环INSERT查询即可。这是一个简单的示例,您只需要添加循环:

Dim db as DAO.Database
Set db = OpenDatabase(myDataBase.mdb)
Call db.Execute("INSERT INTO myTable (Field1, Field2) VALUES('Value1', 'Value2')")
于 2013-05-02T17:23:10.793 回答
0

要将数据推回 Access,您可以从 Excel VBA 中插入数据,如下所示:

dim val as variant
dim db as DAO.Database

val=thisworkbook.range("a1").value
set db=OpenDatabase("c:\myAccessDB.accdb")
db.execute "insert into patientData (someField) values (" & val & ")",dbFailOnError
db.Close

您需要添加对 Microsoft Office Access 数据库引擎对象库的引用。

于 2013-05-02T16:29:16.110 回答