Question

Importing Excel worksheets into Visual Foxpro

Asked by: Rick100Lynne

I have sucessfully been using a command line to import data from an Excel worksheet(tab) and modify that data inside Foxpro V5. Now, the Excel Spreadsheet has multiple worksheets that I need to import. This is an automated program with no human intervention. I needed to get the names of the tabs in order to use the import command line with the SHEET parameter. This is what I use..."import from rat_loc+"\"+r_file xl5 sheet("Persons 25-54 (1)")". The rat_loc+"\"+r_file are varibles that I use to locate the xls file.
Whenever I use the OLE automation to get the names of the tabs like so..
oExcel = CREATEOBJECT("Excel.Application")
oWorkBook = oExcel.WorkBooks.Open(rat_loc+"\"+r_file)
oExcel.Visible = .F.
I then store the sheets to an array and close out the automation by using:
oExcel.Quit()
release oExcel
release all like o*
I then try to use my import command but I keep encountering a OLE share error. Is there something else I need to close? Is there a similar automation command that will duplicate the import?

Thanks in advance for your help.

Rick

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
2006-10-13 at 15:30:52ID22024149
Tags

excel

,

foxpro

,

import

,

visual

Topic

FoxPro Database

Participating Experts
3
Points
500
Comments
15

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. Visual FoxPro code for adding data into an EXCEL worksheet
    Hi there. Can any of you help me out.. how do you write a program code in Visual FoxPro(3, 5, or 6) wherein you can input/add a character, and/or, numeric data into an EXCEL worksheet/file?
  2. Copy different foxpro tables into different worksheets in Ex…
    How can I copy 3 different foxpro tables into 3 worksheets in one excel file?
  3. Create Worksheet from Spreadsheet?
    Hi Let me explain. I have an app that allows me to export to Excel 4 XLS spreadsheet file. I would like to take several of these and make them into one Worksheet with multiple sheets - each sheet being one of the spreadsheet that I have created. Is there away to do this? I am...
  4. Foxpro limitations
    Hi, A client has asked me to take a look at a foxpro backend and access frontend system. The issue the client is having is that no one has any foxpro experience as the developer has long since gone. I've yet to see the application but it would be good to know if there are a...
  5. Foxpro reading an empty Excel spreadsheet
    I have a FoxPro program reading an Excel workbook containing several sheets. When I use the "append from" command to read each sheet into a FoxPro dbf everything works fine as long as each sheet contains data. If a sheet is empty, data from the first non-empty she...
  6. Importing Data from Excel Spreadsheets into Foxpro databa…
    I have some clients who want to hand out an excel spreadsheet to their own clients do their work on, then send it back to our client for importing into our Foxpro based system. We are to help them create a standard for the spreadsheet, so I have some control over it, but I ...

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: CarlWarnerPosted on 2006-10-13 at 15:44:21ID: 17728282

Sometimes an object reference gets hung up.

Try to add one line in between what you already have and see if your situation improves.

oExcel.Quit()
oExcel=NULL
release oExcel

 

by: CarlWarnerPosted on 2006-10-13 at 15:55:23ID: 17728332

As far as importing, you seem to have the only viable way down to get that done.

How To Append Data from a Single Sheet of an Excel Workbook
http://support.microsoft.com/kb/176894/en-us

 

by: Rick100LynnePosted on 2006-10-13 at 16:37:29ID: 17728499

Carl,
Thanks for your input. I tried your three commands, but I still got a OLE 0x80030020 share violation. As for the Singl sheet import, I looked at the link and it showed the same command I mentined in my request: This is what I use..."import from rat_loc+"\"+r_file xl5 sheet("Persons 25-54 (1)")".

Rick

 

by: CarlWarnerPosted on 2006-10-13 at 18:40:53ID: 17728807

On the import-- yes, that is why I said you seem to have the only viable way to get that part done.

I'm still thinking on the share violation issue.

 

by: CarlWarnerPosted on 2006-10-13 at 20:09:50ID: 17729100

Try to run this bit of unvarnished code, with your two variables initialized to locate the filed and name, and see what results it gives you:

oExcel = CREATEOBJECT("Excel.Application")
oWorkBook = oExcel.WorkBooks.Open(rat_loc+"\"+r_file)
oExcel.Visible = .F.

lnSheetCt = oWorkBook.Worksheets.Count

import from rat_loc+"\"+r_file xl5 sheet(oWorkBook.Worksheets.Item(1).Name)

FOR ii = 2 TO lnSheetCt
      APPEND from rat_loc+"\"+r_file xl5 sheet(oWorkBook.Worksheets.Item(ii).Name)
ENDFOR

oExcel.Quit
oWorkBook=""
oExcel=""
RELEASE oWorkBook,oExcel

 

by: CarlWarnerPosted on 2006-10-13 at 20:26:08ID: 17729211

BTW, this bit of code assumes all sheets have the same format of data and that each sheet puts all of its data into the one table name.

Since I don't have your data or know your complete intent, I couldn't figure out whether or not you really want all of the data in one dbf as I have listed and as your IMPORT FROM command would do, OR whether you wanted each sheet's data in a separate table, in which case the IMPORT FROM command would have to have the r_file value adjusted to a different name so as to not overwrite the previous IMPORT command.

I hope this helps.

 

by: CaptainCyrilPosted on 2006-10-14 at 02:26:47ID: 17729996

What you need to do is read the sheet tabs names and store them in a cursor. Close the Excel Worksheet using oWorkBook.Close and then oExcel.Quit and then import the sheets. Otherwise you will have a share violation because you will have the worksheet open from 2 different places.

 

by: Rick100LynnePosted on 2006-10-14 at 07:13:55ID: 17730550

Carl, Captian,
Thanks for your input. Captian is correct. I went down your code:

oExcel = CREATEOBJECT("Excel.Application")  && This is OK
oWorkBook = oExcel.WorkBooks.Open(rat_loc+"\"+r_file)  && This is OK
oExcel.Visible = .F. && This is OK

lnSheetCt = oWorkBook.Worksheets.Count && This is OK

import from rat_loc+"\"+r_file xl5 sheet(oWorkBook.Worksheets.Item(1).Name) ---------- OLE error code 0x80030020: A share violation has occurred.

Captian, to answer your comment, this program is going into a business where the program has to read the tabs without any human intervention. The tabs on the spreadsheet they get can be from 1 to 50 different titles, but only 10 tabs per spreadsheet. The data format in each tab is identical.

Carl, I tried to close, release, null out all object references and then tried to import but still get the share violation.

I am still experimenting. Thanks

Rick
 

 

by: Rick100LynnePosted on 2006-10-14 at 07:43:21ID: 17730639

Carl, Captian,
I created an EXE outside Foxpro that looks at the sheets and creates a txt file of the sheet names. I then ran Fox interactively to open the program. It still gave an error violation. I then quit out of Foxpro and tried to delete the file. The system stated that Excel is running and has hooks on that file. That must be what is doing this. Since we stated:
oExcel.Visible = .F.
Excel does not appear for the user, but is still running even when we attempt to release all hooks through Foxpro. Even when Fox is completely shut down, Excel is still running in the background. How can we stop Excel from running remotely through Fox?

Thanks for helping!

Rick

 

by: DeepDanPosted on 2006-10-14 at 08:02:56ID: 17730699


oExcel.Quit   && This will close the excel application

 

by: CarlWarnerPosted on 2006-10-14 at 08:35:49ID: 17730813

Since the code worked for me with a share violation, you must have something odd about your configuration that I cannot debug sitting at my computer.  I ran it here against a spreadsheet that contains 20 separate sheets and no sharing violation was thrown out.

 

by: CaptainCyrilPosted on 2006-10-14 at 08:39:54ID: 17730823

Rick,

oExcel.Visible = .T. should bring the Excel visible.

What you need to do is you can count all the tabs in the Excel sheet and store them in a cursor.

For i = 1 TO oExcel.Workbook.Sheets.Count

get the names
store them in a cursor
close the workbook
shut down excel

SELECT cursor && this is where the sheet names are stored
SCAN ALL
    SELECT importcursor
    APPEND FROM ... && append from the excel sheet
ENDSCAN

 

by: CarlWarnerPosted on 2006-10-14 at 08:51:10ID: 17730867

What version of Visual FoxPro are you using?

Do you have more than one version of Excel on that PC or have you upgraded it to a newe version where more old entries could still reside in the registry also referencing an older version of Excel?

As I said, the code I listed works for me and does NOT create a share violation of any kind.

Also, I earlier mentionened a reference to the fact that the IMPORT FROM command will try to overwrite the first successful IMPORT FROM attempt because you are using the same file name in the way you initially had it setup.  Do you want separate tables/dbfs for each tabbed sheet within the spreadsheet?  OR do you want a separate table for each tabbed sheet.  If you want separate tables, you will have to change the value of r_file for each IMPORT FROM.  If you want all of the data in one table, you only issue IMPORT FROM one time to create the initial table and then use APPEND FROM to get the other tabbed sheets into that one newly created and now already open r_file table.

 

by: CarlWarnerPosted on 2006-10-14 at 08:54:51ID: 17730881

One more thought, since you seem to have a quick OLE sharing violation error, do you have anything other than text in the initial tabbed sheet like a graphics image or some odd embedded object?  This is angle beyond the multi-versions of Excel that could present a problem.  But, again, I dson't have your data and my test on Excel spreadsheet with data only contained in 20 tabbed sheets worked without error.

 

by: CarlWarnerPosted on 2006-10-14 at 09:46:51ID: 17731015

Thanks.

I'm not sure which part put you over the edge into a solution.  But, enough was covered where something should have helped the light bulb to come on.

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...