VBA Code start opnieuw na afronden

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • T.Scholten
  • Registratie: November 2024
  • Laatst online: 10-11-2024
Beste Forumleden,

Ik gebruik een excelbestand als template waarin de module 'save as' op geroepen kan worden dmv een prompt die start wanneer je het template opent. De code voor het prompt met de vraag op je het bestand wil opslaan als is daarom geschreven in het 'This Workbook' module.

Op een van mijn PCs rond de code netjes af en heb ik het nieuw bestand voor mij. Op een andere PC rond de code ook af, maar opent het template daarna opnieuw en vraagt weer of ik wil opslaan als. Ik kom er niet uit waarom dezelfde code zich op deze PCs anders gedraagt. Heeft een van jullie een idee wat hier aan de hand kan zijn?

Beste antwoord (via T.Scholten op 10-11-2024 15:36)


  • pporrio
  • Registratie: Februari 2010
  • Laatst online: 22:25
Read-Only voor het originele Excel-macrobestand (.xlsm) zou niet uit moeten maken. Het bestand wordt immers onder een andere naam opgeslagen, waardoor de Read-Only eigenschap niet meer van toepassing is op het hernoemde bestand. Als de macro is uitgevoerd heb je enkel het hernoemde kopiebestand open staan, dus dan gaat het Workbook_Open() event niet opnieuw af.

Ik vermoed daarom ook dat dit een Excel-instelling is op de andere PC die afwijkt van de andere PC. Blijkbaar wordt het bestand daar nog een keer geopend waardoor het Workbook_Open() event nogmaals afgaat.

Mijn platencollectie

Alle reacties


Acties:
  • 0 Henk 'm!

  • pporrio
  • Registratie: Februari 2010
  • Laatst online: 22:25
Misschien handig als je de code even post tussen code tags ;)

Mijn platencollectie


Acties:
  • 0 Henk 'm!

  • Reinier
  • Registratie: Februari 2000
  • Laatst online: 22:55

Reinier

\o/

Rondt

Plaats de code dan...

Acties:
  • 0 Henk 'm!

  • Reinier
  • Registratie: Februari 2000
  • Laatst online: 22:55

Reinier

\o/

My guess: De andere pc opent hem read only. Het opslaan in de vba is dan ook een save as, en dan kom je in een loop.

Acties:
  • 0 Henk 'm!

  • T.Scholten
  • Registratie: November 2024
  • Laatst online: 10-11-2024
Hieronder de code.
Omdat de code het op de ene pc gewoon normaal doet verwacht ik niet dat ik hier het probleem moet zoeken, maar meer in een instelling in Excel oid. Read only zou kunnen inderdaad. Ga ik bekijken.
dank voor de reacties tot nu toe.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Private Sub Workbook_Open()
    Dim response As VbMsgBoxResult
    Dim folderPath As String
    Dim fileName As String
    
    ' Vraag de gebruiker om een bevestiging
    response = MsgBox("Wilt u het bestand opslaan in een nieuwe map?", vbOKCancel + vbQuestion, "Opslaan als")
    
    If response = vbOK Then
        ' Laat de gebruiker een map kiezen
        With Application.FileDialog(msoFileDialogFolderPicker)
            .Title = "Kies een map"
            If .Show = -1 Then ' Als de gebruiker een map selecteert
                folderPath = .SelectedItems(1)
                fileName = "NieuwBestand_" & Format(Now, "yyyy-mm-dd_hh-mm-ss") & ".xlsm"
                ' Sla het bestand op in de geselecteerde map
                ThisWorkbook.SaveAs fileName:=folderPath & "\" & fileName, FileFormat:=xlOpenXMLWorkbookMacroEnabled
                MsgBox "Bestand opgeslagen als: " & folderPath & "\" & fileName
            Else
                MsgBox "Geen map gekozen. Het bestand is niet opgeslagen."
            End If
        End With
    Else
        MsgBox "De actie is geannuleerd."
    End If
End Sub

[ Voor 0% gewijzigd door F_J_K op 04-11-2024 09:50 . Reden: code tags om de code gezet ]


Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • pporrio
  • Registratie: Februari 2010
  • Laatst online: 22:25
Read-Only voor het originele Excel-macrobestand (.xlsm) zou niet uit moeten maken. Het bestand wordt immers onder een andere naam opgeslagen, waardoor de Read-Only eigenschap niet meer van toepassing is op het hernoemde bestand. Als de macro is uitgevoerd heb je enkel het hernoemde kopiebestand open staan, dus dan gaat het Workbook_Open() event niet opnieuw af.

Ik vermoed daarom ook dat dit een Excel-instelling is op de andere PC die afwijkt van de andere PC. Blijkbaar wordt het bestand daar nog een keer geopend waardoor het Workbook_Open() event nogmaals afgaat.

Mijn platencollectie


Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
@T.Scholten,
de macro zit wat vreemd in elkaar vind ik. Je vraagt de gebruiker of hij het bestand wil opslaan in een nieuwe map, en als je daar bevestigend op antwoordt, dan blijkt het helemaal niet mogelijk om het bestand in een nieuwe map op te slaan, je moet per se een reeds bestaande map kiezen. Dat kun je dus best aanpassen. Als ik een bestaande map kies, wordt het bestand wel opgeslagen met de door jou bedachte naam ("Nieuw bestand" + datum en tijd) en blijft het open staan.

Acties:
  • +1 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

offtopic:
Ik ben zo vrij geweest code tags om de code te zetten. Dan is het wat beter leesbaar.

Ook: welkom!


Wegens veiligheid zou een VBA-macro niet zomaar moeten mogen draaien op een andere PC, zonder valide digi handtekening. Misschien dat daar het verschil in gedrag vandaan komt.

Of: als het ongewenst is dat de code weer draait, sla niet op als xlsm maar als xlsx. Al zou ik dan liever meteen de code strippen uit het nieuwe bestand.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
dix-neuf schreef op maandag 4 november 2024 @ 09:50:
@T.Scholten, de macro zit, vind ik, wat vreemd in elkaar. Je vraagt de gebruiker of hij het bestand in een nieuwe map wil opslaan, maar als hij bevestigend antwoordt, blijkt dat dit helemaal niet mogelijk is; je moet per se een bestaande map kiezen. Dit zou je dus kunnen aanpassen. Wanneer ik een bestaande map kies, wordt het bestand wel opgeslagen met de door jou bedachte naam ("Nieuw bestand" + datum en tijd) en blijft het open staan.
In de msoFileDialogFolderPicker kun je ook een nieuwe map maken.

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
@Room42,
Als ik de nieuwe map maak terwijl de macro wordt uitgevoerd, dan kan ik die map wel maken, maar die map wordt dan vervolgens door de macro niet aanvaard als opslaglokatie. Dus moet die nieuwe map per se aangemaakt worden voordat de macro wordt uitgevoerd.

[ Voor 27% gewijzigd door dix-neuf op 04-11-2024 10:25 ]


Acties:
  • 0 Henk 'm!

  • T.Scholten
  • Registratie: November 2024
  • Laatst online: 10-11-2024
Dank voor alle hulp. Het is me uiteindelijk gelukt. Het had te maken met een AddIn instelling. Ik heb de AddIn uitgezet en nu doet hij het goed.
Pagina: 1