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

factuurummer ophogen en opslaan als xlsm

Status
Niet open voor verdere reacties.

HenkBakker

Gebruiker
Lid geworden
9 nov 2006
Berichten
164
Dankzij dit (en een ander) forum ben in de gelegenheid geweest om het volgende in VBA te schrijven:

Code:
Sub VolgFact()
  Range("I10").Value = Range("I10").Value + 1
  'Range("H11").Value = Date
End Sub

Public Sub OpslBestand()
  Dim NieuwFact  As Variant
  'kopiëren document als nieuwe factuur
  ActiveSheet.Copy
  NieuwFact = "C:\0 Bakker Handicrafts\05 facturen\uitgaand\2017\2017-" & Range("I10").Value & ".xlsx"
  ActiveWorkbook.SaveAs NieuwFact, FileFormat:=xlOpenXMLWorkbook
  ActiveWorkbook.Close
  VolgFact
End Sub


De bedoeling is dat het factuurnummer (in I10) met 1 wordt opgehoogd; daarna wordt deze opgeslagen op een bepaalde plaats (met "2017-" ervoor).

De uitvoering gaat helemaal goed. Maarrrrr...

Mijn factuur bestaat uit drie tabs. (1. om de artikelen, klantnaam enz. (gelinkt uit externe sheets) worden weergegeven (opmaak onbelangrijk). 2. adreslabel (links uit 1.) 3. de factuur zoals deze naar de klant gaat en in de administratie terecht komt (links uit 1.; opmaak belangrijk).)

Opmerkelijk is, dat als ik bovenstaande macro heb uitgevoerd, er slechts één tabblad (als nieuwe factuur; met nieuw nummer) wordt opgeslagen. Ik heb alle drie later nog nodig!

Daarnaast wil ik in de nieuwe facturen ook nog andere macro's kunnen gebruiken. Als ik daartoe de regel
NieuwFact = "C:\0 Bakker Handicrafts\05 facturen\uitgaand\2017\2017-" & Range("I10").Value & ".xlsx" wijzig in
NieuwFact = "C:\0 Bakker Handicrafts\05 facturen\uitgaand\2017\2017-" & Range("I10").Value & ".xlsm"
dan volgt een foutmelding (in de trant van: 'het is mogelijk om bestanden met deze extensie op te slaan'.

Wie kan mij aan een oplossing helpen? Voor het geval het van belang is: ik gebruik Office 2016 (en Office 365) op een computer met Windows 10.

Het voorbeeld "invoice 2017.5.xlsm" heft als doel om facturen met factuurnummer '2017-71001'; '2017-71002' enz. te maken. Deze worden later verder ingevuld.
Dat invullen behoort te geschieden in tabblad 'pre-factuur'. Met de ingevulde gegevens, wordt gelijk de 'adreslabel' en 'factuur' (zoals naar de klant wordt gestuurd) aangemaakt. Van de laatste maak ik daarna een pdf (voor de veiligheid).
 

Bijlagen

  • invoice 2017.5.xlsm
    909,8 KB · Weergaven: 83
Laatst bewerkt:
Als je al aan het speuren bent geweest dan weet je dus ook dat code tussen codetags geplaatst moeten worden en een voorbeeldbestand ook gewenst is.

Om meerder tabbladen in 1 keer te kopiëren kan je deze in een array zetten. Als je een bestand wil opslaan dan moet je het filetype meegeven.
 
Even vergeten te zeggen: ik heb weinig verstand van macro's en dergelijke.
Wat wordt er bedoeld met 'er moeten codes en codetags geplaats worden'?
En met: 'Om meerder tabbladen in 1 keer te kopiëren kan je deze in een array zetten. Als je een bestand wil opslaan dan moet je het filetype meegeven.'?
 
Post eens een vb bestandje, met wat dummy gegevens erin.
Je zal sneller en beter geholpen worden. (er zitten weinig helpers te wachten om alles na te bouwen)
Uw vraag op zich is niet zo moeilijk.
Met codetags wordt er bedoeld. Op het # drukken en dan je code tussen de codetags plaatsen.
Zoals hier met uw code
Code:
Sub VolgFact()
Range("I10").Value = Range("I10").Value + 1
'Range("H11").Value = Date
End Sub

Public Sub OpslBestand()
Dim NieuwFact As Variant
'kopiëren document als nieuwe factuur
ActiveSheet.Copy
NieuwFact = "C:\0 Bakker Handicrafts\05 facturen\uitgaand\2017\2017-" & Range("I10").Value & ".xlsx"
ActiveWorkbook.SaveAs NieuwFact, FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close
VolgFact
End Sub
 
werkbladen behouden bij uitvoeren macro

Dank voor alle geboden hulp!
Helaas ben ik te weinig thuis in VBA en Macro's, dat ik er écht iets aan heb...

Het probleem is, dat in onderstaande code de nieuw aangemaakte factuur slechts uit één werkblad bestaat. En niet meer uit het geheel aan werkbladen (3 stuks), waaruit het 'pakket' oorspronkelijk bestond.
Kan iemand mij helpen, door mijn code aan te passen, zodat:
1. het factuurnummer met 1 wordt opgehoogd
2. alle werkbladen blijven bestaan
3. dat de nieuwe factuur wordt opgeslagen
Code:
Sub VolgFact()
Range("I10").Value = Range("I10").Value + 1
'Range("H11").Value = Date
End Sub

Public Sub OpslBestand()
Dim NieuwFact As Variant
'kopiëren document als nieuwe factuur
ActiveSheet.Copy
NieuwFact = "C:\0 Bakker Handicrafts\05 facturen\uitgaand\2017\2017-" & Range("I10").Value & ".xlsx"
ActiveWorkbook.SaveAs NieuwFact, FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close
VolgFact
End Sub
 
Henk,

Als je je code aanpast door de rood gemarkeerde regel weg te halen dan werkt het wel.

Al blijft het mij een beetje een raadsel waarom je het zo wil doen. Ik zou kiezen voor één excel-sjabloon, die invullen, het factuurnummer automatisch laten bepalen en dan Opslaan Als.


Code:
Sub VolgFact()
Range("I10").Value = Range("I10").Value + 1
'Range("H11").Value = Date
End Sub

Public Sub OpslBestand()
Dim NieuwFact As Variant
'kopiëren document als nieuwe factuur
[I][COLOR=#FF0000][FONT=Arial Black]ActiveSheet.Copy[/FONT][/COLOR][/I]
NieuwFact = "C:\0 Bakker Handicrafts\05 facturen\uitgaand\2017\2017-" & Range("I10").Value & ".xlsx"
ActiveWorkbook.SaveAs NieuwFact, FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close
VolgFact
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan