从Access中使用Excel电子表格

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

用户将testing结果input到电子表格(细胞)中,然后输出预测死亡率的各种模型的一组数字(约6个结果)。 电子表格作为一个复杂的function,一次产生一个病人的结果。

我还有一个(单独的)访问数据库,用于保存多个病人的数据 – 包括所有关于testing结果的数据。 目前我必须手动input这个数据到电子表格中,把结果拿出来,然后手动input到数据库中。

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

理想情况下,这可以做到现场。

我想我可以尝试将电子表格的function编程为访问中的复杂函数,但是如果我诚实地说,我不太确定电子表格中的algorithm是如何工作的。 它是由比我更聪明的麻醉师devise的….

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

克里斯·哈蒙德

可以从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 

但是,这似乎是重复一个访问表的每一行将是繁琐的,我不确定是否做生活是合理的。

我会尝试调整Excel计算以访问VBA函数,并在Access查询中使用这些自定义函数。 但我不知道会有多大的任务。 我build议你不要把麻醉剂的聪明吓倒, 这并不意味着他们对VBA的了解比你更多。 至less看看你是否可以解决它。

要将数据重新推送到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数据库引擎对象库的引用。

不确定要完全理解你想要什么,但是如果你只是想将查询的结果导出到电子表格,你可以使用下面的代码:

 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')")