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

probleem met code

Status
Niet open voor verdere reacties.

Kaptain

Gebruiker
Lid geworden
8 jul 2006
Berichten
20
Mensen,

Ik krijg steeds een foutmelding bij het uitvoeren van mijn code. Ik heb mijn bestand erbij gedaan en wie kan mij helpen om het voor elkaar te krijgen dat het bestand wordt opgeslagen in directory "X" en dat er ook nog eens een pdf wordt geprint zonder melding met de vraag waar ik het wil opslaan?

Mocht er meer info nodig zijn, hoor ik het graag!

Groet en alvast bedankt,

Henry
 

Bijlagen

Hoi

Zoiets zou moeten werken als map X bestaat op de C-schijf:

Code:
ActiveWorkbook.SaveAs Filename:="C:\X" & Sheets("Blad1").Cells(9, 10).Value & ".xls", FileFormat:=xlNormal, _
        Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False

Het opslaan als PDF is een ander paar mouwen. Ga daarvoor maar eens het wijde web op.

Wigi
 
bedankt Wigi,


Dat opslaan was inderdaad niet het moeilijkste. Ik laat het trouwens zoals ik het had, want dan slaat hij het document op in de map waarin ook het originele bestand staat. (Toch bedankt)

Echter met de pdf ben ik al wel wat verder, maar nu is het enige wat ik nog wil weten het volgende:
- hoe krijg ik de vraag van het opslaan door adobe weg (ik wil dat ie automatisch opslaat)?
- oh ja, kun jij ook verklaren waarom het plaatje reserveringsbevestiging ineens klein wordt?
Dat moet hetzelfde blijven.... Is dit te voorkomen, of moet ik in het nieuwe document dit plaatje pas oproepen?

In de bijlage het bestand, ik heb al wat gegevens ingetikt, je hoeft alleen de macro maar te volgen.

Alvast bedankt!
 

Bijlagen

Vooraleer je nog met die PDFs gaat stoeien, zou ik eerst de macro's opkuisen.

Vermijd .Select in de code:

Dit

Code:
Range("J15").Select
    Selection.ClearContents
    Range("C8").Select
    Selection.ClearContents
    Range("C11:F16").Select
    Selection.ClearContents
    Range("C19:F20").Select
    Selection.ClearContents
    Range("C23:D24").Select
    Selection.ClearContents
    Range("C28:D28").Select
    Selection.ClearContents
    Range("J13").Select
    Selection.ClearContents

kan veel beter als

Code:
     Range("J15").ClearContents
    Range("C8").ClearContents
    Range("C11:F16").ClearContents
    Range("C19:F20").ClearContents
    Range("C23:D24").ClearContents
    Range("C28:D28").ClearContents
    Range("J13").ClearContents

en zelfs dat kan in 1 stap.

Code:
Range("C8", "J15", "C11:F16", "C19:F20", "C23:D24", "C28:D28", "J13").ClearContents

Dit

Code:
   Range("j16").Select
    Selection.Copy
    Range("C8").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False

schrijf je veel beter als:

Code:
    Range("J16").Copy
    Range("C8").PasteSpecial xlPasteValuesAndNumberFormats

Enz.

Wigi
 
Oke,

da's duidelijk. Dat ga ik doen. Ik heb nu gewoon opgenomen macro's samengevoegd en dan krijg je inderdaad een hoop onnodige dingen zoals jij me nu laat zien. Maar die PDF kwestie en dat plaatje zou ik echter graag opgelost zien. Die pdf, omdat dat een stap scheelt en dat plaatje omdat dat uiteraard niet hoort.

Ik ben benieuwd of iemand het gaat lukken...
 
Die pdf, omdat dat een stap scheelt

Probeer het eens met

Code:
Application.DisplayAlerts = False
    ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
    Application.DisplayAlerts = True

en anders zou ik het ook niet weten als dat niet lukt.

Waar geef je eigenlijk zelf in waar het bestand moet komen?

Wigi
 
Ik heb me erbij neergelegd dat de materie ten aanzien van de pdf iets te lastig is. Jouw laatste suggestie had ik al geprobeerd, maar toch blijft ie vragen om bevestiging. Nu heb ik de PDF printer ingesteld dat ie moet vragen om de map. Rest mij toch nog de taak om op de knop te klikken.

Wat betreft het kleiner worden van het plaatje "reserveringsbevestiging": Is dit voor jou ook een raadsel?

Ik snap niet waarom dit gebeurt...
 
Wanneer gebeurt dat dan?
Moet ik daarvoor een macro uitvoeren?
 
Ik heb net de macro stap voor stap uitgevoerd en in de macro heb ik kolom At/mG gekopieerd en dan laat ik het plakken in een nieuw blad. Bij het plakken komt er ineens een klein plaatje i.p.v. dezelfde grootte als in het originele blad.
 
Is de afmeting van je plaatje gerelateerd aan de afmeting van cel(len) waar het in staat? En zodoende dus ook aan de kolombreedtes.
Klik rechts op het plaatje en kijk bij kenmerken. De onderste keuze zou gemarkeerd moeten zijn.
 
Jan, bedankt,

Je hebt me in de goede richting geduwd. Ik heb het iets anders gedaan dan jij, namelijk het bovenste vinkje aangekruist en vervolgens de cellen in het nieuwe blad de zelfde grootte als van het originele blad gegeven.

Nu een ander probleem, volgens mij het laatste:
Zoals de code nu is, wordt de naam twee mappen terug opgeslagen. Ik bedoel hiermee dit:

het originele bestand staat in d:/reserveringen/2008/reserveringsbevestigingen
en de nieuwe bestanden worden geschreven in: d:/reserveringen

Wat moet ik voor code gebruiken om de nieuwe bestanden op te slaan in hetzelfde bestand als het originele? Let op, als het kan wil ik een "relatieve verwijzing", aangezien ik dan het originele bestand neer kan zetten waar ik maar wil.

Zie voor het bestand de bijlage.

@WIGI: ik heb geprobeerd sommige codes te koppelen, zoals jij hebt voorgesteld, maar als ik dat deed dan veranderde hij dingen bij de cel die een stap eerder was geselecteerd en dat is niet de bedoeling. Zou jij het eens willen proberen?
Neem bijvoorbeeld die range die jij in één keer deed, dan gaf die een foutmelding, terwijl stap 2 wel werd geaccepteerd. (Ik heb nu 2007, het bestand is gemaakt met 2003)
 

Bijlagen

Nu een ander probleem, volgens mij het laatste:
Zoals de code nu is, wordt de naam twee mappen terug opgeslagen. Ik bedoel hiermee dit:

het originele bestand staat in d:/reserveringen/2008/reserveringsbevestigingen
en de nieuwe bestanden worden geschreven in: d:/reserveringen

Wat moet ik voor code gebruiken om de nieuwe bestanden op te slaan in hetzelfde bestand als het originele? Let op, als het kan wil ik een "relatieve verwijzing", aangezien ik dan het originele bestand neer kan zetten waar ik maar wil.

Je kan gebruik maken van

Code:
ThisWorkbook.Path

Zet dat maar eens in een message box:

Code:
MsgBox ThisWorkbook.Path

om het daar op te slaan.

Wigi
 
wat bedoel je met een message box en waar plaats ik de code?

Die messagebox moet je gewoon eens uitvoeren. Maak een macro met enkel dat in. Dat geeft het pad van dat bepaalde bestand weer.

Het pad zal je moeten gebruiken in je SaveAs. Ipv op te slaan in schijf C, sla je nu op in ThisWorkbook.Path, of iets dergelijks. Zo maak je het relatief.

Wigi
 
kan je me de code laten zien zoals ik het moet maken, want zoals ik het nu heb slaat hij het bestand op maar denkt ie dat er een andere extensie is (vanwege de punt na "workbook".)

Deze code gaat eraan vooraf:
ActiveWorkbook.SaveAs Filename:="ThisWorkbook.Path reserveringen 2008", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False

Heb wel het idee dat ik iets moet veranderen in de filename, maar weet niet wat...
Dank alvast!
 
Laatst bewerkt:
Zo is de structuur:

Code:
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & "Bestandsnaam.xls", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False

Wigi
 
Hartstikke bedankt!
Hij werkt.

Mocht je nog een oplossing hebben voor het automatisch opslaan van pdf zonder bevestiging, hoor ik het graag!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan