Witam
Oto fragment programu, który powinien być w stanie służyć jako punkt wyjścia, jest to język C#, więc należy go przetłumaczyć na VBA:
prywatna aplikacja SldWorks SWapp;
private string msg = ciąg. Pusty;
prywatny ciąg katalogowy = Application.StartupPath + "\\";
private void Button6Click(nadawca obiektu, EventArgs e)
{
if (SWapp == null)
{
SWapp = (SldWorks)Activator.CreateInstance(Type.GetTypeFromProgID("SldWorks.Application"));
}
Część ModelDoc2;
Część = ((ModelDoc2)(SWapp.ActiveDoc));
ciąg newFile = Part.IGetDependencies2(prawda, prawda,prawda);
msg = nowyPlik + "\n";
ModelDoc2 swDocTemp = null;
int longstatus = 0;
int longwarnings = 0;
swDocTemp = ((ModelDoc2)(SWapp.OpenDoc6(newFile, (int)swDocumentTypes_e.swDocASSEMBLY, 0, "", ref longstatus, ref longwarnings)));
TraverseAssembly(swDocTemp);
MessageBox.Show(msg);
}
public void TraverseAssembly(ModelDoc2 swDocTemp)
{
Cursor.Current = System.Windows.Forms.Cursors.AppStarting;
ConfigurationManager swConfMgr;
konfiguracja swConf;
Komponent2 swRootComp;
swConfMgr = (Menedżerkonfiguracji )swDocTemp.ConfigurationManager;
swConf = (Konfiguracja)swConfMgr.ActiveConfiguration;
swRootComp = (Komponent2)swConf.GetRootComponent3(prawda);
TraverseComponent(swRootComp);
}
private void TraverseComponent(Component2 swComp)
{
obiekt[] vChildComp;
Komponent2 swChildComp;
długa i = 0;
vChildComp = (obiekt[])swComp.GetChildren();
for (i = 0; i < vChildComp.Length; i++)
{
swChildComp = (Komponent2)vChildComp[i];
TraverseComponent(swChildComp);
Jeśli (msg. Contains(swChildComp.GetPathName()) == false)
{
msg = msg + swChildComp.GetPathName() + "\n";
ModelDoc2 swDocTemp = default(ModelDoc2);
ModelDocExtension swModelDocExt = default(ModelDocExtension);
int longstatus = 0;
int longwarnings = 0;
swDocTemp = ((ModelDoc2)(SWapp.OpenDoc6(swChildComp.GetPathName(), (int)swDocumentTypes_e.swDocPART, 0, "", ref longstatus, ref longwarnings)));
string nazwa_pliku krokowego = katalog + swChildComp.Name2 + ".krok";
swModelDocExt = (ModelDocExtension)swDocTemp.Extension;
swModelDocExt.SaveAs(nazwa_pliku_kroku, 0, (int)swSaveAsOptions_e.swSaveAsOptions_Silent, null, ref longstatus, ref longwarnings);
SWapp.CloseDoc(swChildComp.GetPathName());
}
}
}
Pozdrowienia