Hoi Excel toppers!
Heb inmiddels mijn VBA code een heel eind voor elkaar gekregen, maar nu is probleem 1, dat de VBA crasht als het bestand al geopend is. Hij opent hem dan als "alleen lezen", maar kan het bestand dan niet opslaan.
Weet iemand misschien hoe ik dit kan voorkomen en dat de macro stopt, zodra het bestand geopend is en dan een melding geeft "probeer het later opnieuw". Tevens moeten dan dus ook de onderliggende codes niet gebruikt worden, zoals de cellen wissen.
Probleem 2: ik heb er een extra code in gemaakt, waardoor alleen de cel inhoud wordt gekopieerd i.p.v. de hele formule, maar toch blijven sommige formules er wel in staan (cel verwijzingen) de link naar een andere werkmap gaat er wel uit, maar als er in C3 staat dat het cel A1 moet zijn, dan blijft deze er helaas wel gewoon in.
Het 3de probleem is, dat zodra de sheet zijn naam wijzigt (waarde uit C17) en deze naam bestaat al (per ongeluk 2x de macro uitgevoerd of zo), dan crasht de macro ook. Zou handig zijn dat hij dan de naam aanpast of de inhoud als nog kopieert en de naam dus niet aanpast. Uiteraard kan een foutmelding ook voldoende zijn met de melding tabblad bestaat al. Net wat makkelijker is en de code dan ook weer stopt.
En het 4de probleem, waar ik net achter kom is dat er mensen met een Engelse versie werken van Excel en met de Nederlandse versie. Nu moet de tekst "Blad1" zijn bij de NL versie en "Sheet1" bij de engelse versie om hem correct te laten werken. Nu moet ik dus met 2 bestanden werken wat natuurlijk niet gewenst is.
Waarschijnlijk allemaal heel makkelijk op te lossen, maar voor iemand die net komt kijken is het een grote puzzel
Dus ben benieuwd of er iemand is die een van de oplossingen heeft.
Alvast bedankt!
Heb inmiddels mijn VBA code een heel eind voor elkaar gekregen, maar nu is probleem 1, dat de VBA crasht als het bestand al geopend is. Hij opent hem dan als "alleen lezen", maar kan het bestand dan niet opslaan.
Weet iemand misschien hoe ik dit kan voorkomen en dat de macro stopt, zodra het bestand geopend is en dan een melding geeft "probeer het later opnieuw". Tevens moeten dan dus ook de onderliggende codes niet gebruikt worden, zoals de cellen wissen.
Probleem 2: ik heb er een extra code in gemaakt, waardoor alleen de cel inhoud wordt gekopieerd i.p.v. de hele formule, maar toch blijven sommige formules er wel in staan (cel verwijzingen) de link naar een andere werkmap gaat er wel uit, maar als er in C3 staat dat het cel A1 moet zijn, dan blijft deze er helaas wel gewoon in.
Het 3de probleem is, dat zodra de sheet zijn naam wijzigt (waarde uit C17) en deze naam bestaat al (per ongeluk 2x de macro uitgevoerd of zo), dan crasht de macro ook. Zou handig zijn dat hij dan de naam aanpast of de inhoud als nog kopieert en de naam dus niet aanpast. Uiteraard kan een foutmelding ook voldoende zijn met de melding tabblad bestaat al. Net wat makkelijker is en de code dan ook weer stopt.
En het 4de probleem, waar ik net achter kom is dat er mensen met een Engelse versie werken van Excel en met de Nederlandse versie. Nu moet de tekst "Blad1" zijn bij de NL versie en "Sheet1" bij de engelse versie om hem correct te laten werken. Nu moet ik dus met 2 bestanden werken wat natuurlijk niet gewenst is.
Code:
Public Sub Heads_Up_Opslaan()
' Heads_Up_Opslaan Macro
With Application
.Calculation = xlCalculationManual
.ScreenUpdating = False
.DisplayAlerts = False
End With
'Cellen huidig werkboek selecteren en 2de werkboek openen (bestandsnaam in cel)
Range("A1:Ac100").Select
Selection.Copy
Workbooks.Open filename:= _
(Sheets("Heads Up").Range("F14").Value)
'Werkblad achteraan de rij maken en cellen met opmaak plakken
Sheets.Add After:=Sheets(Sheets.Count)
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
, SkipBlanks:=False, Transpose:=False
'Werkblad hernoemen en rijen verbergen
Sheets("Blad1").Select
Sheets("Blad1").Name = ActiveSheet.Range("C17")
Application.CutCopyMode = False
ActiveWindow.DisplayHeadings = False
'Weeknummer aanpassen zodat de dagen van die week zich niet aanpassen
Range("G15:H16").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = ActiveSheet.Range("F17")
'Koppelingen naar andere werkboeken verbreken
astrLinks = ActiveWorkbook.LinkSources(Type:=xlLinkTypeExcelLinks)
If IsArray(astrLinks) Then
For iCtr = LBound(astrLinks) To UBound(astrLinks)
ActiveWorkbook.BreakLink Name:=astrLinks(iCtr), _
Type:=xlLinkTypeExcelLinks
Next iCtr
End If
'Beginsheet cel A1 selecteren
Sheets("Signalen & Acties").Select
Range("A1:A1").Select
'Werkboek opslaan en afsluiten
ActiveWorkbook.Save
ActiveWindow.Close
'terug naar werkboek en headsup cellen verwijderen
Range("D32:W35").Select
ActiveCell.FormulaR1C1 = " "
Range("D37:W40").Select
ActiveCell.FormulaR1C1 = " "
Range("D42:W45").Select
ActiveCell.FormulaR1C1 = " "
Range("D47:W50").Select
ActiveCell.FormulaR1C1 = " "
Range("D52:W55").Select
ActiveCell.FormulaR1C1 = " "
Range("D25:W25").Select
Selection.ClearContents
Range("A1").Select
'Display msgbox to inform user
MsgBox "Heads Up is opgeslagen", vbInformation, "Heads up is opgeslagen"
With Application
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
.DisplayAlerts = True
End With
End Sub
Waarschijnlijk allemaal heel makkelijk op te lossen, maar voor iemand die net komt kijken is het een grote puzzel

Alvast bedankt!
Laatst bewerkt: