Question

Force Data Type on import - Access 2003

Asked by: DoeSmith

Ok, here's a tricky one (at least I think so). I'm using vba to import an excel file into a table in Access 2003. I need to dictate that all fields should be imported as text. The only thing I could think of would be to import the first line of the excel file (the column headers) as headers and data to force text. Any better ways or hoe to do my crazy workaround?

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2009-10-13 at 14:03:10ID24809300
Tags

ms access 2003 vba excel datatype

Topics

Microsoft Access Database

,

Access Coding/Macros

Participating Experts
3
Points
500
Comments
24

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. Image1.Picture = LoadPicture(...) fails in VBA --…
    I need a way to display the images that are stored in an ImageList on my form. The ImageList absolutely must be populated at run-time. One of the ways I have tried to do this is to create an Image and ImageList control on the form and then in the event handler for a command ...
  2. tricky CHMOD
    this is a bit of a tricky situation, so lemme explain first: compaq desktop, openBSD 3.5 samba (newest version as of 2 weeks ago) vsftpd (nothing less, again, latest version) samba configured for 2 users (maybe more, all have equal permissions) /share mounted on a 40gb hd /...
  3. medical dictation
    I have an office in one city and ina nother we have a dication office. I want to be able to dictate on a digital recorder here and then transmiot that data to our dicatation office. What I want to know is what woudleb the best way to do this and it has to be hippa compliant....

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: BellonePosted on 2009-10-13 at 14:18:18ID: 25564851

You could have a 'tranfer' table in Access with all fields pre-formatted as text.  The Excel data would be imported into it, then moved out again to its ultimate destination, leaving your transfer table ready for the next import.

 

by: boag2000Posted on 2009-10-13 at 19:03:50ID: 25566692

Or perhaps run some code like this in Excel to:
Save the workbook
Copy the active Worksheet
Format all cells in the copied sheet to Text
Save the Workbook again.
Then import this Copied sheet to Access.

    ActiveWorkbook.Save
    ActiveSheet.Copy Before:=Sheets(1)
    Cells.Select
    Selection.NumberFormat = "@"
    ActiveWorkbook.Save

JeffCoachman

 

by: budoratPosted on 2009-10-14 at 02:48:53ID: 25568621

Hi,

I would create an import specification to be used whe importing your data. The best way to achiev this is to start to manually import your data, then when you have the Import Text Wizard up select the advanced tab, specify your criteria (eg all txt fields) then save the import spec. Then using your vba import your data maing refernce to your import spec.

The example below imports data from a txt file called "INO28783_AIRN*.txt" usinf an import specification called "ImportSpec_PMKeyS_INO28783_AIRN"

Good luck

Kev

'Import new data set
    strFile = Dir(varPMKeySFilePath & "INO28783_AIRN*.txt", vbNormal)
    Do While strFile <> ""
        If strFile <> "." And strFile <> ".." Then
        DoCmd.TransferText acImportDelim, "ImportSpec_PMKeyS_INO28783_AIRN", "tblPMKeyS_AIRN", varPMKeySFilePath & strFile, False, ""
        End If
        strFile = Dir()
    Loop

                                              
1:
2:
3:
4:
5:
6:
7:
8:

Select allOpen in new window

 

by: DoeSmithPosted on 2009-10-14 at 05:31:24ID: 25569694

Here's the other catch. There are no preset fields in the spreadsheet. They will vary from file to file. Here's a little more info on what I'm using this for. I built a database to clean addresses for form letters. All files will contain a name, 1 or 2 address fileds, city, state, and zipcode, but may or may not have additional fields, and there's no standardization to naming conventions. Once the user imports the file, there are drop down boxes to match up fields, for instance there's a drop down for zip code, and they can select the corresponding field in their data (zip, zip_code, zipcode, etc.). The problem is that if their data has the first 100 rows of data with just a 5 digit zip code and then after that has a 9 digit, then it will throw those out because access has assigned it to a numeric field, so 55555-1234 errors out.

 

by: DoeSmithPosted on 2009-10-14 at 05:34:54ID: 25569720

Also, any coding must be within my database. This database will be used to process data for many different spreadsheets by several users of varying skill levels. Coding in the excel spreadsheet isn't an option.

 

by: BellonePosted on 2009-10-14 at 06:23:14ID: 25570135

Nightmare!  Can you not give all users the same spreadsheet, with a uniform set of fields?  Otherwise you are going to have to process each one separately.

 

by: DoeSmithPosted on 2009-10-14 at 06:48:16ID: 25570394

That's the problem. The origonal data is coming from other people and varying originating locations, so we have no control as to what format it arrives in.

 

by: BellonePosted on 2009-10-14 at 07:14:44ID: 25570683

In which case, in your position, I think I should consider renaming the relevant columns in the incoming spreadsheets to conform with your import table, rather than trying to cover all possible eventualities in Access.  

Having done that, I would first import them into a temporary Access table.  Then append from the temporary table to your main import table, using a query which only picks out the fields you need.

I have done this where we had spreadsheets of audiometry tests coming in from all sorts of places in all sorts of formats, and it seemed to be the most time-effective solution.

 

by: boag2000Posted on 2009-10-14 at 07:21:34ID: 25570794

budorat,

The asker is bringing in Excel files, which, AFAIK, do not have Import Specs...

;-)

Jeff

 

by: boag2000Posted on 2009-10-14 at 07:23:03ID: 25570812

<Also, any coding must be within my database. This database will be used to process data for many different spreadsheets by several users of varying skill levels. Coding in the excel spreadsheet isn't an option.>

You can run code from Access to format an Excel sheet

 

by: boag2000Posted on 2009-10-14 at 07:24:19ID: 25570819

It will basically be my code but called from Access and the specific file will be accessed.

 

by: DoeSmithPosted on 2009-10-14 at 07:34:36ID: 25570949

Ok here's my thought:
1. Import the Excel into my table which will create all needed columns
2. Delete the data from the table
3. Change the datatypes of all columns to text
4. Reimport the data into the updated table

It's not pretty, but I think it will work. My only concern is that it will throw a type mismatch error on the second import. Not sure if it will or not till I do it.

Boag - You have an interesting concept of using code within my database to modify the spreadsheet being imported. If I could do that then I could change the datatype before it is imported which would be Ideal. How would I do that? Would I have to know the column names or # of columns ahead of time, or could I handle that on the fly?

 

by: DoeSmithPosted on 2009-10-14 at 07:41:30ID: 25571030

Ok, so my thought didn't work. When I changed the field to text and then tried to reimport, it kicked out the ones that were stored as numeric...

 

by: boag2000Posted on 2009-10-14 at 07:54:56ID: 25571209

Give me a few hours...

 

by: BellonePosted on 2009-10-14 at 08:08:11ID: 25571391

In the audiometry db mentioned above at 25570683, I had a procedure whereby the user picks the name of the incoming spreadsheet from a common dialog.  It is then checked to see if it has column headings corresponding to the names in our import table (regardless of whatever other columns it contains).  If so, the relevant fields are imported, using the routine I have outlined.  If not, a message is put up, telling the user the spreadsheet needs to by manually inspected before import.

 

by: DoeSmithPosted on 2009-10-14 at 08:10:04ID: 25571420

UPDATE: Not behaving as I thought. Access 2003 is only looking at the first 25 or so records. If all of the 1st 25 are the same datatype, it treats the entire column as a single datatype. If there are mixed datatypes in the first 25 records, then it will treat them all individually. This still doesn't help me unless I can figure out a way to add 2 rows to lines 2 & 3 of any spreadsheet that I'm importing.

 

by: DoeSmithPosted on 2009-10-14 at 11:45:29ID: 25573699

A different approach... I found that if I import the spreadsheet without identifying the first row as headers, then it makes that row data, and forces text imports and all my data comes in fine. Is there a way to then programatically change the field names to whatever value is in the first row of data and then delete the row?

 

by: boag2000Posted on 2009-10-14 at 19:10:01ID: 25576720

Not as long as the Number of fields can vary from table to table, AFAICT.

But let's see what the other experts say...

Ok, so you are not interested in my suggestion from here:
http:#a25566692
Because this works fine for me once I modify it to work from Access.

JeffCoachman

 

by: DoeSmithPosted on 2009-10-15 at 06:49:47ID: 25580498

Boag: I'm open to anything that will work. How do I call that from my database? I'm using the docmd.transferspreadsheet to import it. I've never tried to run code for excel before, much less in access to modify an excel doc. how would that work?

 

by: boag2000Posted on 2009-10-15 at 09:13:40ID: 25582060

Just run this modified code in your Database:

'Create the Variables and Objects
Dim appXL As Excel.Application
Dim wrkbkBook As Workbooks
   
'Set the variables and Objects.
Set appXL = New Excel.Application
Set wrkbkBook = appXL.Workbooks

    ' Open the Excel file.
    wrkbkBook.Open "C:\YourFolder\YourExcelFile.xls"
    ' Show the Excel Application.
    appXL.Visible = False
   
    'Copy the sheet
    ActiveSheet.Copy Before:=Sheets(1)
    'Select all the cells in the copied sheet
    Cells.Select
    'Format all cells to Text
    Selection.NumberFormat = "@"
    'Save the Excel File
    ActiveWorkbook.Save
   
    'Close the file.
    wrkbkBook.Close
    'Quit Excel.
    appXL.Quit

'Close the object references.
Set wrkbkBook = Nothing
Set appXL = Nothing
'-------------------------------------------------

You can adjust: " "C:\YourFolder\YourExcelFile.xls"
... for your specific Excel file and path.

Then simply import this copied sheet to Access.

Obviously you would want to run this on a test database and a test Excel file to test and tweak it.

You can see the code is commented, so you can see what is happening.

;-)

JeffCoachman

 

by: DoeSmithPosted on 2009-10-15 at 10:18:49ID: 25582611

I'm getting a "User Defined Data type not defined" error on

Set appXL = New Excel.Application

 

by: boag2000Posted on 2009-10-15 at 11:10:48ID: 25583143

Oh,

Sorry!

In your Access VBA Editor  you need to add a reference to the:
"Microsoft Access Excel Object Library"

Open the VBA Editor in Access and Click: Tools-->References.
The check ON the box for:
"Microsoft Access Excel Object Library"

;-)

JeffCoachman

 

by: DoeSmithPosted on 2009-10-30 at 13:23:27ID: 25706498

I can't find the "Microsoft Access Excel Object Library". It's not in the list. How do I get it?

 

by: boag2000Posted on 2009-10-30 at 17:06:35ID: 25707630

Ooops again!

:-O

It is called:
   
    Microsoft Excel 11.0 Object Library

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...