• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Zojuist geopende en geprinte bestanden weer afsluiten met vb

Status
Niet open voor verdere reacties.

Willempie2016

Gebruiker
Lid geworden
21 jan 2020
Berichten
40
Ik heb een aparte map waar ik alle te printen documenten in zet.
Deze druk ik dan achter elkaar in 1 keer af.
Dat werkt prima maar ik moet de geopende bestanden dan handmatig verwijderen van het bureaublad.
Het zijn niet alleen Excel bestanden (dat is simpel) maar PDF, Excel en Jpeg bestanden.
De insteek is dat ik na het printen direct het betreffende bestand afsluit maar dat krijg ik niet voor elkaar.
Ik heb de printfunctie even "on hold" gezet voor de testfase maar in praktijk werkt die prima voor alle soorten bestanden.

2 vragen :
Hoe kan ik de geopende bestanden afsluiten in vb
Bij het selecteren van de map moet ik nog handmatig op OK klikken maar die map is altijd goed en is dus altijd OK.

Ben reuze benieuwd wie hier de oplossing voor heeft.
Bijgaand een voorbeeldbestand.
 

Bijlagen

Gebruik geen select en activate als het niet nodig is. Wat het allemaal moet worden is mij niet echt duidelijk. Waarom ga je de opmaak van een tijdelijk blad aanpassen?

Om de bestanden uit een vaste map in een werkblad te zetten kan je zoiets gebruiken.
Code:
Sub VenA()
  c00 = "E:\temp\"
  ar = Split(CreateObject("wscript.shell").exec("cmd /c Dir " & c00 & " /b /a-d").stdout.readall, vbCrLf)
  If IsError(Evaluate("'Print overzicht'!A1")) Then Sheets.Add.Name = "Print overzicht"
  With Sheets("Print overzicht")
    .UsedRange.ClearContents
    .Cells(1).Resize(UBound(ar), 1) = Application.Transpose(ar)
  End With
End Sub

Je kan waarschijnlijk ook alles afhandelen vanuit de array en dan heb je helemaal geen tijdelijk blad nodig.
 
Dank voor de reactie.
De code zet de gewenste bestanden in de map maar dat was niet het probleem.
Als ik daarna overigens een printopdracht geef wordt alleen cel A1 afgedrukt

Het probleem is juist dat ik die bestanden wil afdrukken en daarna niet die bestanden geopend op het beeldscherm wil zien.

De opmaak had ik er in gezet om het blad voor de vraag wat netjes te maken maar is niet echt nodig, meer voor de netheid.
Als je in de definitieve code "Application.DisplayAlerts" goed gebruikt zie je dat na het antwoord "Ja" het hele vervolg niet meer.

Daarom zie je ook in mijn codes het samenstellen van de paden om het bestand te printen (wat goed gaat) en daarna wil ik dus die bestanden van mijn beeldscherm af hebben.

Ik hoop dat je daar een oplossing voor hebt.

Groet, Wim
 
Beste ExcelProfs,
Ik ben al enkele dagen bezig om de bestanden te printen zonder te openen maar ik krijg het niet voor elkaar.
Er wordt altijd wel een fout gemeld.
Op internet is hierover alleen maar iets te vinden als je allemaal dezelfde soort files wil printen maar ik heb dus verschillende soorten files.
Als ik met VBA alle files open en print gaat het goed maar dan blijven alle geopende files op mijn bureaublad staan.
Er zou toch een mogelijkheid moeten zijn.
Ik heb te weinig verstand van arrays om daar echt mee te experimenteren dus ik loop vast.
Wie ziet een oplossing?
Groet, Wim
 
Bij verschillende soorten bestanden gaat het ook niet. Probeer maar eens via de verkenner een .pdf en een .xlsx te printen. Je zal zien dat de optie print niet beschikbaar is onder de rechtermuisknop.

Ik heb de printfunctie even "on hold" gezet voor de testfase maar in praktijk werkt die prima voor alle soorten bestanden.
Heb je hier de code van? Misschien dat er dan een slimme oplossing te vinden is.
 
Code printen

Die code kan je zien in de in 3 delen gesplitste macro van mijn bijgeleverde bestand.
Als je eerst de 1e macro laat uitvoeren (1e knop en bij de stop /vraag even OK / Ja klikken) dan zie je uiteindelijk het blad "Print overzicht" met daarin de hyperlinks naar de te printen bestanden.
Als je naar de 2e macro kijkt ("Loop") dan zie je dat ik de printopdracht even achter een ' heb geplaatst want anders verspil ik veel papier en inkt maar als je de printfunctie dus gewoon zijn gang laat gaan ( ' weghalen) zal je zien dat hij alle bestanden gewoon print.
De 3e macro is feitelijk alleen het afsluiten van het extra blad "Print overzicht". Dat blad was feitelijk alleen een hulpmiddel om de paden naar de bestanden achter elkaar te laten printen.
Cel E1 geeft de laatste rij weer en cel F1 is de eerste regel. Dit is voor de Loop.

Ik moet dus de bestanden openen om de verschillende bestanden te kunnen printen.

Het probleem is dat de geopende bestanden nu allemaal op het bureaublad staan en dat ik die handmatig moet sluiten.
Bij 3 bestanden in de map "Afdrukken" (path=A54) is dat niet zo erg maar bij 20 bestanden is dat wel vervelend.
Ik wil dus dat als een bestand is afgedrukt dat bestand weer wordt gesloten.
 
De code is dus gewoon : Selection.PrintOut Copies:=1, Collate:=True
Haal het ' ervoor maar weg en je zult zien dat het werkt.

Nu dus nog de bestanden weer sluiten...…..Dat zoek ik.

""Bij verschillende soorten bestanden gaat het ook niet. Probeer maar eens via de verkenner een .pdf en een .xlsx te printen. Je zal zien dat de optie print niet beschikbaar is onder de rechtermuisknop.""

Dat klopt en daarom print ik ook met een Loop omdat ik dan de bestanden per stuk afdruk.
 
Laatst bewerkt door een moderator:
Als er nog niemand gereageerd heeft kan je jouw berichten aanpassen/aanvullen ipv meerdere berichten na elkaar te plaatsen.

Er wordt helemaal niets geprint. De procedure 'Loop' bestaat niet en als het wel zo zou zijn dan is het een slechte naam. Als je 'Loopproef' bedoelt dan worden er alleen hyperlinks gevolgd. Ik kan nergens vinden dat er ergens iets opgeslagen wordt. Of het moet ergens in de onleesbare 'Sub BestandenInEenMapAfdrukken()' zitten. Wat is het nut of de noodzaak van deze exercitie? En waarom middels code waar je nog niet heel veel van begrijpt?

Volgens mij moet je elk bestandstype op een bepaalde manier aanroepen, printen en dan weer afsluiten. En dat gaat mijn kennis te boven.;)
 
Punten

1) Berichten aanpassen wist ik niet. Ik zie het nu staan.
2) Ja, en de hyperlinks worden gevolgd; dat is dus de bedoeling. Er hoeft niets opgeslagen te worden; de bestanden moeten alleen geprint worden.
Hiermee worden dus de bestanden geopend en (als je het ' voor de printopdracht even weghaalt dan worden die bestanden dus achter elkaar geprint.
3) Het enige probleem is dus het sluiten van de bestanden.

Het nut hiervan is dat ik niet voor elk document naar zolder moet lopen omdat daar mijn kantoor is.
Ik werk op mijn laptop beneden in de woonkamer (omdat daar ook de koffie is).

Kijk maar eens naar het programma Print Conductor; die doet wat ik wil maar ik wil dit vanuit Excel geregeld hebben en niet weer een apart programma erbij hebben.

Ik weet ook niet waar de "op dit moment geopende bestanden" in Windows 10 worden geregistreerd; "recent geopende bestanden" biedt hierop geen soelaas. Als ik die Windows locatie weet kan ik daar waarschijnlijk ook wel wat mee.
 
Laatst bewerkt:
Probeer eens met deze aanpassing:
Code:
Do Until I > Range("E1").Value
    ThisWorkbook.FollowHyperlink (Cells(I, 4))
' Druk selectie af
  '  Selection.PrintOut Copies:=1, Collate:=True

'Sluit geopend bestand

[COLOR="#FF0000"]  ActiveWorkbook.Saved = True
  ActiveWorkbook[/COLOR].Close

Workbooks("Voorbeeldbestand").Activate
    
    I = I + 1

Loop
 
Oplossing !

Dag Piet,
Dank dat je het hebt geprobeerd maar, zoals ik heb beschreven, print ik allerlei verschillende soorten documenten door elkaar heen (Excel bestanden, Jpeg, Img, PDF enz.) en jouw formule sluit alleen Excel bestanden. Dat is ook niet zo moeilijk.
Er zijn kennelijk meerdere mensen die hier problemen mee hebben heb ik ook op de diverse fora gezien.
Het probleem is (was haha) dat het allemaal verschillende bestanden zijn
Het was een lange zit voordat ik het voor elkaar had maar...……..vanmiddag heb ik zelf de ultieme oplossing kunnen bewerkstelligen. Vanuit Excel en het werkt feilloos. Achteraf zit het maar in 2 eenvoudige dingen (haha, je wordt nu nieuwsgierig).
De macro moet ik nog even fatsoeneren en delen die niet gebruikt worden en tests weghalen en dan zal ik de oplossing hier delen.
Ik vermoed dat ik er veel mensen een plezier mee doe want er is op internet geen bruikbare oplossing te vinden en iedereen zegt eigenlijk dat het niet kan. MIS DUS.
Blij blij blij.
Wordt vervolgd.
Groet, Wim
 
't Is niet zo moeilijk om de Pdf te sluiten.
Code:
Sub PdfSluiten()
 Shell "taskkill /F /IM AcroRd32.exe"
End Sub
 
Nou het is me weer wat. Je zou zeggen het weekend komt er aan. Alle niet ter zake doende berichten verwijderd.
 
Volgens mij moet je elk bestandstype op een bepaalde manier aanroepen, printen en dan weer afsluiten. En dat gaat mijn kennis te boven.;)

Je schrijft in #13 dat je een oplossing hebt. Wil je deze even delen dan leer ik ook weer wat bij. Het doel van dit forum is om mensen verder te helpen en te leren van mogelijke oplossingen. Dus als een oplossing door de TS zelf gevonden is dan is het ook prettig dat anderen deze ook kunnen zien. Anders heeft dit draadje weinig nut voor mensen die met een soortgelijke vraag zitten.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan