Problem z kopiowaniem i wklejaniem VBA

Witam

 

Opracowałem kod w VBA do kopiowania i wklejania niektórych dokumentów EPDM, ale aby to zadziałało, dokument musi być otwarty co najmniej raz, aby go rozpoznał.

Nie rozumiem dlaczego i jak tego uniknąć. Jeśli ktoś ma jakiś pomysł, jestem za tym.

 


 

Witam

Brak kodu i więcej szczegółów. Nie będziemy w stanie Ci pomóc...

1 polubienie

Witam

Oto koniec mojego kodu, o którym mowa.

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

Ustaw Zarządzanie plikami = CreateObject("Scripting.FileSystemObject")
Źródło = "C:\link źródłowy\" & Komórki(l, C). Wartość
Miejsce docelowe = "C:\link odbiorcy\" & Komórki(l, C). Wartość
FileHandlingCopyFile Źródło, miejsce docelowe

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

Kod jest zawarty w pętli i działa, ale problem polega na tym, że kopiowanie/wklejanie jest wykonywane tylko wtedy, gdy już otworzyłem dokument. Z pewnością EPDM blokuje się, jeśli dokument nigdy nie był otwierany.....

Witam

Myślę, że wynika to z faktu, że używasz metody Windows.

Spróbuj użyć tej metody EPDM: http://help.solidworks.com/2015/english/api/epdmapi/EPDM.Interop.epdm~EPDM.Interop.epdm.IEdmFolder8~CopyFile2.html

Mam tylko odległe wspomnienia z EPM i to tylko refleksja, która nie jest odpowiedzią... Ale nie powinieneś "otwierać" pokoju, zanim będziesz mógł cokolwiek zrobić? Więc może to wynikać z głupiego pytania o prawa do aktywacji?

2 polubienia

Wyodrębnij plik @coin37coin. :)

Edit: o ile mamy prawa do tych plików!

2 polubienia

Tak, to jest to, o co Benoit.LF ... Ostrzegałam, że to odległe wspomnienia ;)

Cze wszystkim

Całkiem Coin37coin, musisz rozpakować plik. Kod do wyodrębnienia jest dostępny w plikach API EPDM zgodnie z formaterem Axemble

2 polubienia

Witam

Przyjeżdżam dobrze po bitwie, ale jeśli może się przydać innym....

Dokumenty EPDM, które chcesz skopiować, niekoniecznie muszą być otwierane co najmniej raz lub wyodrębniane, ale po prostu repatriowane do lokalnej pamięci podręcznej, aby zostały uwzględnione przez funkcję kopiowania i wklejania.

Poniższy kod to C#, pozwolę Ci go przetłumaczyć na VBA:

Repozytorium EdmVault5 ;
vault = nowy EdmVault5();

Sklepienie. LoginAuto("nomducoffre", 0);

ciąg pełna nazwa = @"C:\bezpieczny\katalog\plik.sldprt"; Umieść nazwę pliku z całą ścieżką
string file = imię i nazwisko. Podciąg(pełna nazwa.LastIndexOf("\\") + 1);
string folder = pełna nazwa. Podciąg(0, pełna nazwa. Długość - plik. długość - 1);
                    
Folder IEdmFolder5 ;
folder = magazyn. GetFolderFromPath(folder);
Plik IEdmFile5 ;
plik = folder. GetFile(plik);
plik. GetFileCopy(to. Uchwyt. ToInt32(), "");

Wszystko, co musisz zrobić, to umieścić funkcję kopiowania i wklejania.

Pozdrowienia