×
INTELLIGENT WORK FORUMS
FOR ENGINEERING PROFESSIONALS

Log In

Come Join Us!

Are you an
Engineering professional?
Join Eng-Tips Forums!
  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It's Free!
  • Students Click Here

*Eng-Tips's functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

Posting Guidelines

Promoting, selling, recruiting, coursework and thesis posting is forbidden.

Students Click Here

Jobs

API Question for opening Excel

API Question for opening Excel

API Question for opening Excel

(OP)
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

RE: API Question for opening Excel

See my reply in the SolidWorks forumn.

SA

RE: API Question for opening Excel

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.


RE: API Question for opening Excel

Quote (cummings54):

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: www.essexsteam.co.uk

Red Flag This Post

Please let us know here why this post is inappropriate. Reasons such as off-topic, duplicates, flames, illegal, vulgar, or students posting their homework.

Red Flag Submitted

Thank you for helping keep Eng-Tips Forums free from inappropriate posts.
The Eng-Tips staff will check this out and take appropriate action.

Reply To This Thread

Posting in the Eng-Tips forums is a member-only feature.

Click Here to join Eng-Tips and talk with other members!


Resources