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
-
Mozilla Firefox Security Updates! Released late 17th May 2025
by
Alex5723
4 hours, 43 minutes ago -
Microsoft: Troubleshoot problems updating Windows
by
Alex5723
1 hour, 36 minutes ago -
Woman Files for Divorce After ChatGPT “Reads” Husband’s Coffee Cup
by
Alex5723
8 hours, 42 minutes ago -
Moving fwd, Win 11 Pro,, which is best? Lenovo refurb
by
Deo
2 hours, 8 minutes ago -
DBOS Advanced Network Analysis
by
Kathy Stevens
18 hours, 31 minutes ago -
Microsoft Edge Launching Automatically?
by
healeyinpa
8 hours, 56 minutes ago -
Google Chrome to block admin-level browser launches for better security
by
Alex5723
21 hours, 12 minutes ago -
iPhone SE2 Stolen Device Protection
by
Rick Corbett
13 hours, 27 minutes ago -
Some advice for managing my wireless internet gateway
by
LHiggins
9 hours, 8 minutes ago -
NO POWER IN KEYBOARD OR MOUSE
by
HE48AEEXX77WEN4Edbtm
15 hours, 24 minutes ago -
A CVE-MITRE-CISA-CNA Extravaganza
by
Nibbled To Death By Ducks
1 day, 6 hours ago -
Sometimes I wonder about these bots
by
Susan Bradley
1 day, 2 hours ago -
Does windows update component store “self heal”?
by
Mike Cross
17 hours, 1 minute ago -
Windows 11 Insider Preview build 27858 released to Canary
by
joep517
1 day, 20 hours ago -
Pwn2Own Berlin 2025: Day One Results
by
Alex5723
4 hours, 35 minutes ago -
Windows 10 might repeatedly display the BitLocker recovery screen at startup
by
Susan Bradley
8 hours, 16 minutes ago -
Windows 11 Insider Preview Build 22631.5409 (23H2) released to Release Preview
by
joep517
1 day, 23 hours ago -
Windows 10 Build 19045.5912 (22H2) to Release Preview Channel
by
joep517
1 day, 23 hours ago -
Kevin Beaumont on Microsoft Recall
by
Susan Bradley
1 day, 11 hours ago -
The Surface Laptop Studio 2 is no longer being manufactured
by
Alex5723
2 days, 7 hours ago -
0Patch, where to begin
by
cassel23
2 days, 1 hour ago -
CFPB Quietly Kills Rule to Shield Americans From Data Brokers
by
Alex5723
2 days, 21 hours ago -
89 million Steam account details just got leaked,
by
Alex5723
2 days, 8 hours ago -
KB5058405: Linux – Windows dual boot SBAT bug, resolved with May 2025 update
by
Alex5723
3 days, 5 hours ago -
A Validation (were one needed) of Prudent Patching
by
Nibbled To Death By Ducks
2 days, 20 hours ago -
Master Patch Listing for May 13, 2025
by
Susan Bradley
2 days, 7 hours ago -
Installer program can’t read my registry
by
Peobody
11 minutes ago -
How to keep Outlook (new) in off position for Windows 11
by
EspressoWillie
2 days, 18 hours ago -
Intel : CVE-2024-45332, CVE-2024-43420, CVE-2025-20623
by
Alex5723
3 days, 1 hour ago -
False error message from eMClient
by
WSSebastian42
3 days, 16 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.