Az „Excel” fórum célja, hogy keretet adjon az Excel felhasználók széles táborának tapasztalataik megosztására, és lehetőséget a segítséget kérőknek. Az alábbi összefoglaló azért készült, hogy segítse a helyes kérdésfeltevést.
– Írd le szabatosan a problémát. Úgy fogalmazz, hogy ne csak te magad, de a szakértő is megértse, mire szeretnél választ kapni.
– Írd le, hogy milyen verziójú Excellel dolgozol. (Vagy ha nem – ill. nem csak – Excel, akkor micsoda?)
– Írd le, hogy milyen úton indultál el, és hol akadtál el rajta.
– A kérdés megértése szempontjából sokat segíthet, ha feltölteszt egy képet, amin látszik, hogy mit szeretnél, vagy illusztrálja azt.
– Még jobb, ha feltöltesz egy minta munkafüzetet valahová (pl. data.hu). Feltöltés előtt távolítsd el belőle a nem publikus adatokat.
– Ha a feladat jellege olyan, célszerű az "előtte" és "utána" állapotokat bemutatni. (Miből kellene csinálni mit?)
– Ha VBA kódon kell javítani, másold be a releváns kódrészt. Rövid kód mehet hozzászólásba, hosszú kód inkább ide: http://pastebin.com/
– Ha valami nem úgy működik, ahogy kellene, add meg a rendellenes viselkedés jellemzőit, a hibaüzenetet, és a hibát okozó programsort.
Na, véletlenül meg is leltem a megoldást. Szóval a Microsoft azt mondja, hogy a VBA nem tud ciril karakterekkel mit kezdeni. De az internet népe kitalálta, hogy ha a területi beállításoknál a nem-unicode karaktereket használó programok nyelvi beállítását átállítjuk akkor mégis meg lehet jeleníteni nem-unicode karaktereket.
Átállítottam, műxik.
Kiváncsian várom, hogy milyen váratlan következményei lesznek más programokban...
Izé. Tedd a makrót egy szűz munkafüzet Workbook_Open eseménykezelőjébe. Mentsd el a munkafüzetet úgy, mint Microsoft Office Excel bővítmény (*.xla), és legyen a neve pl. akármi.xla. Aztán az Eszközök/Bővítménykezelő menüben válaszd ki az akármi nevű bővítményt. Violá. Nem is. Voilá.
Persze, hogy látom, hogy nyitva van. Ez volt a kérdésem. Hogy ha rányitok még egy Excelt, azaz nem egy új munkafüzetet, hanem magát az excelt nyitom újra.
"Nem lehet az excel applicationhoz rendelni?, vagy a personal megnyitásához a futást?" Kösz a kérdést, de hát pont ezt kérdeztem, hogy lehet-e, és hogyan. Mert hogy pont a personal megnyitásához rendeltem.
milyen grafikon? Pivot chart? Akkor lehet, mert a pivot tábla is átméretezi magát, ha nem utasítjuk az ellenkezőjére.
Nekem akkor szokott átméreteződni (excel 2007-2010 nél), ha a chart labeljeinek a hossza drasztikusan változik kattintásról kattintásra. Ez is radar és sáv diagrammoknál.
Ez nem lehet a gond?
Esetleg át tudod küldeni, vagy egy scrreenshotot előtte és utána?
ez akkor szokott előfordulni, ha van egy "nyitott" exceled (vagy egy addin, exetleg a personal.xls - lehet, hogy nem is látod, hogy nyitva van), és rányit még egy excel alkalmazást.
Nem lehet az excel applicationhoz rendelni?, vagy a personal megnyitásához a futást?
Sziasztok, írtam egy kis programot, amit szeretnék lefuttatni az Excel minden egyes meghívásakor. Próbáltam önálló munkafüzetként az xlstart-ba tenni, működött is, csak egy apró mellékhatása volt, ami nem tetszett. Ez most mindegy.
Jobb megoldásnak találtam, hogy a Personal.xls-be teszem, és a munkafüzet megnyitáshoz (Private Sub Workbook_Open) rendelem. Le is fut rendesen, csak ennek is van egy apró mellékhatása. Ha valamiért ismételten meghívom az Excelt, akkor figyelmeztet arra, hogy a personal.xls zárolva van olvasásra. Nem komoly gond, de szeretném ezt is elkerülni. Mi a megoldás? Esetleg a munkafüzet megnyitás helyett más eseményhez kellene rendelnem a program lefuttatását?
Veszel egy vadiúj füzetet, ahol beállítod a kedvenc formátumaidat, adatokat nem írsz bele. A füzetet elmented sablonként, Munkafüzet névvel. Az Excel automatikusan abba a könyvtárba teszi, ahonnan az ilyen xlt, vagy xltx kiterjesztésű fájlokat olvassa be minden indításkor. Ezután mindegyik új füzeted ezzel a formátummal indul.
Érdemes minden lapra beállítani a formátumokat. Egyebeket is beállíthatsz, pl. az Excel jellemzően a függőleges igazítást lentre teszi, amit én középre tettem a sablonban.
Talán van egyszerűbb, de nekem csak ez jutott eszembe. Leírom lépésről-lépésre.
1. Kell egy egyéni makró-munkafüzet (personal.xls). Ha még nincs ilyened, rögzíts egy makrót, és a rögzítés előtt állítsd be, hogy ne "ebbe a munkafüzetbe", hanem "egyéni makró-munkafüzetbe" rögzítse. Akkor elvileg az Excel létrehozza a personal.xls-t.
2. Lépj át a VB editorba (Alt+F11)
3. A project explorerben keresd meg a personal.xls-t, jelöld ki.
4. Menüből válaszd a következő parancsot: Insert/Class Module
5. A project explorerben, a personal.xls-en belül keresd meg az új class module-t (feltehetően class1-nek hívják), kattints rá duplán.
6. A Properties ablakban írd át a nevét (Name) erre: clsApp
7. Ugyanitt állítsd át az Instancing tulajdonság értékét 2-re (2 - PublicNotCreatable)
8. A jobb oldali üres kódmezőbe másold be ezt:
Public WithEvents App As Application
Private Sub App_NewWorkbook(ByVal Wb As Workbook) Dim ws As Worksheet For Each ws In Wb.Worksheets ws.Cells.NumberFormat = "#,##0.0" Next End Sub
Private Sub App_WorkbookNewSheet(ByVal Wb As Workbook, ByVal Sh As Object) Sh.Cells.NumberFormat = "#,##0.0" End Sub
8. A project explorerben, a personal.xls-en belül keresd meg a ThisWorkbook nevű objektumot, kattints rá duplán.
9. A jobb oldali üres kódmezőbe másold be ezt:
Public Ex As clsApp Private Sub Workbook_Open() Set Ex = New clsApp Set Ex.App = Application Debug.Print "Application caught" End Sub
Zárj be mindent, és amikor kérdez, mentsd el a makró-munkafüzet változásait.
Az Excel következő indításakor már úgy lesz, ahogy akarod.
Igazság szerint Windows API függvényekkel (elvileg) megoldható lenne a Reader bezárása, de az elég macerás, és sokkal egyszerűbben célt lehetne érni egy másik megközelítéssel. Én inkább Userform-ra tenném az egész műveletsort. Lenne a form-on egy gomb a mappatallózáshoz, egy másik a mentéshez/átnevezéshez, illetve pár Combobox meg miegyéb az új fájlnév összerakásához. A form legnagyobb részét pedig egy AcroPDF nevű ActiveX vezérlő tenné ki. Ezzel Excelen belül lehetne megjeleníteni a pdf doksikat, nem kellene Adobe Reader ablakokat nyitogatni meg csukogatni. Az AcroPDF vezérlőnek csak a LoadFile metódusára lenne szükség.
Nem nagy kunszt, csak most egyrészt nincs rá időm (dolgozom), másrészt úgysem tudnám feltölteni, mert proxy papa nem engedi :o)
Érdeklődnék, hogyan lehetne "Mentés máskánt" panelt rögtön a mentésre kijelölt mappára állítani, hogy ne kelljen a felhasználónak oda vándorolnia.
Sub mentés() Dim fldlg As FileDialog Set fldlg = Application.FileDialog(msoFileDialogSaveAs) With fldlg .Title = "Mentés másként" .InitialFileName = Date & "-" & Range("a20") If Application.Version = "14.0" Then .FilterIndex = 2 ElseIf Application.Version = "11.0" Then .FilterIndex = 4 ElseIf Application.Version = "12.0" Then .FilterIndex = 2 End If End With rv = fldlg.Show If rv Then ActiveWorkbook.SaveAs fldlg.SelectedItems(1) End If
End Sub
Ez így müxik, de mindíg a "Dokumentum" könyvtárra állítja magát.
Bizonyosat én sem tudok mondani, de azt pl. el tudom képzelni, hogy ha van benne jó sok képlet, amelyek valami okból (pl. külső hivatkozás frissítése címén) a fájl megnyitásakor automatikusan újraszámolódnak, akkor az újraszámolt adatok miatt újraformázza a grafikonokat is. Vagy az is lehet, hogy tökfőzeléket reggeliztem, nem tudom... :o)