Avatar billede Sidsel Seniormester
03. maj 2019 - 11:16 Der er 1 kommentar og
1 løsning

hvorfor lukker originalen VBA SaveCopyAs

Hej.
Jeg skal gennemgå en masse filer for om der er værdi i en af 3 celler.
Hvis der findes en værdi skal den gemme et kopi, og derefter slette originalen, hvis ingen værdi, skal den bare slette originalen.
Min kode ser således ud.

Sub tjek_felter()

'variabler
            Dim zb As String

Workbooks(2).Sheets("S").Select

If IsEmpty(Range("D127").Value) = False Then

    ActiveWorkbook.SaveCopyAs Filename:="K:\Aftaler med kodning\" & Range("C8").Value & ".xlsx"
 
      ActiveWorkbook.Close False
      zb = ActiveWorkbook.FullName
      ActiveWorkbook.Close False
      Kill zb
     
ElseIf IsEmpty(Range("D128").Value) = False Then

    ActiveWorkbook.SaveCopyAs Filename:="K:\Aftaler med kodning\" & Range("C8").Value & ".xlsx"
 
      ActiveWorkbook.Close False
      zb = ActiveWorkbook.FullName
      ActiveWorkbook.Close False
      Kill zb

  ElseIf IsEmpty(Range("D129").Value) = False Then

    ActiveWorkbook.SaveCopyAs Filename:="K:\Aftaler med kodning\" & Range("C8").Value & ".xlsx"
 
      ActiveWorkbook.Close False
      zb = ActiveWorkbook.FullName
      ActiveWorkbook.Close False
      Kill zb
     
Else
      ActiveWorkbook.Close False
      zb = ActiveWorkbook.FullName
      ActiveWorkbook.Close False
      Kill zb
End If

End Sub

Ligenu gemmer den som den skal, men den lukker originalfilen også, det er et problem, fordi jeg bruger en anden sub til at gennemgå en hel mappe, og hvis den ikke sletter originalfilen, bliver den bare ved at åbne den samme fil.
Avatar billede M.O Seniormester
03. maj 2019 - 14:30 #1
Jeg er langt fra nogen VBA haj, men er den sidste AvtiveWookbook.Close ikke for meget?

Else
      ActiveWorkbook.Close False
      zb = ActiveWorkbook.FullName
  '  ActiveWorkbook.Close False
      Kill zb
End If
Avatar billede M.O Seniormester
03. maj 2019 - 15:00 #2
Jeg prøvede lige med en test.

Sub tjek_felter()

'variabler
            Dim zb As String

Workbooks(2).Sheets("Ark1").Select
zb = ActiveWorkbook.FullName
MsgBox "The name of the active workbook is " & ActiveWorkbook.Name & " ZB er =" & zb
If IsEmpty(Range("A1").Value) = False Then

   
    ActiveWorkbook.SaveCopyAs Filename:="c:\temp\" & Range("C1").Value & ".xlsx"
    ActiveWorkbook.Close False
   
 
Else
      ActiveWorkbook.Close False
             
End If

Kill zb

End Sub
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

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