Verschillende sheets bewaren als 1 pdf met een sub vanaf een andere sheet, error1004

Status
Niet open voor verdere reacties.

dominod

Gebruiker
Lid geworden
2 jun 2010
Berichten
11
Ik heb 4 sheets in mijn Excel bestand en het doel is om:
- sheet 2,3 en 4 te bewaren in 1 pdf (lukt probleemloos als ik dit start vanaf sheet 2 via een knop)
- de opdracht te starten vanaf sheet1 via een knop (lukt niet en vandaar de vraag hoe?)

Dit is de code dat werkt via de knop op sheet2 als active sheet. Wat moet ik wijzigen om het van sheet1 te starten?

Code:
Sub PrintPDF()

ThisWorkbook.Sheets(Array("Sheet2", "Sheet3", "Sheet4")).Select

  Dim folderPath As String
  Dim Title As String
  Dim user As String
  
  user = Application.UserName
  folderPath = Application.ActiveWorkbook.Path
  dt = Format(CStr(Now), "yyyy_mm_dd_hh_mm_ss")
  Title = "Title"
  'Dit had ik toegevoegd om zeker te zijn dat Sheet2 actief is als ik het start van Sheet1 maar is in feite onnodig: Sheets("Sheet2").Activate 
  'Alle 4 sheets bevatten data en het afdrukbereik ook
  'heb ook al Selection en Sheets geprobeerd ipv ActiveSheet
  ActiveSheet.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=folderPath & "\PrintPDF\" & dt & "_" & Title & "_" & user & ".pdf", _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
 
Wat werkt er niet als je dat vanaf sheet1 doet?

Heb je de knop op sheet1 gezet?
Staat die code nu ook achter sheet1?
Of staat die in een Module?
Heb je de knop dan ook aan die Sub gekoppeld?
 
Laatst bewerkt:
Volgens mij werkt het alleen als 1 van de tabbladen actief is.
Code:
Sub VenA()
  c00 = "E:\Temp\test.pdf"
  Sheets(Array("Sheet2", "Sheet3")).Select
  Sheets("Sheet2").ExportAsFixedFormat xlTypePDF, c00
End Sub
 
Laatst bewerkt:
Nee, het heeft inderdaad niets te maken met welk blad je actief hebt.
 
- op sheet 1 heb ik een doorzichtig object over smartart geplaatst zodat ik er een Macro kon aan toewijzen.
- de code staat in een module
- vanwege jouw vraag Edmoor, heb ik de code ook gelinkt aan een test knop in sheet1 met de code in sheet1 (copy/paste), zelfde resultaat
"1004: door de toepassing of door object gedefinieerde fout"
- @VenA. Dit had ik al geprobeerd met hetzelfde resultaat als hierboven. Voor de veiligheid heb ik het nog eens getest en resultaat is zoals deze namiddag.

Met wat ik ook probeer, als ik naar Sheet2 ga en een veld aanklik en de code rechtstreeks draai (of ze nu achter een knop zit op sheet1 of sheet2 of in een module), werkt het. Ik begin meer te denken dat het een beperking is van het vba commando ExportAsFixedFormat
 
Dat laatste is zeker niet zo.
Plaats je document.
 
Dank voor de snelle reactie Edmoor

Het excel book is een deel van een hele set workbooks en bevat cliënt gevoelige informatie. Daarom ga ik morgen een vereenvoudigde versie maken, hetgeen niet veel tijd zal vragen, en linken op dit forum.
 
Je kan ook even sheet1 verbergen en aan het eind weer zichtbaar maken.
Code:
Sub hsv()
With ThisWorkbook
 .Sheets("sheet1").Visible = False
 .ExportAsFixedFormat 0, "c:\temp\test"
 .Sheets("sheet1").Visible = True
End With
End Sub
 
Of loop eens met de F8 toets door de sub heen om te zien op welke regel hij stopt, als het met die sub te maken heeft.
Wat ik overigens niet verwacht.
 
Laatst bewerkt:
maakt geen verschil

Je kan ook even sheet1 verbergen en aan het eind weer zichtbaar maken.
Code:
Sub hsv()
With ThisWorkbook
 .Sheets("sheet1").Visible = False
 .ExportAsFixedFormat 0, "c:\temp\test"
 .Sheets("sheet1").Visible = True
End With
End Sub
 
hij blokkeert altijd op ExportAsFixedFormat, de code bevat geen complexe zaken
Morgen post ik het test exemplaar

Of llop eens met de F8 toets door de sub heen om te zien op welke regel hij stopt, als het met die sub te maken heeft.
Wat ik overigens niet verwacht.
 
trouwens, dank jullie wel voor de vele tips/hints en dit op een zondagavond :thumb::thumb:
 
Welke versie van Office gebruik je?

Is er wel een map met de naam PrintPDF in de map waar het Excel document staat?
Ik heb nl. die Sub zo gekopieerd en geplakt in een eigen document waar ik de voorwaarden had geregeld en werkt zonder een enkel probleem.
 
Laatst bewerkt:
Je moet het blauwe gedeelte natuurlijk wel even aanpassen.
Code:
.ExportAsFixedFormat 0, [COLOR=#0000ff]"c:\temp\test"[/COLOR]
 
Zet dit eens direct onder die folderpath = regel:
Code:
If Dir(folderPath & "\PrintPDF", vbDirectory) = "" Then MkDir folderPath & "\PrintPDF"
 
Je hebt gelijk Edmoor. Ik heb net een testdocument gemaakt en dat werkt wel.
De directory bestond, die lijn toevoegen verandert het niet. Ik ga eerst zelf wat meer onderzoek doen door mijn document (copy ervan) stap per stap te strippen en zien wanneer het begint te werken.
 
Het is opgelost. De kans bestaat dat zelfs de experten onder jullie iets nieuw leren vandaag.
- testdocument werkt => het ligt aan de sheet, het is niet de code
- 3 nieuwe sheets toegevoegd in het origineel document en die laten afprinten via een andere sheet: test OK => dan ligt het aan de 3 sheets die ik wil afdrukken
- de array verkleint naar 1 blad en blijkbaar werken 2 van de 3 sheets niet, ik kreeg popup 400 als fout code (niet error:400)
- het enige verschil tussen de sheet dat ok was en de andere was het menu 'Beeld'. Allebei stonden ze op 'pagina indeling' en de andere op 'normaal'. Als ik ze alle drie op normaal zet, werkt het perfect!
Ik mag de code nu zetten in een module of op de sheet zelf, het werkt. :thumb:

In het testdocument kan ik '400' reproduceren door het beeld te wijzigen. Mijn originele error niet. Er is dus nog ergens een detail dat ik mis maar aangezien het nu werkt, laat ik dat voor wat het is.

Dank voor de reacties!
 
Maakt hier in Office 2016 (365) geen enkel verschil.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan