Probleem van kopiëren en plakken VBA

Hallo

 

Ik heb een code ontwikkeld in VBA om sommige EPDM-documenten te kopiëren en te plakken, maar om dit te laten werken, moet het document minstens één keer worden geopend om het te herkennen.

Ik begrijp niet waarom en hoe ik dit kan vermijden. Als sommigen een idee hebben, ben ik er helemaal voor.

 


 

Hallo

Geen code en meer details. We kunnen je niet helpen...

1 like

Hallo

Hier is het einde van mijn code in kwestie.

....................

Set FileManagement = CreateObject("Scripting.FileSystemObject")
Bron = "C:\bron link\" & Cellen(l, C). Waarde
Bestemming = "C:\ontvangerslink\" & Cellen(l, C). Waarde
FileHandlingCopyFile Source, doel

................

De code is opgenomen in een lus en het werkt, maar het probleem is dat het kopiëren/plakken alleen wordt gedaan als ik het document al heb geopend. EPDM blokkeert toch als het document nooit is geopend.....

Hallo

Ik denk dat het komt door het feit dat je de Windows-methode gebruikt.

Probeer deze EPDM-methode te gebruiken: http://help.solidworks.com/2015/english/api/epdmapi/EPDM.Interop.epdm~EPDM.Interop.epdm.IEdmFolder8~CopyFile2.html

Ik heb alleen verre herinneringen aan EPM, en het is slechts een reflectie zonder het antwoord te zijn... Maar je moet de kamer niet "ontgrendelen" voordat je iets kunt doen? Dus, misschien kan het komen van een domme vraag over rechten om te activeren?

2 likes

Pak het @coin37coin bestand uit. :)

Edit: zolang we de rechten hebben op deze bestanden!

2 likes

Ja, dat is het ding Benoit.LF ... Ik had gewaarschuwd dat dit verre herinneringen waren;)

Hoi allemaal

Heel Coin37coin, je moet het bestand uitpakken. De te extraheren code is beschikbaar in de EPDM API-bestanden volgens een Axemble-formatter

2 likes

Hallo

Ik kom ruim na de strijd aan, maar als het nuttig kan zijn voor anderen....

De EPDM-documenten die u wilt kopiëren, hoeven niet per se minstens één keer te worden geopend of te worden uitgepakt, maar hoeven alleen maar te worden gerepatrieerd naar de lokale cacheom in aanmerking te worden genomen door de kopieer- en plakfunctie.

De volgende code is C#, ik laat je het vertalen naar VBA:

EdmVault5 kluis;
vault = nieuwe EdmVault5();

Gewelf. LoginAuto("nomducoffre", 0);

volledige naam van de tekenreeks = @"C:\safe\directory\file.sldprt"; Zet de bestandsnaam met al het pad
Tekenreeksbestand = volledige naam. Subtekenreeks (volledige naam.LastIndexOf("\\") + 1);
tekenreeksmap = volledige naam. Subtekenreeks(0, volledige naam. Lengte - bestand. Lengte - 1);
                    
IEdmFolder5 map;
map = kluis. GetFolderFromPath(map);
IEdmFile5-bestand te openen;
bestand = map. GetFile(bestand);
bestand. GetFileCopy(dit. Handvat. ToInt32(), "");

Het enige dat u nog hoeft te doen, is uw kopieer- en plakfunctie in te voeren.

Vriendelijke groeten