Fout in VBA

Status
Niet open voor verdere reacties.

masala09

Gebruiker
Lid geworden
6 aug 2012
Berichten
886
2 vragen:

De eerste vraag daar heb ik zelf al een niet werkende macro voor gemaakt: Tenminste niet ik, maar een maat van mij. Klopt niets van.

Code:
Sub opslaan()
Dim stPath As String
With Sheets("Factuur")
    stPath = "D:\Bedrijf\Facturatie\Facturen PDF\2013\"
    stPath = stPath & "factuur " & .Range("i13").Value & "\"
    With CreateObject("Scripting.FileSystemObject")
        If Not .FolderExists(stPath) Then .CreateFolder stPath
    End With
    ActiveWorkbook.SaveAs Filename:=stPath.Range("i13").Value & ".pdf"
End With

Het totale adres is D:\Bedrijf\Facturatie\2013\

Hierachter moet dan de bestandsnaam uit cel: C13 worden gehaald (voorbeeld: A2013-0005)

Het totale adres wordt dan: D:\Facturatie\Facturen PDF\2013\A2013-0005.pdf

Let op..... In het adres staat na: Facturen PDF, komt de mapnaam 2013 (Het betreffende jaar). Dit jaartal zie ik graag automatisch gegenereerd. Op die wijze gaat deze automatisch in 2014 naar 2014 toe. Wel wil ik dan hebben dat als de map 2014 niet bestaat, dat deze automatisch wordt aangemaakt.
 
Laatst bewerkt:
Code:
Sub opslaan()
   on error resume next
   mkdir "D:\Bedrijf\Facturatie\Facturen PDF\" & year(date)
   ActiveWorkbook.ExportAsFixedFormat 0, "D:\Bedrijf\Facturatie\Facturen PDF\" & year(date) & "\factuur " & sheets("factuur").Range("i13").Value & ".pdf"
End Sub
 
Laatst bewerkt:
Zo daar zit nogal een heel verschil in zeg.

Ik neem aan dat ik deze dan in This workbook moet opslaan? Ik krijg hem namelijk niet aan de praat.

Ik heb zojuist jouw code geplaatst in this workbook en het volledig bestand opgeslagen alszijnde excel met macro.

Hoort er niet iets te staan van End Sub op het eind i.p.v. End With?
 
Laatst bewerkt:
De vraag stellen is hem beantwoorden :) Een Sub procedure eindigt altijd met End Sub; de End With is waarschijnlijk blijven staan van je eigen voorbeeld.
 
Dat blijkt wel ja :rolleyes:

Maar volgens mij heeft die maat van mij het ook niet helemaal begrepen.

De zaak moet zijn gekoppeld aan een knop die opslaat. Ik kan ook nergens het bestandje vinden die ik geplaatst zou hebben.

Ik denk dat ik teveel tegelijk wil doen aan deze kant. Ben met veel dingen tegelijk bezig en vergeet kennelijk het 1 door het ander..... slordig van mij!!!!

Ik ga dat zo direct in orde maken en dan erbij wat er moet gebeuren, want met die maat van mij ben ik dus niet veel opgeschoten. Het is zo leuk... zeggen dat je het kan, maar het niet kunnen verwezenlijken. Zeg dan gewoon dat je het niet kunt..... zucht.
 
Kleine opmerking.

Het volgende werkt ineens niet meer.

In tabblad Factuur zoeken als volgt.

Er zijn een 3 tal cellen waar gegevens ingevoerd worden.

In de cel C8 wordt enkel een nummer ingevoerd. Echter een 3 cijferig nummer moet automatisch 4 nummers worden. Dus: 0123.
Een 2 cijferig nummer wordt dan 0012
Een 1 cijferig nummer wordt dan: 0001

Vervolgens moet dan in C10 het geheel samenkomen alszijnde voorbeeld: A2013-0001. Vervolgens moet er hierop een knop worden gemaakt als eerder aangegeven. Ik begrijp niet wat er ineens is gebeurd. Ik had dit eerder voor elkaar, maar op de 1 of de andere manier is dit weer verdwenen.
 
Laatst bewerkt:
Na opmaak gaat het originele briefhoofd erop en worden er nog een aantal gegevens aan de factuur toegevoegd. Dit om eventueel fraude met mijn facturen te voorkomen. Dit is dus niet het volledig document. Ik neem aan dat dit soort aanpassingen geen invloed hebben.
 
Laatst bewerkt:
Code:
Sub Terug()

    Application.Goto Sheets("Factuur maken").Range("A1")
    
End Sub
Sub GaNaar()

    Application.Goto Sheets("Factuur").Range("A1")
    
End Sub
Sub opslaan()

   On Error Resume Next
   MkDir "D:\Bedrijf\Facturatie\Facturen PDF\" & Year(Date)
   ActiveWorkbook.ExportAsFixedFormat 0, "D:\Bedrijf\Facturatie\Facturen PDF\" & Year(Date) & "\factuur " & Sheets("factuur").Range("i13").Value & ".pdf"
   With Sheets("Factuur")
      Sheets("Database facturen").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 13) = Array(.Range("I13"), .Range("A3"), .Range("I12"), ['Factuur maken'!C40], _
          .Range("I11"), .Range("C52"), ['Factuur maken'!C36], .Range("H39"), .Range("H45"), .Range("H43"), .Range("B13"), .Range("B19"), .Range("B22"))
   End With
   
End Sub
Sub Call_PDF()

    On Error Resume Next
    ThisWorkbook.FollowHyperlink "D:\Bedrijf\Facturatie\Facturen PDF\" & Year(Date) & "\factuur " & Sheets("factuur zoeken").Range("C10").Value & ".pdf"

End Sub
 
Code:
Sub opslaan()

   On Error Resume Next
   MkDir "D:\Bedrijf\Facturatie\Facturen PDF\" & Year(Date)
   ActiveWorkbook.ExportAsFixedFormat 0, "D:\Bedrijf\Facturatie\Facturen PDF\" & Year(Date) & "\factuur " & Sheets("factuur").Range("i13").Value & ".pdf"
   With Sheets("Factuur")
      Sheets("Database facturen").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 13) = Array(.Range("I13"), .Range("A3"), .Range("I12"), ['Factuur maken'!C40], _
          .Range("I11"), .Range("C52"), ['Factuur maken'!C36], .Range("H39"), .Range("H45"), .Range("H43"), .Range("B13"), .Range("B19"), .Range("B22"))
   End With
   
End Sub


Hier krijg ik een foutmelding:

De macro 'Opmaak Factuur.xlsm!Knop1_Klikken kan niet worden uitgevoerd. De macro is wellicht niet beschikbaar in dit werkboek of alle macro's zijn mogelijk uitgeschakeld.

Macro is geactiveerd in opties. Anders kan ik ook andere bestanden met macro's niet draaien. Dus kennelijk is de macro niet beschikbaar.

Een kleine aanpassing aan mijn kant daar er een stap in de directory is verwijderd.

Code:
Sub opslaan()

   On Error Resume Next
   MkDir "D:\Facturatie\Facturen PDF\" & Year(Date)
   ActiveWorkbook.ExportAsFixedFormat 0, "D:\Facturatie\Facturen PDF\" & Year(Date) & "\factuur " & Sheets("factuur").Range("i13").Value & ".pdf"
   With Sheets("Factuur")
      Sheets("Database facturen").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 13) = Array(.Range("I13"), .Range("A3"), .Range("I12"), ['Factuur maken'!C40], _
          .Range("I11"), .Range("C52"), ['Factuur maken'!C36], .Range("H39"), .Range("H45"), .Range("H43"), .Range("B13"), .Range("B19"), .Range("B22"))
   End With
   
End Sub

Ik weet niet of er nu meer aangepast moet worden, maar ik heb uit de directory de map: Bedrijf, verwijderd. Deze stap was foutief.
 
Laatst bewerkt:
Code:
Sub Call_PDF()

    On Error Resume Next
    ThisWorkbook.FollowHyperlink "D:\Bedrijf\Facturatie\Facturen PDF\" & Year(Date) & "\factuur " & Sheets("factuur zoeken").Range("C10").Value & ".pdf"

End Sub

Is aangepast om 2 redenen.

Reden 1: Het stukje in de directory, betreffend: Bedrijf. Deze map is verwijderd omdat deze er niet meer is.

Reden 2: PDF oproepen werkte niet wegens een woordje factuur in het onderstaand gedeelte van bovenstaande code:

Code:
ThisWorkbook.FollowHyperlink "D:\Bedrijf\Facturatie\Facturen PDF\" & Year(Date) & "\factuur " & Sheets("factuur zoeken").Range("C10").Value & ".pdf"

Dit stukje aangepast naar: (Let op: het woord: factuur is verwijderd, maar ik weet niet of het aanhalingsteken voor: & Sheets..... ook moet worden gehaald.)

Code:
ThisWorkbook.FollowHyperlink "D:\Bedrijf\Facturatie\Facturen PDF\" & Year(Date) & "\" & Sheets("factuur zoeken").Range("C10").Value & ".pdf"

Beide redenen bij elkaar resulteert in onderstaande code:

Code:
Sub Call_PDF()

    On Error Resume Next
    ThisWorkbook.FollowHyperlink "D:\Facturatie\Facturen PDF\" & Year(Date) & "\" & Sheets("factuur zoeken").Range("C10").Value & ".pdf"

End Sub

Klopt bovenstaande.
 
Laatst bewerkt:
En wat is nu de bedoeling van het posten van deze codes ??????
 
De vraag stellen is hem beantwoorden :) Een Sub procedure eindigt altijd met End Sub; de End With is waarschijnlijk blijven staan van je eigen voorbeeld.

Yup zo te zien wel, maar heel die code klopte zo te zien van geen kant, omdat er een behoorlijk verschil in zit. Ik laat die maat van mij maar niets meer doen en laat hem het boek opnieuw lezen. Zelf heb ik vaak geen idee. Ik ben wel zover dat ik de logica van de codes zie en ik kan kleine aanpassingen maken, maar het opzetten......... Daar moet ik echt nog voor gaan zitten, want dat valt mij wel erg tegen. Heb vaak geen idee waar en hoe ik moet beginnen. Als ik dan later zoals hier die codes zie dan gaat er alleen maar door mij heen:" Ik denk te moeilijk en te groot." Ziet er allemaal zo simpel uit en met een paar ongetwijfeld in deze, simpele regeltjes bereikt men datgeen waar ik uren over aan het hersenkraken ben....... :shocked:
 
Laatst bewerkt:
Maar Warm Bakkertje, mijn post #11 daar moet een wijziging in komen wegens een foutmelding. En mijn verzoek voor dat andere is of je dat dan kunt controleren voordat ik deze wijzigingen doorvoer. Wellicht zal het zijn als er ook maar een spatie of teken teveel of verkeerd staat dat de code niet werk en dus dat ik het gewoon kan uitproberen, maar daar zit vaak mijn probleem..... Ik weet niet zeker of ik zaken in de war gooi. Ben er nogal huiverig voor.
 
Warm Bakkertje, nog een opmerking Post 11. Ik heb de knop factuur opslaan gekoppeld aan een macro: Opslaan of zoiets. Het geheel wordt dan weggeschreven naar de database, maar voor zover ik zie, wordt het bestand niet op mijn computer gezet als zijnde PDF.

Ik zie overigens al een aantal duisterheden voor wat ik niet wil hebben, maar dat komt na deze aanpassingen wel. Misschien dat het na de aanpassingen wel naar mijn zin is, omdat ik het nu nog niet in het geheel zie.

Waar ik nu wel achter ben gekomen is dat ik gewoon een willekeurige knop ergens kan plaatsen en dan kan koppelen aan een door jouw gemaakte macro. Vervolgens voert die knop gewoon die code uit. Dat wist ik niet. Weer wat geleerd. Hoe maak je ze toch?
 
Laatst bewerkt:
Begin gewoon eens bij het begin: een VBA boek voor beginners. Maakt het leven een stuk simpeler.

Ik vind het sowieso niet zo chique om iemand die de moeite heeft genomen je te helpen (jouw 'maat') hier af te katten.
Maak je ook hier geen vrienden mee.
 
Laatst bewerkt:
snb, Ik kat hem zeer zeker niet af. Hij vind het leuk om te doen en ik weet ook dondersgoed dat hij ook bezig is met leren. Sterker nog hij is veel verder dan ik ben en ik bewonder zijn doorzetting. Het komt wellicht over dat ik hem afkat, maar het mooie is hij zit er gewoon naast en wij zitten elkaar tegelijk in de maling te nemen en beide leren hiervan.

Maar heren en dames in het algemeen sorry als het verkeerd overkomt en dat is wel gemeend.
 
Het volgende en dat vinden wij niet. Wij hebben Sub Opslaan() aardig qua kleine "foutjes" hersteld. Er wordt nu een PDF opgeslagen in de database voor facturen en een kopie in PDF formaat naar de juiste map gestuurd. Hier hebben wij nog 2 kleine dingen. Het ene willen wij nog mee doorgaan. Het andere hebben wij opgegeven daar wij beide niet zien waar de "fout" zit.

Dit stukje is het opslaan van het juiste blad. In plaats dat het tabblad: Factuur, als PDF wordt gekopieerd, word het tabblad: Factuur maken, gekopieerd als PDF.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan