Probleme de copier coller VBA

Bonjour,

 

J'ai développé un code en VBA pour copier coller certains documents d' EPDM mais pour que cela marche le document doit être ouvert au moins une fois pour qu'il puisse le reconnaitre.

Je comprends pas pourquoi et comment éviter ça. Si certains ont une idée je suis preneur.

 


 

Salut,

Sans code et plus de précisions. On ne pourra pas t'aider...

1 « J'aime »

Salut,

Volia le bout de mon code en question.

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

Set GestionFichier = CreateObject("Scripting.FileSystemObject")
Source = "C:\lien source\" & Cells(l, C).Value
Destination = "C:\lien destinataire\" & Cells(l, C).Value
GestionFichier.CopyFile Source, Destination

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

Le code est compris dans une boucle, et elle marche, mais le souci c'est que le copier/coller ne s'effectue que si j'ai dejà ouvert le document. Surement qu'EPDM bloque si le document n'a jamais été ouvert.....

Salut,

Je pense que cela vient du fait que tu utlises la methode Windows.

Essaye en utilisant cette methode EPDM : http://help.solidworks.com/2015/english/api/epdmapi/EPDM.Interop.epdm~EPDM.Interop.epdm.IEdmFolder8~CopyFile2.html

Je n'ai que des souvenirs lointain d'EPM, et ce n'est q'une réflexion sans être la réponse... mais il ne faut pas "déverouiller" la pièce avant de pouvoir faire quoi que ce soit ? Du coup, ça pourrait peut-être venir d'une bête question de droits à activer ?

2 « J'aime »

Extraire le fichier @coin37coin. :)

Edit : dans la mesure où on a les droits sur ces fichiers !

2 « J'aime »

Oui voilà ce truc là Benoit.LF ... j'avais prévenu que c'était de lointain souvenirs ;)

Bonjour à tous,

Tout à fait Coin37coin, il faut extraire le fichier. Le code pour extraire est disponible dans les fichiers d'API EPDM d'après un formateur Axemble

2 « J'aime »

Bonjour,

J'arrive bien après la bataille mais si cela peut servir à d'autres ....

Les documents d'EPDM que tu veux copier ne doivent pas forcément être ouvert au moins une fois ou extrait mais tout simplement rapatriés dans le cache local pour être pris en compte par la fonction de copier coller.

Le code suivant est C#, je te laisse le traduire en VBA :

EdmVault5 vault;
vault = new EdmVault5();

vault.LoginAuto("nomducoffre", 0);

string nomcomplet = @"C:\coffre\repertoire\fichier.sldprt"; //mettre le nom du fichier avec tout le chemin
string fichier = nomcomplet.Substring(nomcomplet.LastIndexOf("\\") + 1);
string dossier = nomcomplet.Substring(0, nomcomplet.Length - fichier.Length - 1);
                    
IEdmFolder5 folder;
folder = vault.GetFolderFromPath(dossier);
IEdmFile5 file;
file = folder.GetFile(fichier);
file.GetFileCopy(this.Handle.ToInt32(), "");

Reste plus qu'à mettre ta fonction de copier coller.

Cordialement