Solved

Excel Chart in VB6

Posted on 2001-06-16
9
705 Views
Last Modified: 2008-03-17
I would like to be able to display an Excel chart on a VB6 form. Could someone please point me in the right direct as to how to code the connection. L'd prefer to learn how to code it rather than using a bound control. Thanks in advance,

Dys
0
Comment
Question by:Dys060801
  • 5
  • 3
9 Comments
 
LVL 33

Expert Comment

by:hongjun
Comment Utility
Try this. To load a excel file, you need to create a DSN named "Excel" that points to your that file. Note that when you click on the Open button from the below program, it will pop up a open dialog. This is a bit redundant since the file to be opened is actually based on the DSN pointer and not the file you choose. You can always remove the common dialog control and the relevant code to get away of the open dialog.

http://www.vbdiamond.com/Sources/ViewSource.asp?File=1&ID=16431

hongjun
0
 

Author Comment

by:Dys060801
Comment Utility
Hi hongjun,

Thanks for your response. It gave me a little bit of help in understanding the relationship between Excel and VB. However, it didn't give me help in the specific area I'm interested in. Let me explain.

I am developing a VB application connected to an MS Access database. A SQL query in my application will return a group of numbers to my application in the form of a recordset (which I could convert to an array).

I would like to send those numbers in the recordset to an Excel spreadsheet, have Excel produce a Pie Chart and then have the Pie Chart returned to my application and displayed on a Form in my application.

I am assuming that returning and displaying a Pie Chart (probably an object) is different than returning a spreadsheet depositing the data into an ADO Recordset.

Hope this clarifies the problem I have.

Thanks,
Dys
0
 
LVL 1

Expert Comment

by:Sorklin
Comment Utility
Why not embed an OLE object in your form and make it an excel object.  Then you channel the data into that, run the graph and display the result when its ready?

I've done that with word objects.  There are controls you can add to the form, I think you want OLE/COM object and check the properties.

I'm away from work, otherwise I'd check out exactly what to do...
0
 

Author Comment

by:Dys060801
Comment Utility
Thanks for the response Sorklin. Its seems to be getting closer to the solution I need. However, I'd appreciate some direction on the object insertion and coding involved when you are back at work. Haven't played around much with OLE/COM objects. I'm not in a hurry on this one, I can wait...

Dys  :)
0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 
LVL 1

Expert Comment

by:Sorklin
Comment Utility
I'm working on this, so give me a bit of time...
0
 

Author Comment

by:Dys060801
Comment Utility
No problem I'll wait.
0
 
LVL 1

Accepted Solution

by:
Sorklin earned 50 total points
Comment Utility
Okay.  I created a form with an OLE object (oleXLChart) and a command button (command1).  When I created the Ole object, I set it to New, Excel Chart (though that really doesnt matter).  Then I pasted the following code into the code sheet for the form:
************************************************
Option Explicit

Dim xlData As Excel.Application

Private Sub Command1_Click()

    'OleXLChart is an ole object that you've set to be a MS Excel chart.
    'The linking below will supply it with data and the chart.
   
   
    'You want to keep track of what your range would be with the data
    'place it after the temporary file you made.
    oleXLChart.SizeMode = 3 'zoom
    oleXLChart.CreateLink "c:\temp\xldata.xls", "A1:B3"
    oleXLChart.Visible = True
   
End Sub

Private Sub Form_Load()

    Set xlData = New Excel.Application
   
    With xlData
        .Workbooks.Add
        .Visible = True
       
        'This is where you would paste the data you've gathered
        'from whatever sources.
        .ActiveSheet.Paste
        .Charts.Add
        'Do whatever you need to to format the file correctly.
        .ActiveChart.ChartType = xlPie
       
        'Save the file in a temporary place so we can create a link.
        'Check first for the existence of the file and if so, delete it.
        If Dir("c:\temp\xldata.xls") <> "" Then
            Kill "c:\temp\xldata.xls"
        End If
        .ActiveWorkbook.SaveAs FileName:="c:\temp\xldata.xls"
    End With 'xlData
   
End Sub

Private Sub Form_Unload(Cancel As Integer)

    xlData.Quit
   
    Set xlData = Nothing

         If Dir("c:\temp\xldata.xls") <> "" Then
            Kill "c:\temp\xldata.xls"
        End If

End Sub
************************************************

This is a big kludge and there is a lot of room for clean up and customizing.  But the idea is that I've created an excel object, written the data to it.  In that excel object, I've created and formatted the chart the way I would like it to be seen.  Then I've temporarily saved the file.  When the user clicks command1 button, the ole form is linked to the file and the graph is displayed.  Works nicely on my system.

There are lots of things I didn't set and lots of things that can be cleaned, tweaked and prodded, but this might get you pointed in the right direction.
0
 

Author Comment

by:Dys060801
Comment Utility
Thanks very much Sorklin. I'm cellphone communicating right now, but when I get back to my notebook later today I'll give it a try.
0
 

Author Comment

by:Dys060801
Comment Utility
Thanks Sorklin. It took me a while to get back to this problem, but after applying your solution with a few minor adjustments it worked fine. Many thanks!
0

Featured Post

Maximize Your Threat Intelligence Reporting

Reporting is one of the most important and least talked about aspects of a world-class threat intelligence program. Here’s how to do it right.

Join & Write a Comment

Have you ever wanted to restrict the users input in a textbox to numbers, and while doing that make sure that they can't 'cheat' by pasting in non-numeric text? Of course you can do that with code you write yourself but it's tedious and error-prone …
When designing a form there are several BorderStyles to choose from, all of which can be classified as either 'Fixed' or 'Sizable' and I'd guess that 'Fixed Single' or one of the other fixed types is the most popular choice. I assume it's the most p…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…

744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now