Ik heb de wijzigingen aangebracht, maar het doet nog steeds hetzelfde, en als ik het hier opnieuw opstart of het bugs!
sans_titre.png
Ik heb de wijzigingen aangebracht, maar het doet nog steeds hetzelfde, en als ik het hier opnieuw opstart of het bugs!
Ah, ik denk dat het komt omdat je niet de backslash aan het einde van je pad hebt!!
Voeg dit toe om dit te verifiëren:
Als right(FileNamePathPDF,1) = "\" dan
FileNamePathPDF = FileNamePathPDF & "\"
Einde als
Je moet het voor je regel zetten:
Als Dir$(FileNamePathPDF) = "" dan
Nee Lucas, het is hetzelfde dat ik het niet deed zoals je zei, ik deed het zo.
FileNamePathPDF = "C:\ANGER\pdf\" & FileNamePDF & "\"
Maar dat verandert niets.
Aan de andere kant, hoe werkt het?
nErrors = SWmoddoc.SaveAs(BestandsnaamPDF) BestandsnaamPDF=045/1-2014-A
Wat moeten we tussen haakjes hebben?
Ik vind het niet en ik begrijp niet echt wat er op internet staat.
Zoals hierboven vermeld, moet uw PDFFileName-variabele de bestandsextensie bevatten!
Dus voor you.pdf
En misschien ook het pad?
Probeer het allebei.
Ik heb momenteel niet de mogelijkheid om het te testen.
Ik heb de 2 geprobeerd, wetende dat de variabele "FileNamePDF" oorspronkelijk de extensie heeft, maar het blijft hetzelfde, het slaat het op in de map waar het bestand actief is.
Dus je hebt niet geprobeerd om het doelpad (waar je het wilt opslaan) op te nemen in FileNamePDF?
Omdat een "opslaan als" zonder het pad het opslaat in de map waar het originele deel is!
Het zal zijn:
nErrors = SWmoddoc.SaveAs(FileNamePathPDF & FileNamePDF)
Door ervoor te zorgen dat er een backslash is tussen de 2 (in de eerste variabele of de tweede, het maakt niet uit).
En voor mijn bericht van 15:47, het ging over het maken van de map, niet over het opslaan van de PDF:
15 juli 2014 - 15:47 uur
Ah, ik denk dat het komt omdat je niet de backslash aan het einde van je pad hebt!!
Voeg dit toe om dit te verifiëren:
Als right(FileNamePathPDF,1) = "\" dan
FileNamePathPDF = FileNamePathPDF & "\"
Einde als
Je moet het voor je regel zetten:
Als Dir$(FileNamePathPDF) = "" dan
re re re
Ik durf niet aan te dringen, maar het advies van Fgirard is om zowel voor het gebruik van [Scripting.FileSystemObject] als voor [SaveAs] te volgen.
Welnu, nu kunnen we volharden in het gebruik van Dir, maar we moeten het beest een goede puinhoop maken, het onderscheid maken tussen bestanden en mappen !
Uw codefragment:
'Test of de map met het jaartal bestaat, zo niet, maak deze aan
Als Dir(PathFileNamePDF) = "" dan
MkDir PathFileNamePDF
Einde als
Ik vertaal: Als er geen bestand is op het adres [PathFileNamePDF], roep dan MkDir aan om de laatste submap in het adres [PathFileNamePDF] te maken.
Uw test is niet de juiste, dus MkDir kan crashen als de laatste submap van het adres bestaat (runtime-fout 75).
MkDir crasht ook als de voorlaatste submap van het adres niet bestaat (runtime-fout 76).
MkDir crasht ook als de schijf, bijvoorbeeld [R:] niet beschikbaar is, als ...
Aan de andere kant is MkDir ongevoelig voor het al dan niet plaatsen van een [\] aan het einde van het adres.
een licht gewijzigd programma uit de VBA-help (selecteer Dir en druk op F1 om de hulp te krijgen):
' Toont in het uitvoeringsvenster (Ctrl+G) de namen van de mappen die aanwezig zijn op [C:\A\]
' en als een van deze mapnamen "2014" is, stopt het programma
Dim MyFile, MyPath, MyName
MyPath = "C:\A\" ' Definieert het pad.
MyName = Dir(MyPath, vbDirectory) ' Krijgt de eerste invoer.
Do While MyName <> "" ' Start de lus.
' Negeert de huidige map en de
' met de huidige map.
Als MijnNaam <>." en MijnNaam <> ".. " Dan
' Gebruikt een vergelijking op bitniveau om te verifiëren dat MyName een map is.
Als (GetAttr(MyPath & MyName) en vbDirectory) = vbDirectory Dan
Debug.Print MyName ' Geeft de vermelding alleen weer als deze een map vertegenwoordigt.
Als MyName = "2014" Stop dan met 'de map '2014' bestaat!!
Einde als
Einde als
MyName = Dir ' Krijgt de volgende invoer.
Strik
dit stukje code is voordelig te vervangen door (zie Fgirard Opmerkingen):
Dim oFSO als Scripting.FileSystemObject
Dim oFld als map
Set oFSO = Nieuwe Scripting.FileSystemObject
Als oFSO.FolderExists(" "c:\A\2014") = Waar Dan
Stoppen
Einde als
OF zelfs eenvoudiger en niet verwonderlijk
Zon fs
Set fs = CreateObject("Scripting.FileSystemObject")
Als fs. FolderExists("c:\A\2014") dan
Stoppen
Einde als
Valt nog te bezien voor uw [SaveAs]
Ik heb net dit geprobeerd:
Dim swApp als SldWorks.SldWorks
Dim swModel als SldWorks.ModelDoc2
Zon Rep als Booleaanse
Stel swApp = Toepassing.SldWorks in
Stel swModel = swApp.ActiveDoc in
Dir = swModel.SaveAs("C:\A\toto.pdf") ' " C:\A" zou moeten bestaan, als "toto.pdf" bestaat, wordt het automatisch overschreven
En het werkt heel goed. >> Begin bij het debuggen met tekst tussen haakjes (hier "C:\A\toto.pdf"). Als het werkt, retourneert Dir True. Vervolgens kunt u proberen uw tekst te vervangen door een variabele (hier een variabele die als een tekenreeks wordt gedeclareerd).
A+
Hallo aan jou,
Dus ik probeerde een beetje wat je me gaf Caronmaxime
Zon fs
Set fs = CreateObject("Scripting.FileSystemObject")
Als fs. FolderExists("c:\A\2014") dan
Stoppen
Einde als
Aan de andere kant verliet ik mijn registratiefase door het volledige adres in te voeren.
EN HET WERKT !!
aan de andere kant en ja, er is gewoon een probleem, als de map bestaat, heb je "STOP" gemarkeerd, ik moet markeren wat zodat het de map niet opnieuw maakt en dat het normaal opslaat.
Ik voeg mijn code toe.
Zon fs
Set fs = CreateObject("Scripting.FileSystemObject")
Als fs. FolderExists(FileNamePathPDF) dan
Stoppen
Einde als
MkDir (FileNamePathPDF)
'------------------------------------------------------------------
'Test of het bestand al bestaat of bevestig
'en dan opnemen
Als Dir$(FileNamePathPDF) = FileNamePDF Dan bestaat 'Het bestand bestaat al'
Als MsgBox ("Het bestand: " & FileNamePDF & vbNewLine & " al bestaat. Wil je hem vervangen?", _
vbOKCancel + vbUitroep) = vbOK Dan
nErrors = SWmoddoc.SaveAs(BestandsnaamPadPDF + BestandsnaamPDF)
Anders
Als msgBox("PDF-bestand is niet gemaakt.", vbInformation) = vbOK sluit dan Sub '-------bericht en EXIT-------
Einde als
Anders
Als msgbox("Bestand: " & FileNamePDF & vbNewLine & " gaat worden aangemaakt", vbOKCancel + vbInformation) = vbOK dan
nErrors = SWmoddoc.SaveAs(BestandsnaamPadPDF + BestandsnaamPDF)
Anders
Als msgBox("PDF-bestand is niet gemaakt.", vbInformation) = vbOK sluit dan Sub '-------bericht en EXIT-------
Einde als
Einde als
Einde Sub
We moeten de tegenovergestelde voorwaarde testen:
Als fs. FolderExists(FileNamePathPDF) dan
Anders
MkDir (FileNamePathPDF)
Einde als
Perfect Lucas, het werkt!!
DANK U ALLEN VOOR UW HULP!!!