Attaching a JET database to an Excel Worksheet OR storing large binary data in a worksheet

A

Ant Waters

I am writing a VB DLL / xla that needs to be able to programmatically attach
a JET database to a worksheet, and then re-open it later on. This needs to
happen without user intervention. So far I have considered the following:

1) Using the Insert Object approach to store the database in an OLE
object...BUT:
(a) How do you do it programmatically?
(b) It seems to be application specific, so would only work if the user
had Access.
Is there a generic object packager that I have missed, and that can be
called through VB code, and that is guaranteed to be on all machines?

2) Reading the JET database into a byte array, converting to a string, and
saving in the workbook...
The read and convert seemed to work OK but all attempts to save to a
workbook failed, even if I just try to save the first 100 characters. I
guess that the string contains nasty characters that excel won't allow to be
saved to a cell? Is there anwhere else I can save it in a workbook?

A related question is whether it is possible to re-open the JET database
without first saving to a file i.e. open it in-memory only. I know this
isn't an Excel question but someone might know the answer.

Thanks in advance,

Ant Waters
 
K

Keith Willshaw

Ant Waters said:
I am writing a VB DLL / xla that needs to be able to programmatically attach
a JET database to a worksheet, and then re-open it later on. This needs to
happen without user intervention. So far I have considered the following:

1) Using the Insert Object approach to store the database in an OLE
object...BUT:
(a) How do you do it programmatically?

I dont believe there is OLEsupport for this method
(b) It seems to be application specific, so would only work if the user
had Access.
Is there a generic object packager that I have missed, and that can be
called through VB code, and that is guaranteed to be on all machines?

If you use a VB6 or .Net dll you can have all the database
query code in that using ADO and your client wont need
MS Access. The access db file would have to be save separately though
2) Reading the JET database into a byte array, converting to a string, and
saving in the workbook...
The read and convert seemed to work OK but all attempts to save to a
workbook failed, even if I just try to save the first 100 characters. I
guess that the string contains nasty characters that excel won't allow to be
saved to a cell? Is there anwhere else I can save it in a workbook?

This isnt a good option IMHO, the only way you could make it work would be
to
convert the binary data into Ascii format such as Mime or Base 64
but this is very inefficient
A related question is whether it is possible to re-open the JET database
without first saving to a file i.e. open it in-memory only. I know this
isn't an Excel question but someone might know the answer.

Yes, you can use ADO (or DAO) to open the database
and read the values into a recordset which can be manipulated
from either VB or VBA

Keith
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top