将Excel中的单元格链接到Access表字段

时间:2012-08-20 17:23:43

标签: excel vba ms-access excel-vba access-vba

考虑我在Access 2003中有一个宏,它使用transferSpreadsheet函数将Union查询导出到excel 2007电子表格;导出的数据取决于用户输入的日期范围。

现在假设此UNION ALL Query对表和查询进行了分组。该查询是链接表的LEFT JOIN,另一个表是将缺少的字段添加到。

是否可以允许更新excel中的单元格以同时更新三个表(表,查询(2个表))中的记录的正确字段,这三个表是联盟的一部分(不能直接编辑)并且只用于获取一个表中的所有信息)?如果是这样,有人能告诉我这样做的正确方法,或者至少在某种程度上引导我朝着正确的方向前进吗?

我希望如果我在vba中导出和格式化excel文件时,我链接了单元格。由于最终用户不知道如何连接单元格。我问,因为每月生成的文件在下个月变化,有时在下个月仍然更新,两者同时进行。如果它们链接起来会更容易,因此不必连续生成excel文件。

使用:

VBA(不是vb.net)

Access 2003

Excel 2007

1 个答案:

答案 0 :(得分:0)

kdgwill,在执行transferpreadsheet功能后,您可以执行以下操作。这将获取刚刚保存的电子表格的名称,操作您需要更改的内容,然后使用相同的名称或新名称将其保存回Excel。这种情况发生得非常快,具体取决于数据的大小。 65,000行数据需要一分钟才能保存文件。即使调用此函数,也可以向表中添加数据。使用它来看看你是否可以操作它。

Dim objExcel            As New Excel.Application
Dim objWB               As Excel.Workbook
Dim objWS               As Excel.Worksheet
Dim objWS2              As Excel.Worksheet
Dim objCell             As Excel.Range



Set objExcel = CreateObject("Excel.Application")
Set objWB = objExcel.Workbooks.Open("path of the original excel file\excelfile.xls")

objWB.Activate
'Do not show the excel window during this operation.  By doing this the processing is faster.
objExcel.Visible = False

sSection = "Open Spreadsheet"
If objWB.Worksheets.Count = 0 Then
    objWB.Worksheets.Add
End If

'Open the first sheet named what ever you want to name it
 Set objWS = objWB.Sheets(1)

objWS.Name = "Name of Spreadsheet"
objWS.Activate

'Change the font to black or anything else you want to change
With objWS
    .Cells.Select
    .Cells.Activate
    .Cells.Font.Size = "12"
    .Cells.Font.Color = 0
    .Cells.Range("A1", "A1").Select
End With

    objExcel.Workbooks(1).SaveAs "path of new excel file to be saved\excelfile.xls"

'Clean up 
objWB.Close
Set objWB = Nothing
Set objExcel = Nothing