【发布时间】:2020-07-03 07:16:20
【问题描述】:
按照 Fenton 先生的建议,我想开始删除我对后期绑定的引用。但是,我尝试晚绑定 Excel,就像我查找的所有内容一样,并且在添加之前无法修复它 “Microsoft Visual Basic for Applications 可扩展性 5.3”。
我目前的参考资料是:
Visual Basic for Applications
Microsoft Access 15.0 Object Library
Microsoft Data Access Components Installed Version
Microsoft ActiveX Data Objects 6.1 Library
Microsoft DAO 3.6 Object Library
Microsoft Windows Common Controls 6.0 (SP6)
Microsoft Scripting Runtime
Microsoft XML,v6.0
Microsoft Visual Basic for Applications Extensibility 5.3.
使用 Windows 10、Access 2013 Runtime 和 accdb 完成测试。
这里是带有声明的函数的顶部和带有错误的部分:
On Error GoTo errHandle:
Dim FileToImport As Variant
Dim FilesLoaded As String
Dim csvStr As String
DoCmd.Hourglass False
Dim Loc As Integer
Loc = Forms!StartPage.LocationID
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim ofile As Object
Dim fdialog As Object
Dim rs As ADODB.Recordset
Dim uid As String
uid = Forms!AppLoginFrm!FullName
Dim stp As String
Dim thestr As String
Dim inboundrs As ADODB.Recordset
Dim ChkInbound As String
Dim repprg As Long
Dim ExcelApp As Object
Dim fname As String
Dim rng As Object
Dim wb As Object
Dim xlsheet1 As Object
Dim skiphead As Integer
stp = format(Now, "yyyy-mm-dd hh:nn:ss")
Dim tmpfile As String
tmpfile = TempPath()
tmpfile = tmpfile & "tmpLoad.txt"
skiphead = 2
Set fdialog = Application.FileDialog(3)
fdialog.Filters.Clear
fdialog.Filters.Add "Excel Files", "*.xls,*.xlsx"
fdialog.AllowMultiSelect = True
If fdialog.Show = 0 Then
Exit Function
End If
Set ofile = fso.CreateTextFile(tmpfile, True, False)
ofile.WriteLine """Location""" & "," & """YardTrack""" & "," & """Dir""" & "," & """Seq"""...
For Each FileToImport In fdialog.SelectedItems
Set ExcelApp = CreateObject("Excel.Application")
With ExcelApp
.Workbooks.Open FileToImport
.DisplayAlerts = -1
.Visible = -1
.Windows(1).Visible = -1
Set xlsheet1 = .Worksheets(1)
Set rng = xlsheet1.UsedRange
If xlsheet1.cells(1, 1).Value = "TOT-CARS" Then
skiphead = 3
End If
For i = skiphead To rng.rows.count
csvStr = csvStr & Chr(34) & rng(i, 1) & Chr(34) & "," & Chr(34) & rng(i, 2) & Chr...
ofile.Write csvStr
csvStr = ""
Next
ofile.Write Chr(34) & csvStr & Chr(34) & vbCrLf
ExcelApp.Workbooks.Close
Set rng = Nothing
Set xlsheet1 = Nothing
End With
FilesLoaded = FilesLoaded & vbCrLf & fileName(FileToImport)
Next FileToImport
ExcelApp.Quit
ofile.Close
Set fdialog = Nothing
问题:
1) 我错过了 Open 的常量吗?关键是要删除引用,但要完成这项工作,我必须添加一个。 :(
2) 接下来我应该尝试删除哪些引用?老实说,在上一个之后我有点害怕,但我希望程序尽可能稳定。
提前谢谢你!
【问题讨论】:
-
对于初学者 - 使用变量来引用您的工作簿。
Set xlsheet1 = .Worksheets(1)- 这应该是指工作簿父级,但当前指的是应用程序实例... -
您也不需要为每次迭代创建新的
Excel Application。您可以保留应用程序对象并打开/关闭工作簿。将节省一些时间/内存。