Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: ExportAsFixedFormat werkt niet meer  (gelezen 6435 keer)

0 leden en 1 gast bekijken dit topic.

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.489
  • Geslacht: Man
  • Nobody is perfect, not even me...
ExportAsFixedFormat werkt niet meer
« Gepost op: 17 november 2012, 14:26:46 »
Hallo,

enkele maanden geleden schreef ik een eenvoudige macro, waarmee ik mijn, in Excel gemaakte facturen, kon wegschrijven naar een PDF-bestand met de code:
Citaat
Sub Mail()
Dim FacName As String
FacName = ActiveSheet.Range("J12").Value
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
FileName:="F:\Brieven aan Klanten\FactuurMail\" & FacName & ".pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=False, _
IgnorePrintAreas:=False, From:=1, To:=1, OpenAfterPublish:=True

End Sub

Dit werkte perfect tot over enkele dagen, maar nu dus niet meer. Er is niets fout aan de code, en toch krijg ik de melding:
Zie bijlage:


:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.295
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: ExportAsFixedFormat werkt niet meer
« Reactie #1 Gepost op: 17 november 2012, 14:43:18 »
SoftAid, Gaat het mis bij 1 document, of nu bij alle? Waar je 'ns naar moet kijken is de bestandsnaam die je vanuit de sheet opgeeft. Staan daar soms 'verboden' tekens in? Of heb je wijzigingen in het pad gemaakt in de Verkenner die je nog niet hebt meegenomen in het pad die je in de code hebt staan?

Groet, Leo

P.s. Hè hè... Na 6 jaar, of 74 maanden of 2263 dagen is het me eindelijk gelukt om op de 1000 posts te komen... Poe poe...   :D :D :D
______________________________

Groet, Leo

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.489
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: ExportAsFixedFormat werkt niet meer
« Reactie #2 Gepost op: 17 november 2012, 16:04:24 »
Hallo Leo,

proficiat met je 1000ste post 

Maar je weet dat niet de kwantiteit, maar wel de kwaliteit is die telt, en daarin blink jij toch wel uit.... 8)

Al je argumenten en raad waren al opgevolgd of gecontroleerd, maar ik heb de fout zelf gevonden.

Het werkblad waarvan ik een PDF wilde maken was reeds omgezet naar een PDF, onbewust, en als je van hetzelfde werkblad opnieuw een PDF wilt maken, dan kom je in Windows bij een melding: "Bestandsnaam bestaat reeds"....

Enkel krijg je dat niet van VBA, maar een weinig zeggende: "Mogelijk is het document nog geopend, of is een fout opgetreden bij het opslaan van het document". Tja, daar heeft hij ook wel gelijk in, er is een fout opgetreden bij het opslaan van het document, want je kan niet twee maal dezelfde bestandsnaam ingeven.

Ik ga nu toch enkele veiligheden inbouwen met wat MsgBox'en zodat dit niet meer kan gebeuren.

Bedankt voor het meedenken. :-*

Ik heb op jou gezondheid een lekker flesje wijn geopent, en wens je nogmaals proficiat met je 1000ste posting. Schol...  ;D

:) SoftAid :)             


PS: ik denk dat het je maar 2.262 dagen, 15 uur, 55 minuten en 53 seconden heeft gekost voor die 1000ste  ;D ;D ;D

Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Firebirdy

  • Ambassadeur
  • *****
  • Berichten: 2.408
  • Geslacht: Man
Re: ExportAsFixedFormat werkt niet meer
« Reactie #3 Gepost op: 17 november 2012, 16:48:10 »
(sorry voor de off-topic post) Ik zag je eerder vandaag op 999 staan ;). Dikke proficiat RedHead, en dankjewel voor alle hulp in de afgelopen 2262 à 2263 dagen! :love:

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.295
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: ExportAsFixedFormat werkt niet meer
« Reactie #4 Gepost op: 17 november 2012, 17:26:35 »
SoftAid, Firebirdy, dank voor de felicitaties. Op naar de volgende 1000 dan maar!  ;D

@SoftAid, Goed dat je 't hebt opgelost. Met de functies Len en Dir kan je in VBA redelijk makkelijk achterhalen of een bestand al bestaat. Een week of 2 geleden heb ik voor mijn werk een procedure geschreven die nog een tandje verder gaat. Als het bestand al bestaat wordt er een volgnummer toegekend aan de nieuw te creeren bestandsnaam net zo lang tot er een unieke bestandsnaam ontstaat. Die kan ik maandag wel ff posten als je wilt.

Groet, Leo
______________________________

Groet, Leo

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.489
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: ExportAsFixedFormat werkt niet meer
« Reactie #5 Gepost op: 19 november 2012, 11:46:34 »
Hallo Leo, Bedankt, ik kijk er al naar uit.

ik weet dat in een werkblad de functie =IF(Exsists(xxxx)) kan gebruikt worden, maar in VBA is dat misschien een ander verhaal.

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.295
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: ExportAsFixedFormat werkt niet meer
« Reactie #6 Gepost op: 19 november 2012, 23:33:55 »
SoftAid, hierbij dan mijn code....
Sub MoveOldFiles(NieuwBestand As String)
'procedure om een interface-folder opgeruimd te houden en de rest te moven naar een Old-folder


1     x = Dir("\\ggpsrv01\afd_beh\AID\Profielen-input\input acties*.xls")
2     'verwijder éérst alle oude interfacebestanden (move naar old)
3     Do Until x = ""  'ga net zo lang door tot er geen interface-bestand meer aanwezig is
4        'check of het bestand al bestaat in de Old-folder en voeg een versienummer toe als dit zo is
5        Do Until Len(Dir("\\ggpsrv01\afd_beh\AID\Profielen-input\Old\" & Replace(x, ".xls", "") & Versie & ".xls")) = 0
6            Versie = "_V" & IIf(IsEmpty(Versie), Versie, Replace(Versie, "_V", "")) + 1
7        Loop
8        'verplaats het bestaande bestand naar de Old-folder
9        Name "\\ggpsrv01\afd_beh\AID\Profielen-input\" & x As "\\ggpsrv01\afd_beh\AID\Profielen-input\Old\" & Replace(x, ".xls", "") & Versie & ".xls"
10        'haal een eventuele volgend bestaand bestand op om te testen en te verplaatsen
11        Versie = Empty
12        x = Dir("\\ggpsrv01\afd_beh\AID\Profielen-input\input acties*.xls")
13    Loop
   
End Sub
Voor het gemak heb ik er even regelnummers voor gezet zodat het uitleggen eenvoudiger wordt. Die nummers moet je vóór gebruik natuurlijk wél verwijderen.

Op regel 1 geef ik de variabele 'x' een waarde en wel die van het bestand waar ik naar ga zoeken. Dit heb ik met een asteriks gedaan zodat óók eventuele bestandsnamen met een versienummer worden gevonden. Het getoonde pad moet je uiteraard aanpassen naar een eigen pad (dit is er 1 bij mij op m'n werk naar een file-server).
Op regel 3 wordt de lus gestart. De lus moet net zolang doorgaan totdat de variabele x leeg is. Deze lus gebruik ik voor het verplaatsen van de bestanden naar de Old-directory (het gaat hier om een interface-bestand dat in een interface-directory wordt geplaatst. Vóór het plaatsen van de nieuwe wil ik dat de oude wordt veiliggesteld in een folder met de naam 'Old')
Op regel 5 gaan we checken of in die folder Old het bestand al bestaat. Dat gebeurt met de opdrachten Len en Dir. Als een bestand wordt gevonden is de string niet leeg en zal de functie Len een waarde opgeven die hoger is dan nul. Eerst wordt via de functie Replace de extensie van de naam gesloopt. Dan het versienummer van de variabele Versie toegevoegd om als laatste de extensie weer toe te voegen. De eerste keer van de 2e lus zal de variabele Versie nog leeg zijn.
Als het bestand - dus nog zonder toevoegingen - niet wordt gevonden geeft de functie Len een nul en zal de lus worden verlaten (er is immers géén versienummer nodig).
Op regel 6 kom je terecht als de bestandsnaam dus wél is gevonden. Dan wordt het tijd om een versienummer aan te gaan maken. Die variabele Versie is samengesteld uit een underscore en de letter V met een volgnummer. In de eerste keer dat de lus op deze regel komt  zal de variabele Versie dus de waarde "_V1" krijgen omdat die variabele nog leeg was (dus nul plus één = één). Omdat er nu een bestand is gevonden (anders had je niet op regel 6 gekomen) ga je nogmaals door de lus via regel 5. NU is de variabele Versie wél gevuld en wordt er getest of het bestand met die toevoeging óók bestaat. Zo ja, dan treedt regel 6 weer in werking én daarin óók de functie Replace om even die "_V" van het getal te slopen om zo weer een optelling te kunnen maken (1 + 1 = 2; de variabele Versie wordt dus: "_V2"). Dit blijft zich herhalen tot de "nieuwe naam" niet meer wordt gevonden.
Op regel 9 wordt het basisbestand in de interface-directory (die daar dus áltijd uniek is!!!) verplaatst via de methode Name ... As.  Je ziet dat het deel vóór As het pad is met de variabele x. Dat is dus het pad én de unieke - interface - bestandsnaam. In het 2e deel ná As zie je dat het pad verlengd is met de folder Old en dat via de functie Replace tijdelijke even de extensie wordt verwijderd, het versienummer via de variabele Versie wordt toegevoegd en tot slot wordt de extensie weer teruggezet. Het bestand is nu verplaatst.
Op regel 11 wordt de variabele Versie geleegd om weer schoon de lus in te kunnen gaan. Die eerst lus heb ik expres gemaakt om er voor te zorgen dat ook eventuele via de verkenner uit de Old-folder verplaatste bestanden (met versie-nummer), nogmaals worden verplaatst naar die Old-folder.
Op regel 12 wordt de variabele x gereset om dus verder schoon op zoek te kunnen gaan naar een volgend bestand dat begint met "input acties".
Op regel 13 wordt die lus weer ingezet (of niet)

Ik hoop dat je iets kan met deze bak tekst om zo die krentjes er uit te halen die voor jou geschikt zijn. Bij vragen weet je het forum vast wel weer te vinden.  ;)

Groet, Leo
______________________________

Groet, Leo

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.489
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: ExportAsFixedFormat werkt niet meer
« Reactie #7 Gepost op: 20 november 2012, 09:05:59 »
Hallo Leo,

Hartelijk dank voor de uitgebreide handleiding :) :love:

Ik ga deze vandaag nog aanpassen voor mijn dir's en dan testen.

Ik laat het je straks nog weten.

Nogmaals dank voor de code,

Groeten,

Theo

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.295
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: ExportAsFixedFormat werkt niet meer
« Reactie #8 Gepost op: 20 november 2012, 18:24:48 »
...en? Kom je d'r uit?  ;D

Groet, Leo
______________________________

Groet, Leo

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.489
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: ExportAsFixedFormat werkt niet meer
« Reactie #9 Gepost op: 20 november 2012, 18:47:17 »
Je bedoeld: "...en? kom je d'r aan toe? "  ;D ;D ;D

Vrij druk vanavond, enkele "Hulp op afstand"-werkjes....

Maar ik kom er aan toe vanavond, zeker weten...  8)

Greetings.

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.489
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: ExportAsFixedFormat werkt niet meer
« Reactie #10 Gepost op: 20 november 2012, 20:59:23 »
Hallo Leo,

ik heb de code even bestudeerd, en deze is heel interessant op voorwaarde dat je volgende wilt doen:
""procedure om een interface-folder opgeruimd te houden en de rest te moven naar een Old-folder""

Maar voor mij zit er niet veel tussen, omdat ik enkel wil controleren of een bestand dat ik aanmaak reeds bestaat.
Indien het reeds bestaat moet de macro na een MsgBox-waarschuwing afsluiten.

Dus voor mij voldoet volgende (gevonden bij Mr.Excel.com):

Sub Mail()

Dim FacName As String
FacName = ActiveSheet.Range("J12").Value    '= factuur-nummer
If Dir("F:\Brieven aan Klanten\FactuurMail\" & FacName & ".pdf"<> "" Then
        MsgBox "Het bestand: " & FacName & ".pdf bestaat reeds"
Else
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
        FileName:="F:\Brieven aan Klanten\FactuurMail\" & FacName & ".pdf", _
        Quality:=xlQualityStandard, IncludeDocProperties:=False, _
        IgnorePrintAreas:=False, From:=1, To:=1, OpenAfterPublish:=True
End If
End Sub

waar de instructies in het VET mij uit de penarie hielpen  :-[

If DIR(pad en bestandsnaam)<>"" then

Ik ga je macro zeker bewaren, want uit de praktijk leer ik meer en gemakkelijker dan in theorie.

Hartelijk dank voor je hulp  :love:.

:) SoftAid :)             


Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.295
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: ExportAsFixedFormat werkt niet meer
« Reactie #11 Gepost op: 20 november 2012, 22:17:41 »
SoftAid, Ik heb ooit geleerd dat het beter is om die dubbele instructie te gebruiken. Dus met Len én Dir. Weet ff niet helemaal waarom ook weer, maar het schijnt robuuster te zijn.  Dit was ook eigenlijk het stukje wat ik je wilde laten uitvoeren, maar raakte weer 'ns bevlogen en kon 't dus niet laten om je de rest ook aan te reiken.  :D
Verder ben ik in een stadium gekomen dat ik de gebruiker zo min mogelijk wil lastigvallen. Door alleen te vertellen dat het bestand al bestaat, moet de gebruiker dus zelf extra acties gaan verrichten. Door nu in 1x een volgnummer toe te voegen, voorkom je die interactie.

Maar het is goed dat het weer voor je is opgelost.  ;)

Groet, Leo
______________________________

Groet, Leo

 


www.combell.com