Ik ben geen VBA-pro, ik heb net gesleuteld, maar het werkt. Ik heb ook een BrowseFolder geplaatst.
Optie Expliciete
Dim swApp als SldWorks.SldWorks
Dim swModel als SldWorks.ModelDoc
Dim sFileName als tekenreeks
Dim Bestandsnaam Als String
Dim pad als snaar
Dim newPath als tekenreeks
Dim swLayerMgr Als SldWorks.LayerMgr
Dim swLayer als SldWorks.Layer
Dim nErrors zo lang
Dim nWaarschuwingen zo lang mogelijk
Dim boolstatus als Booleaanse
Dim longstatus Zo lang
Dim lange waarschuwingen zo lang mogelijk
Privé Const BIF_RETURNONLYFSDIRS zo lang = &H1
Privé Const BIF_DONTGOBELOWDOMAIN zo lang = &H2
Privé Const BIF_RETURNFSANCESTORS zo lang = &H8
Privé Const BIF_BROWSEFORCOMPUTER zo lang = &H1000
Privé Const BIF_BROWSEFORPRINTER zo lang = &H2000
Privé Const BIF_BROWSEINCLUDEFILES zo lang = &H4000
Privé Const MAX_PATH zo lang = 260
Functie BrowseFolder (optioneel bijschrift als tekenreeks, optionele InitialFolder als tekenreeks) als tekenreeks
Map dimmen als object
Dim F als map
Dim ShellApp als object
Set ShellApp = CreateObject("Shell.Application")
Set F = ShellApp.BrowseForFolder(0&, Bijschrift, BIF_RETURNONLYFSDIRS, InitialFolder)
Zo niet, dan is F niets, dan is
Als F = "Desktop" dan
BrowseFolder = Over ("GEBRUIKERSPROFIEL") & "\Bureaublad"
Anders
BrowseFolder = F.Items.Item.Path
Einde als
Einde als
Functie beëindigen
Sub hoofd()
Stel swApp = Toepassing.SldWorks in
' De bronmap kiezen
Path = BrowseFolder(Caption:="Selecteer bronmap")
Als pad = "" dan
'MsgBox "Selecteer bronmap"
Einde
Anders
Pad = Pad & "\"
Einde als
sFileName = Dir(Pad & "*.sldprt")
Doen tot sFileName = ""
Stel swModel in = swApp.OpenDoc6(Pad + sFileName, swDocPART, swOpenDocOptions_Silent, "", nErrors, nWarnings)
Stel swModel = swApp.ActiveDoc in
longstatus = swModel.ImportDiagnosis(Waar, Onwaar, Waar, 0)
Dim swErrors zo lang mogelijk
Dim swWaarschuwingen zo lang mogelijk
boolstatus = swModel.Save3(1, swErrors, swWarnings)
swApp.CloseDoc swModel.GetTitle
Set swModel = Niets
sFileName = Dir
Strik
Einde Sub