I share a database with a user running Access 2000. One of the procedures references Excel so I added the Excel Object Library, but my only choice is 11 since I am using 2003 and he need 9. We reset the library to 9 from his machine but every time I open the database it sets it back to 11. Can I check the version with a procedure and set the library?
![]() |
Patch reliability is unclear. Unless you have an immediate, pressing need to install a specific patch, don't do it. |
SIGN IN | Not a member? | REGISTER | PLUS MEMBERSHIP |
-
Excel Object Library version conflict (2003 SP2)
Home » Forums » AskWoody support » Productivity software by function » MS Access and database help » Excel Object Library version conflict (2003 SP2)
- This topic has 20 replies, 3 voices, and was last updated 19 years ago.
AuthorTopicWSchuckrau
AskWoody LoungerMarch 24, 2006 at 12:23 pm #430714Viewing 0 reply threadsAuthorReplies-
WSrory
AskWoody LoungerMarch 24, 2006 at 12:30 pm #1006504You will probably find it easier, particularly if it is only one procedure, to use late binding and remove the reference altogether. Then declare all your Excel variables as Objects and use syntax like:
Dim xlApp as Object Set xlApp = CreateObject("Excel.Application")
Note: if you use any Excel constants in the code, you will either need to declare them or use the literal values instead.
HTH -
WSchuckrau
AskWoody LoungerMarch 24, 2006 at 1:49 pm #1006528rory, you know I love this stuff, but I know so little. I looked up late binding in the knowledge base since I was not familiar with the term and applied your example. I am converting text files to excel format. Here’s my procedure:
Public Function ConvertFiles()
Dim RS As DAO.Recordset, DB As DAO.Database
Dim strFileName As String
Dim xlObj As Object
Dim xlWbk As Object
Set DB = CurrentDb()
Set RS = DB.OpenRecordset(“tblFileNames”)
‘On Error Resume Next
RS.MoveFirst
Do Until RS.EOF
strFileName = RS(“Folder”) & “” & RS(“FileNames”)
Set xlObj = CreateObject(“Excel.Application”)
xlObj.DisplayAlerts = False
Set xlWbk = xlObj.Workbooks.Open(strFileName)
xlWbk.SaveAs FileName:= _
strFileName, FileFormat:=xlNormal, Password:=””, WriteResPassword:=””, _
ReadOnlyRecommended:=False, CreateBackup:=False
RS.MoveNext
xlWbk.Close SaveChanges:=True
Set xlWbk = Nothing
xlObj.Quit
Set xlObj = Nothing
Loop
xlObj.DisplayAlerts = True
RS.Close
End FunctionI figure I could drop everything past “strFileName, FileFormat:=xlNormal”, but I don’t know how to declare xlNormal.
-
WSrory
AskWoody Lounger -
WSrory
AskWoody LoungerMarch 24, 2006 at 1:58 pm #1006535Incidentally, to improve speed (late binding is a little slower than early), I would move the CreateObject line outside your loop:
Public Function ConvertFiles() Dim RS As DAO.Recordset, DB As DAO.Database Dim strFileName As String Dim xlObj As Object Dim xlWbk As Object Set DB = CurrentDb() Set RS = DB.OpenRecordset("tblFileNames") 'On Error Resume Next RS.MoveFirst Set xlObj = CreateObject("Excel.Application") xlObj.DisplayAlerts = False Do Until RS.EOF strFileName = RS("Folder") & "" & RS("FileNames") Set xlWbk = xlObj.Workbooks.Open(strFileName) xlWbk.SaveAs FileName:= _ strFileName, FileFormat:=-4143, Password:="", WriteResPassword:="", _ ReadOnlyRecommended:=False, CreateBackup:=False RS.MoveNext xlWbk.Close SaveChanges:=True Set xlWbk = Nothing Loop xlObj.DisplayAlerts = True xlObj.Quit Set xlObj = Nothing RS.Close End Function
-
WSchuckrau
AskWoody LoungerMay 12, 2006 at 2:37 pm #1011965Recently one of the spreadsheets I had to process had the data in sheet2 rather than sheet1 so my process did not pull any data. I thought I could modify this conversion function to include checking cell A1 for null with an IF statement. How do I refer to the open workbook? My code gives an error “Object doesn’t support this property or method” at the IF statement line.
Public Function ConvertFiles()
Dim RS As DAO.Recordset, DB As DAO.Database
Dim strFileName As String
Dim xlObj As Object
Dim xlWbk As Object
Set DB = CurrentDb()
Set RS = DB.OpenRecordset(“tblFileNames”)
‘On Error Resume Next
RS.MoveFirst
Do Until RS.EOF
strFileName = RS(“Folder”) & “” & RS(“FileName”)
Set xlObj = CreateObject(“Excel.Application”)
xlObj.DisplayAlerts = False
Set xlWbk = xlObj.Workbooks.Open(strFileName)
If IsNull(xlWbk!Sheet1.A1) Then
MsgBox strFileName & ” ” & “has no Data”
xlWbk.SaveAs FileName:= _
strFileName, FileFormat:=-4143
End If
RS.MoveNext
xlWbk.Close SaveChanges:=True
Set xlWbk = Nothing
xlObj.Quit
Set xlObj = Nothing
Loop
RS.Close
End Function -
WSHansV
AskWoody Lounger -
WSrory
AskWoody Lounger -
WSchuckrau
AskWoody Lounger -
WSHansV
AskWoody LoungerMay 12, 2006 at 2:58 pm #1011974That would mean that there is no Sheet1 at all. Of course, you cannot refer to Sheet1 if it doesn’t exist. you can try something like this:
Dim xlWsh As Object
‘ Suppress error messages
On Error GoTo Next
‘ Try to refer to Sheet1
Set xlWsh = xlWbk.Worksheets(“Sheet1”)
‘ Restore error handling
On Error GoTo 0
‘ Check if worksheet exists
If xlWsh Is Nothing Then
MsgBox “blah blah…”
Else
…
End If -
WSchuckrau
AskWoody Lounger -
WSchuckrau
AskWoody Lounger -
WSchuckrau
AskWoody LoungerMay 12, 2006 at 3:21 pm #1011979I have tried each and I get “Object variable or With block Variable not set.
Public Function ConvertFiles()
Dim RS As DAO.Recordset, DB As DAO.Database
Dim strFileName As String
Dim xlObj As Object
Dim xlWbk As Object
Dim xlWsh As ObjectSet DB = CurrentDb()
Set RS = DB.OpenRecordset(“tblFileNames”)
Set xlWsh = xlWbk.Sheets(1)
‘On Error Resume Next
RS.MoveFirst
Do Until RS.EOF
strFileName = RS(“Folder”) & “” & RS(“FileName”)
Set xlObj = CreateObject(“Excel.Application”)
xlObj.DisplayAlerts = False
Set xlWbk = xlObj.Workbooks.Open(strFileName)
If xlWsh Is Nothing Then
MsgBox strFileName & ” ” & “has no Data”
xlWbk.SaveAs FileName:= _
strFileName, FileFormat:=-4143
End If
RS.MoveNext
xlWbk.Close SaveChanges:=True
Set xlWbk = Nothing
xlObj.Quit
Set xlObj = Nothing
Loop
RS.Close
End Function -
WSHansV
AskWoody Lounger -
WSchuckrau
AskWoody Lounger -
WSchuckrau
AskWoody Lounger -
WSHansV
AskWoody LoungerMay 12, 2006 at 3:53 pm #1011986To be frank, I don’t understand what you want to accomplish.
Here is a version in which the logic has been cleaned up, and with error handling added. It still doesn’t do anything useful.
Public Function ConvertFiles()
Dim RS As DAO.Recordset, DB As DAO.Database
Dim strFileName As String
Dim xlObj As Object
Dim xlWbk As ObjectOn Error GoTo ErrHandler
Set DB = CurrentDb
Set RS = DB.OpenRecordset(“tblFileNames”)
RS.MoveFirst
Set xlObj = CreateObject(“Excel.Application”)
Do Until RS.EOF
strFileName = RS(“Folder”) & “” & RS(“FileName”)
xlObj.DisplayAlerts = False
Set xlWbk = xlObj.Workbooks.Open(strFileName)
If xlWbk.Worksheets(1).Range(“A1”) = “” Then
MsgBox strFileName & ” ” & “has no Data”
‘ What is the purpose of this?
xlWbk.SaveAs Filename:=strFileName, FileFormat:=-4143
End If
‘ Why save?
xlWbk.Close SaveChanges:=True
RS.MoveNext
LoopExitHandler:
On Error Resume Next
RS.Close
Set RS = Nothing
Set DB = Nothing
Set xlWbk = Nothing
xlObj.Quit
Set xlObj = Nothing
Exit SubErrHandler:
MsgBox Err.Description, vbExclamation
Resume ExitHandler
End Function -
WSchuckrau
AskWoody LoungerMay 12, 2006 at 4:46 pm #1011989It works perfectly! For the sake of explanation, the spreadsheets were originally delivered to the users as text files (don’t ask me, I have no idea why), and some of the users saved them that way after they added their data. Others however, saved them as xls. To make them consistent I added this function to my procedure prior to importing the data.
Thanks again for your help and patience.
-
WSrory
AskWoody Lounger
-
-
-
WSHansV
AskWoody LoungerMarch 24, 2006 at 1:58 pm #1006536In the first place, when you use late binding (i.e. remove the reference to the Microsoft Excel n.0 Object Library), you must replace all Excel constants with their values, as Rory indicated. Change xlNormal to -4143. You can find this value by typing
? xlNormal
in the Immediate window before removing the reference (or look it up in Excel).
In the second place, you cannot use
xlObj.DisplayAlerts = True
after quitting xlObj and setting it to Nothing. Since you quit Excel anyway, you don’t need the line.
-
WSchuckrau
AskWoody Lounger
-
-
-
Viewing 0 reply threads -

Plus Membership
Donations from Plus members keep this site going. You can identify the people who support AskWoody by the Plus badge on their avatars.
AskWoody Plus members not only get access to all of the contents of this site -- including Susan Bradley's frequently updated Patch Watch listing -- they also receive weekly AskWoody Plus Newsletters (formerly Windows Secrets Newsletter) and AskWoody Plus Alerts, emails when there are important breaking developments.
Get Plus!
Welcome to our unique respite from the madness.
It's easy to post questions about Windows 11, Windows 10, Win8.1, Win7, Surface, Office, or browse through our Forums. Post anonymously or register for greater privileges. Keep it civil, please: Decorous Lounge rules strictly enforced. Questions? Contact Customer Support.
Search Newsletters
Search Forums
View the Forum
Search for Topics
Recent Topics
-
Google’s Veo3 video generator. Before you ask: yes, everything is AI here
by
Alex5723
2 minutes ago -
Flash Drive Eject Error for Still In Use
by
J9438
1 hour, 35 minutes ago -
Windows 11 Insider Preview build 27863 released to Canary
by
joep517
18 hours, 54 minutes ago -
Windows 11 Insider Preview build 26120.4161 (24H2) released to BETA
by
joep517
18 hours, 55 minutes ago -
AI model turns to blackmail when engineers try to take it offline
by
Cybertooth
11 hours, 39 minutes ago -
Migrate off MS365 to Apple Products
by
dmt_3904
3 hours, 6 minutes ago -
Login screen icon
by
CWBillow
2 hours, 1 minute ago -
AI coming to everything
by
Susan Bradley
19 hours, 5 minutes ago -
Mozilla : Pocket shuts down July 8, 2025, Fakespot shuts down on July 1, 2025
by
Alex5723
1 day, 10 hours ago -
No Screen TurnOff???
by
CWBillow
1 day, 10 hours ago -
Identify a dynamic range to then be used in another formula
by
BigDaddy07
1 day, 11 hours ago -
InfoStealer Malware Data Breach Exposed 184 Million Logins and Passwords
by
Alex5723
1 day, 23 hours ago -
How well does your browser block trackers?
by
n0ads
1 day, 9 hours ago -
You can’t handle me
by
Susan Bradley
9 hours, 21 minutes ago -
Chrome Can Now Change Your Weak Passwords for You
by
Alex5723
1 day, 2 hours ago -
Microsoft: Over 394,000 Windows PCs infected by Lumma malware, affects Chrome..
by
Alex5723
2 days, 10 hours ago -
Signal vs Microsoft’s Recall ; By Default, Signal Doesn’t Recall
by
Alex5723
1 day, 13 hours ago -
Internet Archive : This is where all of The Internet is stored
by
Alex5723
2 days, 10 hours ago -
iPhone 7 Plus and the iPhone 8 on Vantage list
by
Alex5723
2 days, 10 hours ago -
Lumma malware takedown
by
EyesOnWindows
1 day, 23 hours ago -
“kill switches” found in Chinese made power inverters
by
Alex5723
2 days, 19 hours ago -
Windows 11 – InControl vs pausing Windows updates
by
Kathy Stevens
2 days, 19 hours ago -
Meet Gemini in Chrome
by
Alex5723
2 days, 23 hours ago -
DuckDuckGo’s Duck.ai added GPT-4o mini
by
Alex5723
2 days, 23 hours ago -
Trump signs Take It Down Act
by
Alex5723
3 days, 7 hours ago -
Do you have a maintenance window?
by
Susan Bradley
1 day, 12 hours ago -
Freshly discovered bug in OpenPGP.js undermines whole point of encrypted comms
by
Nibbled To Death By Ducks
2 days, 10 hours ago -
Cox Communications and Charter Communications to merge
by
not so anon
3 days, 11 hours ago -
Help with WD usb driver on Windows 11
by
Tex265
22 hours, 21 minutes ago -
hibernate activation
by
e_belmont
3 days, 20 hours ago
Recent blog posts
Key Links
Want to Advertise in the free newsletter? How about a gift subscription in honor of a birthday? Send an email to sb@askwoody.com to ask how.
Mastodon profile for DefConPatch
Mastodon profile for AskWoody
Home • About • FAQ • Posts & Privacy • Forums • My Account
Register • Free Newsletter • Plus Membership • Gift Certificates • MS-DEFCON Alerts
Copyright ©2004-2025 by AskWoody Tech LLC. All Rights Reserved.