• 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.

Opslaan als excle werkblad ipv PDF file

Status
Niet open voor verdere reacties.

estate

Gebruiker
Lid geworden
9 feb 2008
Berichten
80
Ik gebruik onderstaande code om een factuur af te drukken en daarna een kopie op te slaan als PDF file.

Graag zou ik willen dat ik alleen dát werkblad opsla waarin de gegevens staan en niet het hele excel werkmap bestand zodat ik later dat bestand weer kan gebruiken als basis voor een volgende factuur/offerte.

Alleen ben ik een NONO als het gaat om ingewikkelde excel dingen als ik er geen voorbeeld bij heb snap ik er nikkes van :)

Ook dit vraagstukje is weer voor mn goede vriend en buur waarvoor ik samen met jullie hulp al een en ander in elkaar geknutseld heb, waarvoor mijn dank :)


Code:
Sub printen()
ActiveSheet.Unprotect Password:="pieter"
    Range("A1:G49").Select
    Application.ActivePrinter = "HP PSC 1500 series op Ne01:"
    ActiveWindow.SelectedSheets.PrintOut Copies:=2, Collate:=True
    Application.ActivePrinter = "Bullzip PDF printer op Ne03:"
    ActiveWindow.SelectedSheets.PrintOut Copies:=1

[COLOR="Red"]***ActiveWindow.SelectedSheets.SaveWorkSheet AS "Range("G3") = Range("G3") + 1"**[/COLOR]

    Range("G3") = Range("G3") + 1
    Range("G4:G5,A17:E40,J17:J40").ClearContents
    Range("G4").Select
    ActiveSheet.Protect Password:="pieter"
End Sub
 
Twee zaken waaraan ik denk:
1) werk met een template voor een factuur. Je maakt een Excel-bestand aan met al het nodige en je bewaart het als template (zou optie moeten zijn bij 'bewaren als...'). Als je nu de template opent door erop te dubbelklikken wordt er een nieuw Excelbestand gemaakt met alles dat de template heeft. Dit nieuwe bestand kan je dan opslaan.

Ik neem aan dat je nu iets dergelijks gebruikt: je hebt één excelbestand met een sheet met wat standaardgegevens dat je kopiëert naar een nieuwe sheet, de gegevens invult en dan eigenlijk apart wil opslaan?

2) eigenlijk wat vuil maar... verwijder gewoon alle andere sheets en bewaar het excelbestand op z'n geheel onder een andere naam. Komt op hetzelfde neer als één sheet bewaren ;).
 
Hmmmm,

Ik zal daar eens wat mee gaan stoeien, als ik nu eens dat hoofdblad met de factuur knip en kopieer naar een ander clean excel bestand zou het automatisch moeten gaan verwijzen naar de bestaande data en alle andere formules en zoekopdrachten aanpassen toch ?

Dan heb ik een relatieve koppeling en kan ik elke keer het blad opslaan onder een andere naam maar de data die is ingevuld behouden, of zit ik nu helemaal verkeerd te denken ?

Alvast bedankt tot zover, Gr Jan
 
Via Activesheet.Copy kopieer je het actieve blad naar een nieuw bestand met enkel dat blad in. Activesheet kan je vervangen door eender welke - geldige - verwijzing naar een tabblad.

Dan nog een SaveAs erbij en je bent klaar.

Evt. kopieer en plak je alles als waarden.

Wigi
 
Via Activesheet.Copy kopieer je het actieve blad naar een nieuw bestand met enkel dat blad in. Activesheet kan je vervangen door eender welke - geldige - verwijzing naar een tabblad.

Dan nog een SaveAs erbij en je bent klaar.

Evt. kopieer en plak je alles als waarden.

Wigi

Beste Wim zou je dat aan de hand van bovenstaand stukje code (in een post of wat terug) kunnen plakken en me laten zien wat je bedoeld ? Ik zou het graag willen opslaan onder de naam die word afgeleid van de Range code (zie hieronder) zodat de factuur automatisch wordt opgeslagen onder het juiste factuurnummer, dat kan toch neem ik aan ?

Code:
"Range("G3") = Range("G3") + 1"


Een voorbeeld zegt mij meer dan duizend woorden :)


PS. heb je andere post combobox gezien, zal ik onthouden en naar mn HDD kopieeren :)
 
Bedoelde je zoiets Wim ?

Code:
Sub printen()
ActiveSheet.Unprotect Password:="pieter"
    Range("A1:G49").Select
    Application.ActivePrinter = "HP PSC 1500 series op Ne01:"
    ActiveWindow.SelectedSheets.PrintOut Copies:=2, Collate:=True
    Application.ActivePrinter = "Bullzip PDF printer op Ne03:"
    ActiveWindow.SelectedSheets.PrintOut Copies:=1

    ActiveSheet.Copy
    ActiveSheet.SaveAs "Factuur Range("G3") = Range("G3") + 1"

    Range("G3") = Range("G3") + 1
    Range("G4:G5,A17:E40,J17:J40").ClearContents
    Range("G4").Select
    ActiveSheet.Protect Password:="pieter"
End Sub

Ik heb dit, maar krijg het niet werkend :)
 
Code:
ActiveSheet.Copy
    ActiveWorkbook.SaveAs "C:\Factuur " & ActiveSheet.Range("G3").Value + 1
    ActiveWorkbook.Close False
 
Bedankt het werkt bijna, alleen moet ik + 1 verwijderen om het juiste factuurnummer te verkrijgen.

Ik heb het nu werkend alleen werkt een selectievak nu niet, de eerste 3 wel en dan de laatste niet, ik zal de xls bijvoegen zoals hij is opgeslagen

de code die bij dat vak hoort is
Code:
=INDIRECT($C19)
(gegevens validatie)
 

Bijlagen

Laatst bewerkt:
Sorry Wim, ik dacht daar even niet aan, natuurlijk wil ik graag een 2003 versie bijvoegen, alleen gaat er dan wel wat functionaliteit verloren.

Groetjes, Jan
 

Bijlagen

Ik kan niet aan de benoemde bereiken, die zitten nog in de file PM Kluswerk op jouw PC.
 
Sorry Wim maar ik zou niet weten hou dat te zeggen, kom ik later op terug als je het goed vindt.

Intussen heb ik dit als code en het werkt prima exhter met een paar kleine probleempjes

Code:
Sub printen()
ActiveSheet.Unprotect Password:="pieter"
    Range("A1:G49").Select
    Application.ActivePrinter = "HP PSC 1500 series op Ne02:"
    ActiveWindow.SelectedSheets.PrintOut Copies:=2, Collate:=True
    Application.ActivePrinter = "Bullzip PDF printer op Ne04:"
    ActiveWindow.SelectedSheets.PrintOut Copies:=1
    ActiveSheet.Copy
    ActiveWorkbook.SaveAs "C:\PM_Kluswerk\Facturen\PM_" & ActiveSheet.Range("E1").Value & ActiveSheet.Range("B7").Value & ActiveSheet.Range("G3").Value
    ActiveWorkbook.Close False
    Range("G3") = Range("G3") + 1
    Range("G4:G5,A17:E40,J17:J40").ClearContents
    Range("G4").Select
    ActiveWorkbook.Save
    ActiveSheet.Protect Password:="pieter"
End Sub

In cel B7 staat de naam van de klant, als daar een punt in voorkomt zoals "dhr. Pietersen" dan wordt het bestand wel opgeslagen maar zonder extensie.

Ook heb ik geprobeert een "_" tussen de 3 ranges te zetten maar dan krijg ik een compileerfout.

Code:
ActiveWorkbook.SaveAs "C:\PM_Kluswerk\Facturen\PM_" & "_" & ActiveSheet.Range("E1").Value & "_" &  ActiveSheet.Range("B7").Value & "_" &  ActiveSheet.Range("G3").Value

Wat doe ik nou weer eens fout :):)

Op die validatie functie kom ik nog terug, moet even kijken of ik iets kan maken waarin het wel werkt maar zonder gevoelige gegevens.
 
Even kort terug op die gegevensvalidatie vraag



in cel B19 staat
Code:
=bewerking
en in cel E19 staat
Code:
=INDIRECT($C19)


Heeft het iets te maken met dat INDIRECT zoeken dat ik niet in het origineel excel bestand kan zoeken?

Ik ga nu even stoppen, heb beetje te veel gedaan (auw :) ) moet nu even rust nemen, tot later

Groeten, Jan S
 
Ook heb ik geprobeert een "_" tussen de 3 ranges te zetten maar dan krijg ik een compileerfout.

Code:
ActiveWorkbook.SaveAs "C:\PM_Kluswerk\Facturen\PM_" & "_" & ActiveSheet.Range("E1").Value & "_" &  ActiveSheet.Range("B7").Value & "_" &  ActiveSheet.Range("G3").Value

Wat doe ik nou weer eens fout :):)

De syntax klopt, maar wat staat er in de cellen?
 
Hallo Wim, nog laat op ?

In de cellen staan achtereenvolgens Factuur of Offerte (keuzevak) , dan de naam van de klant, en in de derde range staat het factuurnummer zoals gegenereerd door een stukje code.

Alles verschijnt achter elkaar, als ik de code & "_" & voor het scheidingsteken toevoeg werkt het niet en krijg ik een syntax fout.

Ook krijg ik een bestand dat zonder extensie wordt opgeslagen als er een punt in de naam of ergens voorkomt, waarschijnlijk interpreteerd vba dit als eind van de bestandsnaam met eigen gedefineerde extensie en zet er dan zelf niet de excel extensie achter ?

Groeten, Jan
 
Ook krijg ik een bestand dat zonder extensie wordt opgeslagen als er een punt in de naam of ergens voorkomt, waarschijnlijk interpreteerd vba dit als eind van de bestandsnaam met eigen gedefineerde extensie en zet er dan zelf niet de excel extensie achter ?

Dat is zo. Check met InStr in VBA of een stuk tekst een punt bevat of niet. Als InStr een 0 geeft komt het niet voor, anders wel.

Als het voorkomt, kan je met Replace de . vervangen voor iets anders.

Wigi
 
In de cellen staan achtereenvolgens Factuur of Offerte (keuzevak) , dan de naam van de klant, en in de derde range staat het factuurnummer zoals gegenereerd door een stukje code.

Alles verschijnt achter elkaar, als ik de code & "_" & voor het scheidingsteken toevoeg werkt het niet en krijg ik een syntax fout.

Zonder exact voorbeeldbestandje valt dit niet te controleren voor mij.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan