Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations waross on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

API Question for opening Excel

Status
Not open for further replies.

krywarick6

Automotive
Jun 9, 2003
138
In my feable attempts to open Excel from SolidWorks, I have tried to mirror some previous code and it works to an extent.

This code was written from Excel to open SolidWorks. It opens SolidWorks and then a given document. Assume variables have been named and defined.


‘Opens SolidWorks
Set swApp = CreateObject("SldWorks.Application")
swApp.Visible = True
Set Part = swApp.ActiveDoc

‘ Load model and expand window
Set Part = swApp.OpenDoc("folder location\file.SLDPRT", 1)
Set Part = swApp.ActivateDoc("Pulley.SLDPRT")
swApp.ActiveDoc.ActiveView.FrameLeft = 0
swApp.ActiveDoc.ActiveView.FrameTop = 0
swApp.ActiveDoc.ActiveView.FrameState = 1
swApp.ActiveDoc.ActiveView.FrameState = 1

========

What I want to achieve is the same things, but from the reverse direction. I want to open Excel from SolidWorks.

Set ExSheet = CreateObject("Excel.Sheet")
ExSheet.Application.Visible = True
Set exDoc = ExSheet.ActiveDoc

' Load Excel and expand window
Set exDoc = ExSheet.OpenDoc("folder location\file.xls", 1)
Set exDoc = ExSheet.ActivateDoc("Pulley.SLDPRT")
ExSheet.ActiveDoc.ActiveView.FrameLeft = 0
ExSheet.ActiveDoc.ActiveView.FrameTop = 0
ExSheet.ActiveDoc.ActiveView.FrameState = 1
ExSheet.ActiveDoc.ActiveView.FrameState = 1

I’m getting lost at the point where Excel opens. It opens Excel and a sheet, but stops at the bold text line. The debugger message box opens and displays “Object doesn’t support this method or property”. I believe that I’m using the wrong syntax to keep going in Excel so I can’t even tell if the rest would be correct.

Any suggestions? My API experience is very basic. I’m a cutter and paster from examples and try to get them to work. So anything would help.


Christopher Zona - Senior CAD Designer
Concord, Ontario
 
Replies continue below

Recommended for you

Your variable "ExSheet" is actually an excel application. So only properties and methods available in excel can can be called using the dot operator. There is no ActiveDoc object or method in Excel. Instead try

ExSheet.ActiveWindow.Left=0
ExSheet.ActiveWindow.Top=0

Better still, during development of your Solidworks project, establish a reference to Excel and then declare ExSheet as an Excel Application. For example

Dim ExSheet as New Excel.Applciation


You do not need the CreateObject function if the excel application variable is created this way. Now all methods,events and objects will be automatically exposed using the dot operator. After you have developed your project you can remove the ExSheet declaration and return to using the CreateObject function if desired.


 
cummings54 said:
Dim ExSheet as New Excel.Applciation
Be careful of using the Dim as New construct in VB or VBA. In VB6, the As New syntax creates an "auto-instancing" object variable, so every time the application references the Exsheet object, it has to check and see if Exsheet is Nothing and if so to create an instance of Exsheet.

The preferred technique is
Code:
Dim Exsheet as Excel.Application
Set Exsheet = New Excel.Application

Good Luck
johnwm
________________________________________________________
To get the best from these forums read faq731-376 before posting

Steam Engine enthusiasts:
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor