考虑我在Access 2003中有一个宏,它使用transferSpreadsheet函数将Union查询导出到excel 2007电子表格;导出的数据取决于用户输入的日期范围。
现在假设此UNION ALL Query对表和查询进行了分组。该查询是链接表的LEFT JOIN,另一个表是将缺少的字段添加到。
是否可以允许更新excel中的单元格以同时更新三个表(表,查询(2个表))中的记录的正确字段,这三个表是联盟的一部分(不能直接编辑)并且只用于获取一个表中的所有信息)?如果是这样,有人能告诉我这样做的正确方法,或者至少在某种程度上引导我朝着正确的方向前进吗?
我希望如果我在vba中导出和格式化excel文件时,我链接了单元格。由于最终用户不知道如何连接单元格。我问,因为每月生成的文件在下个月变化,有时在下个月仍然更新,两者同时进行。如果它们链接起来会更容易,因此不必连续生成excel文件。
使用:
VBA(不是vb.net)
Access 2003
Excel 2007
答案 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