foutje met printen naar .pdf

Status
Niet open voor verdere reacties.

assessor

Gebruiker
Lid geworden
7 jan 2007
Berichten
184
In een Excel "Dashboard" wil ik een pagina van een (HIDDEN) sheet naar .pdf exporteren.

Dat lukt op deze mainier:
Code:
Dim fn As String
   With Sheets("_InfoLetter")
    .Visible = True
 
    fn = "I:\BM_H14\Projecten\C-check\B777-200\PH-BQB\BQB C07 31-aug-2017\Infoletter and Handshake\InfoLetter(page1).pdf"
    Set sh = Sheets("_InfoLetter")

    sh.ExportAsFixedFormat Type:=xlTypePDF, From:=3, To:=3, Filename:=fn 'Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=True, OpenAfterPublish:=False
      
    .Visible = False
   End With

Echter 5 'elementen' in het pad naar het te schrijven bestand (InfoLetter(page1).pdf) zijn variable (verschillende mappen/folders).
Dit probeer ik als volgt op te lossen:
Code:
Dim stType As String, stShortReg As String, stReg As String, stCheck As String, stDate As String, stPath As String, stEndPath As String

Dim fn As String
Dim sh As Worksheet

With Sheets("Checklist")

    stType = .Range("K2").Value
    stShortReg = .Range("J2").Value
    stReg = .Range("A1").Value
    stCheck = .Range("L1").Value
    stDate = .Range("E2").Value

End With
    
    stPath = "I:\BM_H14\Projecten\C-check\"
    stEndPath = "\Infoletter and Handshake\InfoLetter(page1).pdf"
    
With Sheets("_InfoLetter")
    .Visible = True

    fn = stPath & stType & "\" & stReg & "\" & stShortReg & " " & stCheck & " " & stDate & stEndPath
    Set sh = Sheets("_InfoLetter")

    sh.ExportAsFixedFormat Type:=xlTypePDF, From:=3, To:=3, Filename:=fn
      
    .Visible = False
End With

Wat ik ook probeer, ik loop hier steeds tegen deze melding op.

Run-time error '1004':
The file could not be written. The document may be open or an error may be encountered when saving.

Note: De namen van de 5 veranderende folders haal ik uit cellen in een sheet "Checklist", deze cellen zijn normal gesproken beveiligd en verborgen (de sheet zelf niet).
Ook met het testen als de cellen onbeveiligd en niet verborgen zijn krijg ik deze fout melding.

Iemand enig idee wat ik hier fout doe?
Vast dank...

Windows 7 UK
Office Pro 2013 UK
 
Code:
Sub M_snb()
  sn= Sheets("Checklist").range("A1:L2")

  Sheets("_InfoLetter").ExportAsFixedFormat 0, "I:\BM_H14\Projecten\C-check\" & join(array(sn(2,11),sn(10,2),sn(1,1),sn(2,12),sn(2,5)),"\") & "\Infoletter and Handshake\InfoLetterpage1.pdf" ,,,,3, 3
End With

NB. Let op dat bestandsnamen niet alle mogelijke tekens mogen bevatten. check de inhoud van de cellen in sheet 'checklist'.
 
Laatst bewerkt:
dank voor de snelle reactie snb,

De bestandsnamen zijn het problem niet, deze worden al probleemloos in een andere SUB gebruikt om de betreffende folders aan te maken.

Jouw 'join array' oplossing is zeker een stuk eleganter, maar kan ik dit wel gebruiken? Zie hier een voorbeeld van een compleet pad: let op de "/" en " " in het 'variabele deel' van het pad.
"I:\BM_H14\Projecten\C-check\B777-200\PH-BQB\BQB C07 31-aug-2017\Infoletter and Handshake\InfoLetter(page1).pdf"

Ik heb dit aangepast om de "/" en " " ook mee te nemen en het ziet er nu zo uit:
Code:
sn = Sheets("Checklist").Range("A1:L2")
Sheets("_InfoLetter").ExportAsFixedFormat 0, "I:\BM_H14\Projecten\C-check\" & Join(Array(sn(2, 11) & "\" & sn(1, 1) & "\" & sn(2, 10) & " " & sn(1, 12) & " " & sn(2, 5))) & "\Infoletter and Handshake\InfoLetter(page1).pdf", , , , 3, 3

De foutmelding blijft echter hetzelfde.
 
Ik zie alleen maar backslashes.
Zoals je het nu schrijft is join overbodig.

Controleer voor je zelf het resultaat van de string met een msgbox.
Gebruik geen ( of ) in een bestandsnaam
 
Laatst bewerkt:
Ik zie alleen maar backslashes.

Controleer voor je zelf het resultaat van de string met een msgbox.
Gebruik geen ( of ) in een bestandsnaam; en ook geen -
 
Het loopt inderdaad vast op de foldernaam "BQB C07 31-aug-2017" dit kan helaas niet anders, dit is een standard benaming.

Het blijft overigens erg vreemd:
Code:
fn = Sheets("Checklist").Range("K20")
MsgBox fn
Sheets("_InfoLetter").ExportAsFixedFormat Type:=xlTypePDF, From:=1, To:=1, Filename:=fn

In cel K20 staat (tekst): I:\BM_H14\Projecten\C-check\B777-200\PH-BQB\BQB C07 31-aug-2017\Infoletter and Handshake\InfoLetter_page1.pdf

de msgbox geeft dit perfect weer en de file wordt gegenereerd, prima.

als ik echter in dezelfde cel (code) ="I:\BM_H14\Projecten\C-check" & K2 & "" & A1 & "" & K1 & "\Infoletter and Handshake\InfoLetter_page1.pdf" zet wat hetzelfde resultaat geeft wordt dit in de msgbox weer prima weergegeven maar krijg ik geen file maar de bekende foutmelding.

Hier moet toch een manier voor zijn? Waarom in het ene geval wel en het ander niet een file genereren? In beide gevallen staan de "-" en de spacies er...

Is er een alternatief?

PS: de "/" vallen hier in deze msg weg tussen & K2 & "" & A1 & "" & K1
 
Laatst bewerkt:
Ik geloof dat we terug moeten naar aanbeveling 1 van ieder forum: plaats een representatief voorbeeldbestand.

Uit wat je plaatst leid ik af dat Excel niet je 'fort' is. (zwak uitgedrukt)
 
Klopt VBA is niet mijn forte, ik ben er veel te weinig mee bezig en wat ik nu leer ben ik volgende keer weer vergeten.
Voorlopig kom ik er met vragen, kopieren en aanpassen altijd weer uit en krijg het linksom of rechtsom steeds weer werkend.
Ook deze keer is het met een beetje hulp weer gelukt.

Een representatief voorbeeldbestand was helaas in dit geval niet mogelijk voor mij.

Ben er in ieder geval weer uit gekomen, dank voor de hulp. En zeker voor de tip in het gebruik van arrays.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan