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.
Fkeres függvénnyel kapcsolatban kérnék segítséget. A gyári mintákból a Házi leltár nevűt alakítottam át. A házi leltár tételei MF-ben a C oszlopban használom az Fkerest. A Helyiségkereső MF-ben A1:B20-ig van a táblázat. A oszlop szöveg B oszlop szám. És random nem működik. A címke szónak nem találja meg a számát és #HIÁNYZIK-ot dob. De a zacskó szóhoz tökéletesen társítja az 4 számot. Cellaformázás/típusnák mindegyik általános. Van valami ötletetek?
És ha magával a Notepad-del szerkeszted? Az ugyan nem olyan kényelmes, mintha külön oszlopokban lenne minden, de legalább nem cseszi szét az elválasztó jelet meg a szövegjelölőket kedve szerint.
Vagy megpróbálhatod szövegként megnyitni az Excel szövegbeolvasó varázslóval?
Azon a weblapon amit belinkeltem, az van írva, hogy a gyártó kifejezetten biztat mindenkit, hogy szerkessze ezen fájlt, de le írja, hogy mire vigyázzunk.
Itt a probléma szerintem. Vagy az Excelen kell valamit beállítani, hogy a mentéskor ne hagyjon ki semmit, vagy nem is tudom, mert a szerkesztés nélkül mentett fájlon is jelentkezik a hiba.
Notepadon történő összehasonlítás sem járt eredménnyel.
Hát, a WIN API hívások nálam sajnos beletartoznak a "kínai" nyelvterületek közé. Pedig ez nem lenne haszontalan és talán nem is annyira sokszínű a lehetősége mint a Web-nek. (Legalábbis az MS csak egy szabvány...)
Nem tudom, mire véljem, hogy nem tudja megnyitni, mivel az általad elküldött fájl és a DOS verzióval lementett fájl byte-ra azonos, megnéztem.
Valószínűleg valami olyan védelem van benne - és játékról lévén szó ez nagyon is lehetséges - ami nem látható kívülről, de ha megsérted a file integritását, akkor már reklamál.
Ha az eredeti fájlt másolod vissza, akkor azt "megeszi"?
Hát, most mit mondjak...:) Fantasztikus, nagyon köszönöm!
(Tanulság: változók, paraméterek, indítók helyes megadása már szinte többet ér, mint a szintaktika tudása. Ebben én nagyon gyenge vagyok, Te viszont verhetetlen. Házi feladatként megoldottam az aktuális shape nevének lekérdezését, csak a parentet kellett kipiszkálni a slidenév megadásából. Még egyszer nagyon köszi!)
És most néztem, hogy a táblázat sorok magassága egyesével lekérdezhető, szóval kis munkával átalakítható a lenti kód úgy, hogy tetszőleges felépítésű táblázat esetében is helyes eredményt adjon.
Csak nem bírtam ki. Szóval itt ez a kód, próbáld ki.
Nekem úgy tűnik, hogy jól működik, egy megkötéssel: a táblázat sorainak magassága legyen egyenlő, valamint az oszlopok szélessége is legyen egyenlő.
Igazából nem is kell minden egyes cellaszöveghez makrót rendelni, hanem elegendő csak a táblázat (mint egész) Shape-jéhez (lásd piros sorok). Továbbá bármelyik Slide-on működik, ha az adott slide-on a táblázathoz hozzá van rendelve a CellaPozíció makró.
Public Type POINTAPI X As Long Y As Long End Type Public Type TScreenRes X As Long Y As Long End Type
Public Const SM_CXSCREEN = 0 Public Const SM_CYSCREEN = 1 Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long Public Declare Function GetSystemMetrics32 Lib "user32" Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long
Sub Makróhozzárendelés() Dim i As Long, j As Long, Tb As Table, C As Cell With ActivePresentation.Slides(1).Shapes(1) .ActionSettings(ppMouseClick).Action = ppActionRunMacro .ActionSettings(ppMouseClick).Run = "CellaPozíció" End With Set Tb = ActivePresentation.Slides(1).Shapes(1).Table For i = 1 To Tb.Rows.Count For j = 1 To Tb.Columns.Count Set C = Tb.Cell(i, j) With C.Shape.TextFrame.TextRange .ActionSettings(ppMouseClick).Action = ppActionRunMacro .ActionSettings(ppMouseClick).Run = "CellaPozíció" End With Next Next End Sub
Sub CellaPozíció(Caller As Object) Dim SlideName As String, CellRow As Long, CellColumn As Long, msg As String Dim ScreenResolution As TScreenRes, CursorPosition As POINTAPI, CursorPositionTr As POINTAPI Dim SlideW As Long, SlideH As Long ScreenResolution.X = GetSystemMetrics32(SM_CXSCREEN) ScreenResolution.Y = GetSystemMetrics32(SM_CYSCREEN) SlideW = ActivePresentation.PageSetup.SlideWidth SlideH = ActivePresentation.PageSetup.SlideHeight
Köszönöm válaszod, de sajnos - mint ahogyan azt a kéréskor írtam - nem működik. Leírásod alapján ismételten kipróbáltam, de a jelenség ugyan az amit lent leírtam. Mentéskor valami elvész, erre figyelmeztet is az Excel, majd ha mentem és elindítom a fájlhoz tartozó programot, nem működik, leáll.
Szeretném a segítségeteket kérni egy .csv fájl mentésében.
Van egy .csv kiterjesztésű fájlom amit szerkeszteni szeretnék, de a fájl mentése nem sikerül anélkül, hogy ne veszne el belőle valami. Ez a jelenség már akkor is fellép, amikor betöltőm a .csv kiterjesztésű fájlt és hozzányúlás nélkül, más néven menteni szeretném.
Próbáltam az Excel 2007 -ben és a Google Sheets online változatán is, minden olyan lehetőségben ami .csv fájl mentését teszi lehetővé.
Átállítottam a Win 7-ben a vezérlőpult, terület és nyelv beállításoknál a további beállítások ablakban található “Lista elválasztó” -t is ; -ről , -re , de így sem ment.
A fájlban a szöveges részt szerettem volna magyar nyelvűre kicserélni, ezért lenne szükségem a mentésre.
Az Elnevezés makróban ez megvalósul, csak az a baj, hogy amikor kattintasz, akkor viszont semmilyen módon (legalábbis Jimmynek és nekem sem ) nem sikerült megállapítani a kattintás celláját - a "gazember PP" viszont tudja, mert a makrók elnevezése alapján oda irányítja :-). Ebből kell nekünk kihámozni a lényeget.....
Sőt, még azt sem tudtam elérni, hogy a selected tulajdonságot megadja nekem a makróban....
Ha több táblád is van a slide-on, akkor bizony elég bonyolult lesz ez a történet. Szerintem próbáld meg szisztematikusan az egyik táblád végigcsinálni, aztán a másikkal, hátha közben kialalkul valami egyszerűsítési lehetőség.
(Ráadásul a parent is csak a slide számot adja vissza.)
Azért ez így már nagyon bonyolult...Azon gondolkodom, hogy hogy lehetne a két shape lekérdezést (a cella textjét, illetve a shape nevét) valahogy egy makróba ötvözni.
Ez azt jelenti, hogy a makróidat a következőképpen kell elnevezned pl.:
Ha a shape neve Table 1, és az első celláról van szó, akkor
sub Mactable_1_11
Ezzel el tudod különíteni minden tábla makróját... (jó kis munka lesz).
A mac makródhoz be kell tenni egy újabb paramétert, így:
Sub mac(caller As Shape, x As Integer, y As Integer, shapename As String)
A meghívásnál pedig
Sub mactable_1_11() MsgBox ActivePresentation.Slides(1).Shapes(1).Name mac ActivePresentation.Slides(1).Shapes(1).Table.Cell(1, 1).Shape, 1, 1, ActivePresentation.Slides(1).Shapes(1).Name End Sub
illetve, mivel a tábla nevét tudod, simán beírhatod ActivePresentation.Slides(1).Shapes(1).Name helyett, hogy "Table 1"