×
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

SolidWorks macro directory question
2

SolidWorks macro directory question

SolidWorks macro directory question

(OP)
Is there a way of selecting a directory in a SolidWorks macro?

I want the user to select a directory batch open and save a pdf copy to another directory. I can do every thing but the directory part.

I have done a similar prog in excel with the getfileopen method but SW doesent have this.

The only option left is to use SW working directory but I don’t like this.

I

RE: SolidWorks macro directory question

2
Folder Browser is not a licensed object for most VBA.  You need to use Windows API to get this functionality.

Try <http://www.allapi.net>

RE: SolidWorks macro directory question

CODE

'This module contains all the declarations to use the
'Windows 95 Shell API to use the browse for folders
'dialog box. To use the browse for folders dialog box,
'please call the BrowseForFolders function using the
'syntax: stringFolderPath=BrowseForFolders(Hwnd,TitleOfDialog)
'
'For contacting information, see other module

Option Explicit

Public Type BrowseInfo
     hwndOwner As Long
     pIDLRoot As Long
     pszDisplayName As Long
     lpszTitle As Long
     ulFlags As Long
     lpfnCallback As Long
     lParam As Long
     iImage As Long
End Type

Public Const BIF_RETURNONLYFSDIRS = 1
Public Const MAX_PATH = 260

Public Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long)
Public Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Public Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Public Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long

Public Function BrowseForFolder(hwndOwner As Long, sPrompt As String) As String
      
    'declare variables to be used
     Dim iNull As Integer
     Dim lpIDList As Long
     Dim lResult As Long
     Dim sPath As String
     Dim udtBI As BrowseInfo

    'initialise variables
     With udtBI
        .hwndOwner = hwndOwner
        .lpszTitle = lstrcat(sPrompt, "")
        .ulFlags = BIF_RETURNONLYFSDIRS
     End With

    'Call the browse for folder API
     lpIDList = SHBrowseForFolder(udtBI)
      
    'get the resulting string path
     If lpIDList Then
        sPath = String$(MAX_PATH, 0)
        lResult = SHGetPathFromIDList(lpIDList, sPath)
        Call CoTaskMemFree(lpIDList)
        iNull = InStr(sPath, vbNullChar)
        If iNull Then sPath = Left$(sPath, iNull - 1)
     End If

    'If cancel was pressed, sPath = ""
     BrowseForFolder = sPath

End Function

'sample usage in form
Private Sub cmdServerBrowse_Click()
 txtDatabasePath.Text = BrowseForFolder(me.hwnd, "Please select a Server folder.")
End Sub

RE: SolidWorks macro directory question

(OP)
Thanks
I have been trying to figure this out for a long time.
I dont think I would have got there on my own

RE: SolidWorks macro directory question

How do I select a file in a certain folder, in VBA?

RE: SolidWorks macro directory question

Do you mean that you want your user to be able to browse for and select the file of their choice?  If that is what you want you can use GetOpenFileName.

-handleman, CSWP (The new, easy test)

RE: SolidWorks macro directory question

Not exactly. I have a VBA program and I want to open a text file as a data file. Based on the data, I perform certain operations. This data file could have any name and could be located anywhere on the network. I need a way to select it when I run the program.

RE: SolidWorks macro directory question

In what application is the VBA written?  Most VBA-supporting programs (SolidWorks, Excel, Word, etc) have a GetOpenFileName type function.  It allows the user to browse to his heart's content.  The return of the function is just a string.  It doesn't actually open the file.  What you decide to do with that returned string is up to you.

-handleman, CSWP (The new, easy test)

RE: SolidWorks macro directory question

Sadly my application is for AutoCAD2004 and I couldn't find GetOpenFileName in their VBA. I may have to write it in VB6.  

RE: SolidWorks macro directory question

Now I get undefined function for GetOpenFileName in VB6. Is there something I need to set in the project references?

RE: SolidWorks macro directory question

If you are using VB6, you can implement the Common Dialog.  However, that's as much help as I can give you there as I've never used VB6.

-handleman, CSWP (The new, easy test)

RE: SolidWorks macro directory question

Question by OP:
How can I let my user select a directory/folder (not a file) through a browse type dialog in VBA.

Answer by TheTick:
You have to use Windows API to select a directory/folder.

New question by dogarila (summed up from several clarifying posts):
How can I let my user select a file using VB6

New answer:
Use the Common Dialog if you have VB6.

Alternate new answer:
Reference Excel library in your AutoCAD VBA macro and steal its GetOpenFileName functionality.  For an example, see thread559-215560: How can you use a text editor to determin SolidWorks File Version

-handleman, CSWP (The new, easy test)

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