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

Melding geven als bestand geopend is en dan VBA stoppen

Status
Niet open voor verdere reacties.

MennoL

Gebruiker
Lid geworden
11 mrt 2015
Berichten
18
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.

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 :D Dus ben benieuwd of er iemand is die een van de oplossingen heeft.
Alvast bedankt!
 
Laatst bewerkt:
Dag MennoL !

Per toeval kom ik op je post en zie dat er nog geen reacties zijn. Ik wil je best helpen, maar het zou handig zijn als je een voorbeeld zou posten.

Grtz,
MDN111.
 
Dag MennoL !

Per toeval kom ik op je post en zie dat er nog geen reacties zijn. Ik wil je best helpen, maar het zou handig zijn als je een voorbeeld zou posten.

Grtz,
MDN111.

Hoi MDN,

Het is inmiddels verholpen via www.worksheet.nl
Toch bedankt voor het reageren.

Groet, Menno
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan