因此,我多次使用 doCmd.TransferText
来使用保存的文本导入规范,因为您可以轻松保存从 Application.FileDialog(msoFileDialogFilePicker) 返回的文件路径
查找并选择您希望使用保存的规范导入的文件。
但是,我无法找到对 Excel 文件执行相同操作的方法,保存 Excel 导入规范很简单,但使用 DoCmd.TransferSpreadSheet
方法无法使用保存的导入以及使用 doCmd.RunSavedImportExport
没有指定文件路径的选项。
除了使用不同的文件类型(例如 .csv)之外,还有其他解决办法吗
最佳答案
Access 中的“已保存导入”和“已保存导出”存储在形成 CurrentProject.ImportExportSpecifications
集合的 ImportExportSpecification
对象中。保存的 Excel 导入的详细信息类似于以下 XML,它是我通过手动导入 Excel 电子表格并勾选导入向导最后一页上的“保存导入步骤”复选框而创建的。
<?xml version="1.0" encoding="utf-8" ?>
<ImportExportSpecification Path = "C:\Users\Gord\Desktop\xlsxTest.xlsx" xmlns="urn:www.microsoft.com/office/access/imexspec">
<ImportExcel FirstRowHasNames="true" Destination="xlsxTest" Range="Sheet1$" >
<Columns PrimaryKey="ID">
<Column Name="Col1" FieldName="ID" Indexed="YESNODUPLICATES" SkipColumn="false" DataType="Long" />
<Column Name="Col2" FieldName="TextField" Indexed="NO" SkipColumn="false" DataType="Text" />
<Column Name="Col3" FieldName="DateField" Indexed="NO" SkipColumn="false" DataType="DateTime" />
</Columns>
</ImportExcel>
</ImportExportSpecification>
ImportExportSpecification 已使用名称 Import-xlsxTest
保存。现在,如果我将 Excel 文件从“xlsxTest.xlsx”重命名为“anotherTest.xlsx”,我可以使用以下 VBA 代码更改 ImportExportSpecification 的 XML 中的文件名,然后执行导入:
Option Compare Database
Option Explicit
Sub DoExcelImport()
Dim ies As ImportExportSpecification, i As Long, oldXML() As String, newXML As String
Const newXlsxFileSpec = "C:\Users\Gord\Desktop\anotherTest.xlsx" ' for testing
Set ies = CurrentProject.ImportExportSpecifications("Import-xlsxTest")
oldXML = Split(ies.XML, vbCrLf, -1, vbBinaryCompare)
newXML = ""
For i = 0 To UBound(oldXML)
If i = 1 Then
' re-write the second line of the existing XML
newXML = newXML & _
"<ImportExportSpecification Path = """ & _
newXlsxFileSpec & _
""" xmlns=""urn:www.microsoft.com/office/access/imexspec"">" & _
vbCrLf
Else
newXML = newXML & oldXML(i) & vbCrLf
End If
Next
ies.XML = newXML
ies.Execute
Set ies = Nothing
End Sub
有关 ImportExportSpecification
对象的更多信息,请参阅
关于ms-access - 如何为保存的 Excel 导入指定不同的文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23350640/