Excel vba mentés másként bezárás majd fájl újranyitása

Excel vba mentés másként bezárás majd fájl újranyitása
2021-02-02T16:37:38+01:00
2021-02-03T10:43:59+01:00
2022-10-15T21:25:25+02:00
Nyausoft
Sziasztok,


Egy button csinál egy mentést és bezárást: (működik)
Sub Mentés()


   ChDrive "C"
    ChDir "C:\Meres"
    ActiveWorkbook.SaveAs Filename:= _
        Range("C5").Value, FileFormat:= _
        xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
        
    ChDrive "N"
    ChDir "N:\Temp"
    ActiveWorkbook.SaveAs Filename:= _
        Range("C5").Value, FileFormat:= _
        xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
        
        ActiveWorkbook.Close SaveChanges:=False
End Sub

Ezután u.e. a button meghívja az újranyitást:
Sub Reopen()

    Dim pth As String
    pth = "C:\Temp\final1_0.xlsm"

    Workbooks.Open Filename:=(pth)
    ReadOnly = False

End Sub

De ez valamiért nem fut le nem csinál semmit. Az oké, hogy amikor a fájl nyitva még u.e. a neve, de a mentés másként és bezárás után már kinyithatná. Ha átnevezem 1_1-re akkor frankón lefut és kinyit egy ilyen nevű fájlt. A cél, hogy állandóan a final1_0.xls-et nyissa ki újra.
Valakinek valami ötlet? Előre is köszi!

Üdv, K.
Mutasd a teljes hozzászólást!
Szia!
Nos, te magad is rájöttél a jelenség okára. Mert mi is történik:
Megnyitod az 1_0  fájlt.
Ebben lefuttatsz egy SaveAs-t ami átnevezi a fájlt és elmenti egy másik helyre
Ezután lefuttatsz egy újabb mentést más néven, másik helyre.
Vagyis az eredeti 1_0 nevű fájlod helyett lesz egy második néven elmentett fájl.
Majd ezt a fájlt (munkafüzetet) bezárod!
Így nem marad nyitott munkafüzet, tehát nincs ami fusson!
Sőt, a megoldásra is rájöttél:

Előbb kellene menteni másként aztán kinyitni a final1_0-át és bezárni a másként mentett fájlt?

Igen. csak ne feledd, amikor megnyitod az 1_0-át, akkor az lesz az aktív munkafüzet, tehát a bezárás előtt vissza kell váltani a mentett munkafüzetre (vagy nevével hivatkozva bezárni).
Üdv.
Mutasd a teljes hozzászólást!

  • Szia!
    1. Nem tudjuk, hogy eredetileg mi volt a megnyitott fájl neve.
    2. Nem tudjuk, hogy mi a tartalma a C5 cellának.
    3. Mented ugyanazon a néven (C5 cella) a C:\Meres könyvtárba és az N:\Temp könyvtárba
    4. Ezután a C:\Temp\final1_0.xlsm-et szeretnéd megnyitni. Volt egyáltalán ilyen nevű fájl ebben a könyvtárban?

    ez valamiért nem fut le nem csinál semmit.

    Valami hibaüzenet? Vagy ki van kapcsolva a hibajelzés? Ha lépésenként futtatod, akkor mi történik?
    Megnézted, hogy létezik-e a megnyitni kívánt fájl?
    Ráadásul  az xlsm kiterjesztésű fájlt szeretnéd megnyitni, de a leírásban az xls kiterjesztésre hivatkozol. A kettő nem ugyanaz!
    Üdv.
    Mutasd a teljes hozzászólást!
  • Szia Nyausoft!

    Hol van a Sub Mentés() eljárás és még inkább hol van a Sub Reopen() eljárás?

    Ha átnevezem 1_1-re akkor frankón lefut és kinyit egy ilyen nevű fájlt.

    Miért nem jó neked, ha ...1_1.xlsm ként meg tudod nyitni? A munkád végeztével úgyis újra mentés másként ... új nevet adsz neki. Hát akkor nem mindegy, hogy mi volt a "lánykori neve"?
    Mutasd a teljes hozzászólást!
  • Helló,

    A fájl neve eredetileg final1_0 és ez van a C:\Temp könyvtárban.
    A C5 cellába minden alkalommal egy tök más elnevezés kerül és ezen a néven menti is a C:\ Mesres és N:\Temp könyvtárba majd bezárja.
    Ezután szeretném én újra kinyitni a final1_0 nevű fájlt, de nem hajlandó megnyitni, nem is csinál semmit, nem kapok hibaüzenetet sem.
    A final1_1 nevű fájlal csak kísérleteztem és csak a nyitás kódot futtatom, mert két final1_0 nevű nem lehet nyitva. Egyébként azt megnyitja frankón.
    Ha élesben tesztelem akkor elmenti a megfelelő helyekre megfelelő néven bezárja és nem csinál semmit... :(

    Üdv, K.
    Mutasd a teljes hozzászólást!
  • Helló,

    Igen de akkor kellene legyen egy final1_1 nevű másolat és mi van ha azt is újra akarom nyitni? Az nyissa újra az final1_0-át?Egymásnak passzolgatják... végülis ha így működik... Csak szeretném érteni miért nem nyitja meg ugyanazt a final1_0-át amit eredetileg használtam mentettem más néven majd bezártam... :S

    Üdv, K.
    Mutasd a teljes hozzászólást!
  • Szia!
    Továbbra is kérdéses:
    1. Nem írtál a kiterjesztésekről semmit
    2. A figyelmeztetések el vannak-e nyomva?
    3. Megnézted-e, hogy ott van-e a keresett fájl a C:\Temp könyvtárban?
    4. Hol van a button, aminek az eseményéhez kötöd a makrókat és melyik fájlban vannak ezek a makrók?
    4. Ez utóbbit Verax kérdezte én is kiváncsi lennék rá.
    5. Marad egyáltalán nyitva munkafüzet a két mentés után és az melyik?
    Üdv.
    Mutasd a teljes hozzászólást!
  • Helló,

    A keresett fájl tuti, hogy ott van a C:\ Temp könyvtárban, hiszen onnan van megnyitva.
    A button a következőt csinálja és az eredeti final1_0.xlsm-ben található:

    Private Sub CommandButton1_Click()
    Call Mentés
    Call Reopen
    End Sub

    Lehet az a baj, hogy nem marad nyitva munkafüzet? Előbb kellene menteni másként aztán kinyitni a final1_0-át és bezárni a másként mentett fájlt?
    Elvileg minden hibánál megáll, nekem úgy van beállítva, vagy mit értesz figyelmeztetések alatt?

    Üdv, K.
    Mutasd a teljes hozzászólást!
  • Szia!
    Nos, te magad is rájöttél a jelenség okára. Mert mi is történik:
    Megnyitod az 1_0  fájlt.
    Ebben lefuttatsz egy SaveAs-t ami átnevezi a fájlt és elmenti egy másik helyre
    Ezután lefuttatsz egy újabb mentést más néven, másik helyre.
    Vagyis az eredeti 1_0 nevű fájlod helyett lesz egy második néven elmentett fájl.
    Majd ezt a fájlt (munkafüzetet) bezárod!
    Így nem marad nyitott munkafüzet, tehát nincs ami fusson!
    Sőt, a megoldásra is rájöttél:

    Előbb kellene menteni másként aztán kinyitni a final1_0-át és bezárni a másként mentett fájlt?

    Igen. csak ne feledd, amikor megnyitod az 1_0-át, akkor az lesz az aktív munkafüzet, tehát a bezárás előtt vissza kell váltani a mentett munkafüzetre (vagy nevével hivatkozva bezárni).
    Üdv.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd