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

Macro in excel

  • Onderwerp starter Onderwerp starter kdapp
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

kdapp

Gebruiker
Lid geworden
7 okt 2010
Berichten
23
Ik heb de volgende macro:

Sub Offerte_save()
Dim offnum$, offdatum, pad$, filenaam$
Application.ScreenUpdating = False

ActiveSheet.Copy
ActiveSheet.Unprotect

Cells.Select
Selection.Copy
On Error Resume Next
Selection.PasteSpecial Paste:=xlPasteValues
On Error GoTo 0
[A1].Select

wiskol = "A:A,O:O"
Range(wiskol).Delete Shift:=xlToLeft

On Error Resume Next
ActiveSheet.DrawingObjects.Visible = True
ActiveSheet.DrawingObjects.Delete
On Error GoTo 0

pad = "C:\Facturen\"
filenaam = pad & "Offerte " & [=offnum] & "_" & [=offdatum] & ".xls"

On Error GoTo myError
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=filenaam
ActiveWindow.Close

Application.DisplayAlerts = True
Application.ScreenUpdating = True
On Error GoTo 0
MsgBox (" De offerte is opgeslagen in het Archief ")
Exit Sub

myError:
If Sheets.Count = 1 Then ActiveWorkbook.Close
Application.ScreenUpdating = True
MsgBox (" Er is een fout opgetreden. De offerte is niét opgeslagen. ")
Application.DisplayAlerts = True
On Error GoTo 0
End Sub

Het is de bedoeling dat deze macro werkt met een pad uit een worksheet dat RekeningenOverzicht heet het pad staat op H6 en ik heb H6 hernoemt naar LocatieBestanden.
ik wil geen vast pad hebben en wil het daarom ingeven in de worksheet op H6
Het staat nu vast op pad = "C:\Facturen\"
Heb al veel geprobeerd en ben bijna klaar met het programmaatje.

Wie kan mij helpen.
 
Om te verwijzen naar een cel uit het andere werkblad verander je...

Code:
pad = "C:\Facturen\"

..in ...

Code:
Worksheets("RekeningenOverzicht").Range("Locatiebestanden").Value

Met vriendelijke groet,


Roncancio
 
Heb ik gedaan maar nu krijg ik een fout melding:

Fout -2147352565 (800 2000b) tijdes uitvoering
De index van de opgegeven verzameling valt buiten het berijk
 
Heb ik gedaan maar nu krijg ik een fout melding:

Fout -2147352565 (800 2000b) tijdes uitvoering
De index van de opgegeven verzameling valt buiten het berijk

Wat staat er precies in die cel?

Met vriendelijke groet,


Roncancio
 
Het pad waar het bestand (actieve sheet) wordt weggeschreven

Klaas
 
Laatst bewerkt:
Het programmaatje zoals ik het nu heb gemaakt werkt prima maar het probleem is dat er nu mensen zijn die het graag willen hebben en ik niet van plan ben om bij iedereen langs te gaan om de macro aan te passen zodoende heb ik deze vraag gepost. Het is een offerte en Factuur programmaatje die ook de rekeningen bijhoud en alles vanaf één sheet bediend kan worden ik heb het niet helemaal zelf geschreven maar wel zo gemaakt dat alles met elkaar samenwerkt factuur nummers en offerte nummers worden automatisch gegenereerd in elk willekeurig format.
het enige dat er nog niet in zit is het bijhouden van de BTW voor de belasting dat moet ik nu nog handmatig doen maar ik denk dat ik dat morgen klaar heb.
 
Code:
If Right([=Locatiebestanden], 1) = "\" Then
    pad = [=Locatiebestanden]
Else
    pad = [=Locatiebestanden] & "\"
End If
 
Dit werkt 200% zeker(als al de cellen juist benoemd zijn natuurlijk)
Code:
Sub tst()
If Right([=Locatiebestanden], 1) = "\" Then
    pad = [=Locatiebestanden]
Else
    pad = [=Locatiebestanden] & "\"
End If
filenaam = pad & "Offerte " & [=offnum] & "_" & [=offdatum] & ".xls"
MsgBox filenaam
End Sub
 
Sub Offerte_save()
Dim offnum$, offdatum, pad$, filenaam$
Application.ScreenUpdating = False

' kopieer werkblad naar nieuwe sheet
ActiveSheet.Copy
ActiveSheet.Unprotect

' vervang formules door waarden
Cells.Select
Selection.Copy
On Error Resume Next
Selection.PasteSpecial Paste:=xlPasteValues
On Error GoTo 0
[A1].Select

' wis overbodige rijen en kolommen (hier laten staan ivm index-formules
wiskol = "A:A,O:O"
Range(wiskol).Delete Shift:=xlToLeft

' wis alle shapes
On Error Resume Next
ActiveSheet.DrawingObjects.Visible = True
ActiveSheet.DrawingObjects.Delete
On Error GoTo 0

' bepaal filenaam
pad = "C:\Facturen\"
filenaam = pad & "Offerte " & [=offnum] & "_" & [=offdatum] & ".xls"

' opslaan
On Error GoTo myError
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=filenaam
ActiveWindow.Close

Application.DisplayAlerts = True
Application.ScreenUpdating = True
On Error GoTo 0
MsgBox (" De offerte is opgeslagen in het Archief ")
Exit Sub

myError:
If Sheets.Count = 1 Then ActiveWorkbook.Close
Application.ScreenUpdating = True
MsgBox (" Er is een fout opgetreden. De offerte is niét opgeslagen. ")
Application.DisplayAlerts = True
On Error GoTo 0
End Sub

Kan dit in de bestaande macro, deze heb ik nodig.
Als ik een nieuwe sub maak krijg ik de melding dat er een End sub verwacht wordt.
Ik zoek een oplossing in de bestaande macro dat maakt het nu zo lastig.
Ik weet dat er verschillende oplossingen zijn en ik heb er zelf ook veel maar kan niet de juiste combo vinden in bovenstaande macro
 
Laatst bewerkt:
Code:
Sub Offerte_save()
Dim offnum$, offdatum, pad$, filenaam$
Application.ScreenUpdating = False
' bepaal filenaam
If Right([=Locatiebestanden], 1) = "\" Then
    pad = [=Locatiebestanden]
Else
    pad = [=Locatiebestanden] & "\"
End If
filenaam = pad & "Offerte " & [=offnum] & "_" & [=offdatum] & ".xls"

' kopieer werkblad naar nieuwe sheet
ActiveSheet.Copy
ActiveSheet.Unprotect

' vervang formules door waarden
Cells.Select
Selection.Copy
On Error Resume Next
Selection.PasteSpecial Paste:=xlPasteValues
On Error GoTo 0
[A1].Select

' wis overbodige rijen en kolommen (hier laten staan ivm index-formules
wiskol = "A:A,O:O"
Range(wiskol).Delete Shift:=xlToLeft

' wis alle shapes
On Error Resume Next
ActiveSheet.DrawingObjects.Visible = True
ActiveSheet.DrawingObjects.Delete
On Error GoTo 0

' opslaan
On Error GoTo myError
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=filenaam
ActiveWindow.Close

Application.DisplayAlerts = True
Application.ScreenUpdating = True
On Error GoTo 0
MsgBox (" De offerte is opgeslagen in het Archief ")
Exit Sub

myError:
If Sheets.Count = 1 Then ActiveWorkbook.Close
Application.ScreenUpdating = True
MsgBox (" Er is een fout opgetreden. De offerte is niét opgeslagen. ")
Application.DisplayAlerts = True
On Error GoTo 0
End Sub
 
Hartelijk bedankt,
:thumb::thumb::thumb:
het programmaatje werkt nu zoals ik het graag zou willen hebben.
nog een paar kleine dingen en dan is het klaar.

Klaas
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan