Excel(VBA) Hány új Munkafüzet(n) lehet ?

Excel(VBA) Hány új Munkafüzet(n) lehet ?
2012-10-12T08:43:04+02:00
2012-10-12T22:56:02+02:00
2022-10-24T16:45:33+02:00
  • A konkrét kérdésedre nem tudom a választ, de abban az esetben, ha egyszerre csak max. 1-2 tucat munkafüzet van nyitva, és így előfordulhat, hogy van határszáma az összesen megnyitott munkafüzetnek, akkor azt én igazából bugnak tekinteném...
    Tegyük fel, hogy ez a határszám integer.maxvalue. Ebben az esetben csak egy feltételvizsgálat kellene, hogy melyiknek lenne szabad a neve. Ebben azért nem vagyok olyan biztos, hogy a ms így csinálja...

    -----

    Persze ha bezárják a programot és újra megnyitják, akkor nullázódik ez az érték


    1. Nem nullázódik, hanem a legelső szabad nevet keresi meg(ebben a tekintetben úgy viselkedik, ahogy az elején írtam).

    2. Ha annyira "tartasz" attól, hogy a sok megnyitástól "elfogynak" a nevek, akkor csinálhatod azt, hogy createobject()-el hozod létre mindig a másik munkafüzetet, így mindig az éppen aktuálisan szabad nevet kapja. A Kövektező kód esetén minden sorban ugyanaz a név szerepel. Ha nyitsz egy új munkafüzetet, aminek a neve munkafüzet1, ebbe írod ezt a kódot, és indításnál nincs másik munkafüzet nyitva, akkor mindig munkafüzet2-t ír ki:

    For i = 0 To 5 Set exc = createobject("excel.application") exc.visible = True Set wb = exc.workbooks.add Debug.Print wb.name wb.close exc.quit set wb = nothing set exc = nothing Next
    Mutasd a teljes hozzászólást!
  • Ebben igazad van.

    Írtam is, hogyha fájlrendszer szinten nézed (függetlenül mindenféle programozástól), akkor mi a helyzet.
    Illetve, hogy ciklus esetén tényleg van korlát, ami nem Integer, inkább a Long.


    Mutasd a teljes hozzászólást!
  • A munkafüzet neve az szöveg, nem integer.

    Te hogy növelnél meg a MS fejlesztők helyében egy a név végén lévő sorszámot?
    Mutasd a teljes hozzászólást!
  • Mint írtam, fájlrendszer függő a dolog.
    A munkafüzet neve az szöveg, nem integer.
    A korlát lehet még a fájl nevének hossza (asszem talán 255 karakter)

    Még ennél jóval hosszabb is lehet:
    Munkafüzet9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999.xls

    Ha esetleg ciklusban használod a Munkafüzet után lévő számokat, az is lehet Long típusú,
    akkor is lehetne több mint 2 milliárd: 2,147,483,647 -1

    Ha úgy vesszük, ennyit csak nem hozol már létre....
    Mutasd a teljes hozzászólást!

  • Ezt a linket már néztem én is, de ez a "Nyitott munkafüzet"-re vonatkozik.

    Nekem egyszerre csak 2-3 van nyitva, azzal együtt amit ideiglenesen nyitok meg.

    Ami aggaszt hogy annak az ideiglenes munkafüzetnek a nevében szereplő szám megy felfele tarva a végtelenbe.
    De erről a számról sehol sem írnak, hogy mennyi lehet.

    Bár valószínűnek látom az integer felsőhatáros választ, ha így van akkor nincs miért aggódnom.

    Csak amiatt szerettem volna "pontos" értéket tudni, hogyha esetleg, valami oknál fogva mégis elérem, és akkorára nekem már eszembe sem lesz ez a dolog, nem fogom tudni hogy mi a baja a programnak.

    Bár valószerűtlennek látom az egészet.

    Mindenesetre köszönöm a válaszokat!
    Mutasd a teljes hozzászólást!
  • Az fájlrendszerfüggő dolog, hogy hány fájlod, mappád lehet egy lemezen.

    NTFS esetén is 2^32 -1, ami jópár millió....
    Mutasd a teljes hozzászólást!
  • Mutasd a teljes hozzászólást!
  • Nem hiszem, hogy lenne határa a dolognak. Legfeljebb az integer felső határa, de azt nem hinném, hogy eléred.
    Mutasd a teljes hozzászólást!
  • Arra lennék kíváncsi, hogy hány Munkafüzet1, Munkafüzet2, Munkafüzet3 ....Munkafüzet(n) lehet?
    Van-e ennek valami határa?


    Azért érdekelne, mert van egy program, amely dbf fájlt hoz létre, egy megadott adatokkal. A dbf fájl mentő programot nem én írtam, és számomra elég komplikált, de a lényeg, hogy csak akkor menti le normálisan ha egy új munkafüzetet nyitok és abba rakom be az adatokat. Ha egy üres WorkSheet-re rakom be az adatokat, valami oknál fogva nem tudja lementeni.
    Így minden egyes alkalommal amikor lefut ez az eljárás, egy Munkafüzet(n) nyílik, ahol az "N" az egy sorozat következő száma (lsd.: első mondat)

    Persze ha bezárják a programot és újra megnyitják, akkor nullázódik ez az érték, de sajnos ezt a programot nem zárják be soha, még este sem. Szóval non-stop fut, így az "N" értéke folyamatosan növekszik!

    Ja, és még hozzátennék annyit, hogy a Munkafüzet(n) a folyamat után bezáródik, tehát csak egy Munkafüzet-et hozok létre, belerakom az adatokat, mentem DBF-be majd zárom is be.
    Tehát egyszerre csak 1db Munkafüzet van nyitva. (amellett amelyből dolgoznak)
    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