Avatar billede folj Forsker
05. april 2018 - 12:16 Der er 7 kommentarer og
1 løsning

Er der nogle kendte grunde til at en excelfil med macro (VBA) kan crashe i åbningssituationen?

Er der nogle kendte grunde til at en excelfil med macro (VBA) kan crashe i åbningssituationen?

Jeg har nemlig en excelfil som crasher i åbningssituationen indimellem.
Der sker dog så ofte som med 2-3 ugers mellemrum.

Det er en fil der bruges dagligt af mange brugere.
Filen har en søster-fil som er opbygget efter samme princip, og den har bare 2 andre råvarer der holdes regnskab for . Denne fil har aldrig haft det samme problem og har kørt fejlfrit i årevis.

Jeg efterlyser at nogen kender nogle grunde til at en fil med macro (VBA), excelfil med macro (VBA) kan crashe i åbningssituationen.

Hvis det er insteressant hvad der står i hændelsesproceduren, så ser den således ud:

Private Sub Workbook_Open()

If IsStdFile() = True Then ' kun hvis filen ligger på sin std-placering
    ExtendPlan ' forlænger planen til det valgte antal dage, og derefter aktiverer DeleteOldRows
    SwitchToNextYear ' tjekker om betingelser af afvikling af årsskifte er opfyldt (eksempelvis kun få dage tilbage af året).
  GlucosePrimoAmountIsWrittenToFile = False ' variabel styrer at der ikke indskrives flere gange
  CheckBeholdningsCheck ' kontrollerer om der er lavet beholdnings-tjek i dag
  TjekNextPurchase ' kontrollerer at vi ikke løber tør
  MakeBackUp ' tager den daglige back-up, hvis den ikke allerede er taget
Else
  MsgBox "Filen er ikke på sin std-placering - det må være en BackUp-fil"
  UnhideAll ' gør alle rækker synlige
End If
  Sheets(3).Select

End Sub


Jeg har lagt mærke til at når den crasher, så har den nået at afvikle alt til og med linjen MakeBackUp som tager en vellykket backup, som jeg så kan åbne og bringe filen frem igen.

Herefter kommer der jo kun en linje der vælger den korrekte start-sheet…

Er der nogen der har nogle gode forslag?
Mvh Folmer

Alle svar og spørgsmål er velkomne.
Gætterier og måske'er har jeg selv.
Avatar billede kabbak Professor
05. april 2018 - 15:22 #1
Vi kan lave en tilføjelse, så koden går videre og ikke stopper, men jeg kan ikke forklare fejlen, den ligger måske i MakeBackUp, må jeg se koden på den.?

Private Sub Workbook_Open()
On Error Resume Next ' NY
If IsStdFile() = True Then ' kun hvis filen ligger på sin std-placering
    ExtendPlan ' forlænger planen til det valgte antal dage, og derefter aktiverer DeleteOldRows
    SwitchToNextYear ' tjekker om betingelser af afvikling af årsskifte er opfyldt (eksempelvis kun få dage tilbage af året).
  GlucosePrimoAmountIsWrittenToFile = False ' variabel styrer at der ikke indskrives flere gange
  CheckBeholdningsCheck ' kontrollerer om der er lavet beholdnings-tjek i dag
  TjekNextPurchase ' kontrollerer at vi ikke løber tør
  MakeBackUp ' tager den daglige back-up, hvis den ikke allerede er taget
Else
  MsgBox "Filen er ikke på sin std-placering - det må være en BackUp-fil"
  UnhideAll ' gør alle rækker synlige
End If
  Sheets(3).Select

End Sub
Avatar billede folj Forsker
05. april 2018 - 17:33 #2
Men med tilføjelsen af linjen, slår du jo kun fejlmeddelelser fra...
Og jeg kan aktivere fejlmedfelelser igen med linjen:
On Error GoTo 0
Hvad er det lige vi vil opnå med det?
Avatar billede folj Forsker
05. april 2018 - 17:35 #3
Og jeg skal nok poste koden til makebackup i morgen når jeg igen er på min
arbejdsPC
Avatar billede folj Forsker
06. april 2018 - 08:23 #4
Og her kommer min MakeBackUp procedure...

Sub MakeBackUp()
' funktion der tager en daglig backup til defineret mappe
' VBA-code created 28-04-2014 by Folmer Jensen, folj@novonordisk.com (privat: folmerbedstefar@gmail.com)

Dim BackupMappe As String
Dim BackupFilnavn As String

' StdMappe forlænges med stien til mappen med backupfiler
'BackupMappe = STDMAPPE & "\Arkivering\BackUps " & Year(Date) & "\" ' Genererer eksempelvis strengen "BackUps 2014"
BackupMappe = STDMAPPE & "\Arkivering\BackUps\" ' Genererer eksempelvis strengen "BackUps" og vi har droppet det med årstal fra 15. aug 2017

'MsgBox "backUp placeres i mappen: " & Chr(10) & BackupMappe

On Error Resume Next 'aktiverer fejlbehandlingen (gå til næste linie hvis en linie laver runtime error)
    MkDir BackupMappe ' hvis mappen allerede findes vil det udløse en fejl, men her har vi jo aktiveret en fejlshåndtering til formålet
On Error GoTo 0 'aktiverer fejlbehandlingen

' generer et navn til backupfiler
BackupFilnavn = DAGSKOPINAVN & Format(Date, "YYYYMMDD") & ".xlsm"
MaanedsBackupFilnavn = MAANEDSKOPINAVN & Format(Now + 1 - Day(Date), "YYYYMMDD") & ".xlsm" ' genererer backupnavnet til den første dag i måneden


Dim ThisFilePath As String
ThisFilePath = ThisWorkbook.FullName


'Vi skal lige sikre os at proceduren kun afvikles fra den rigtige plan, og ikke fra backups
'If Right(ThisWorkbook.Path, 75) = Right(STDMAPPE, 75) Then ' vi tester den bageste del af stien
If IsStdFile() = True Then ' kun hvis filen ligger på sin std-placering
  If Dir(BackupMappe & MaanedsBackupFilnavn) = "" Then 'hvis der ikke allerede findes en backup fra i går
  ActiveWorkbook.SaveCopyAs BackupMappe & MaanedsBackupFilnavn
  End If
  If Dir(BackupMappe & BackupFilnavn) = "" Then 'hvis der ikke allerede findes en backup fra i går
  ActiveWorkbook.SaveCopyAs BackupMappe & BackupFilnavn
  EraseBackUp  'kører funktionen der sletter eventuelle gamle backups
  End If
End If

End Sub
Avatar billede folj Forsker
06. april 2018 - 09:42 #5
Jeg kan lige tilføje omkring min procedure MakeBackUp at stier og filnavne den benytter hentes fra nogel globale Constanter som jeg har liggende I et separate modul.

Derved genereres filnavne som "MaanedsKopiRawWare_20180401.xlsm" som det seneste månedskopi kom til at hedde.
Avatar billede kabbak Professor
06. april 2018 - 16:58 #6
#2
"macro (VBA) kan crashe " opfattede jeg som at den gik i fejl, men du mener vel at du ikke kan komme i kontakt med Excel, eller at den lukkede ned .

#4
Jeg kan ikke se problemer i koden.
Avatar billede folj Forsker
09. april 2018 - 09:29 #7
@kabbak

Ja. jeg mener at filen ikke længere er brugbar. Filen har hele sin VBA-del intakt, men jeg afslutter debug-mode, så ligger der slet ingen sheets .

De ting der udføres under hændelsesproceduren Workbook_Open, opleves at de afvikles før filen ses åben.

Og den slutter så af med at ikke kunne udføre almindelige ting som at finde den aktuelle række osv..

Det er hver gang noget der sker når filen åbnes om morgenen - altså hver gang der skal tages en BackUp.

Så kan man jo tænke at "jamen så har han jo et kopi liggende og den kan jo hurtigt genskabes..."

Ja men sidste gang hvor jeg var på ferie havde filen ligget stille næsten hele tiden, fordi de almindelige brugere ikke var I stand til at gå ind og finde dagens BackUp, og genskabe filen.

Jeg har ligeledes nogle automatiserede procedurere I filen som tilnærmelsesvis sætter virksomheden i stå. Hver uge køres der nogle automatiserede procedurer I forhold til indkøb, der så heller ikke er kørende.

Takker for dit engagement, og din gennemgang, og det glæder mig at du ikke fandt nogen fejl i koden.

Jeg har nogle tanker om at lave filen som et kopi af den fil der aldrig fejler (søster-filen).
Avatar billede folj Forsker
22. maj 2018 - 08:29 #8
Jeg har undersøgt meget I hvad der er forskel på den Workbook_Open procedure der køres i filen og i den søster-fil der aldrig crasher.

Jeg har forsøgt at gøre dem så ens som det nu er muligt, og nu er det 6 uger siden den sidst crashed.

Jeg har en tro på at der stibiliteten nu er forbedret, og at det er det der gør en forskel.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Stort udvalg af Excel kurser til alle niveauer og jobfunktioner

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





White paper
Sikkerhed gjort enkelt: Beskyt din virksomhed direkte i browseren