-
Fototrend
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
Fferi50
Topikgazda
Szia!
Túlságosan is excelesen gondolkodsz, ezt VBA (makró) sokkal egyszerűbben oldja meg.
A kiválasztott fájlnévhez tartozó elérési út alapján a Workbook.Open eljárással meg tudod nyitni az adott fájlt.
Tehát: van egy táblázatod, ami tartalmazza a kiválasztható fájlneveket és a hozzájuk tartozó elérési utakat. Egy cellára - keresőcella - csinálsz adatérvényesítést, ami a kiválasztható fájlneveket tartalmazza - csak ebből lehet választani, így nem lehet elrontani a keresést.
Pl: H1-H5 tartalmazza a listát, I1-I5 tartalmazza az elérési utat.
A1 legyen a kereső mező.
A1 adatérvényesítése lista - forrása $H$1:$H$5
Worksheet change eseménybe kerül a következő makró:Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
Application.EnableEvents = False
Workbooks.Open Filename:=Range("$H$1:$H$5").Find(What:=Target.Value, LookIn:=xlValues, lookat:=xlWhole).Offset(0, 1).Value & Target.Value
Application.EnableEvents = True
End If
End SubNe felejtsd el, hogy az elérési út végére kell egy backslash \
Az adott munkalaphoz úgy viheted be, hogy a munkalap fülre állva jobb egérgomb, kód megjelenítése, majd bemásolod a megjelent ablakba.Ha választható listát másik munkalapon szeretnéd tárolni, akkor el kell nevezned és a nevet kell beírni az adatérvényesítés forrásaként - valamint a makróba is.
Üdv.
[ Szerkesztve ]
-
Fferi50
Topikgazda
Szia!
A hiba ebben az esetben "természetes", hiszen most abból indultam ki, hogy a keresési feltételben a fájl neve szerepel. Ha ez nem így van, akkor a Target.Value a Filename paraméterből elhagyandó
Workbooks.Open Filename:=Range("$H$1:$H$5").Find(What:=Target.Value, LookIn:=xlValues, lookat:=xlWhole).Offset(0, 1).Value
Ennyi marad - bár nyilván azt, hogy hol tárolod a fájlnevet és az elérési utat, Te tudod igazán, a példából én azt látom, hogy egy cellában van, a keresési feltétel mellett.Üdv.
Ps: "Ez nem lenne gond, de ez egy .pdf"
Bocsi, de ezt honnan kellett volna tudnom?
Ebben az esetben hyperlink követést kell programozni, most éppen nincs időm rá, hogy pontosan megnézzem.[ Szerkesztve ]
-
Fferi50
Topikgazda
Szia!
Azt gondolom, hogy a két külön fájl megbonyolítaná a helyzetet. Ugyanazon fájlban két külön (akár elrejtett) munkalapon kétféle módon is működhet:
1. A cím megadásánál beírod azt a munkalapot, ahová az adatok kerültek:Address:=Sheets("Munka2").Range("$A$7:$A$1000").Find(What:=Target.Value, LookIn:=xlValues, lookat:=xlWhole).Offset(0, 1).Value
2. Elnevezed az adatok tartományt (a keresőértéket tartalmazó oszlopot elég) a másik munkalapon, pld. kereso néven. Ebben az esetben:
Address:=ActiveWorkbook.Names("kereso").Referstorange.Find(What:=Target.Value, LookIn:=xlValues, lookat:=xlWhole).Offset(0, 1).Value
Az adatokat tartalmazó munkalapot elrejtheted úgy, hogy nem is jelenik meg a listában
Sheets("Munka2").Visible=xlSheetVeryhidden
Ezt csak kódból tudod láthatóvá tenni:Sheets("Munka2").Visible=xlSheetVisible
Üdv.
[ Szerkesztve ]
-
Fferi50
Topikgazda
Szia!
- Megoldható-e, hogy az Excel dokumentum megnyitásakor a kurzor már alapból a szövegbeviteli cellán legyen?
A Thisworkbook kódlapjára másold be az alábbi makrót:
Private Sub Workbook_Open()
Application.EnableEvents = False
Sheets("Munka1").Select 'Munka1 helyére írd be a kereső munkalapod nevét.
Range("C2").Select
Application.EnableEvents = True
End Sub
A VBA projektben a Thisworkbook összetevőre kattintasz kettőt és a megjelenő ablakba bemásolod.- Megoldható-e, hogy két keresési ciklus között (tehát amikor bevisz egy cikkszámot, amihez kapcsolódóan a makró megnyitja a hálózaton lévő fájlt, de újabb cikkszám bevitel még nem történt meg) ne az előzőleg bevitt cikkszám legyen
Application.EnableEvents=True elé írd be ezt a sort:
Range("C2").Value=0, vagy Range("C2").Value="Kérem, olvassa be a vonalkódot!"Viszont ez utóbbi elég hosszúnak tűnik, ha mellette levő cellában is van adat, akkor nem fog végig kiférni.
Üdv.
[ Szerkesztve ]
-
Pakliman
tag
Szia!
Az táblázat megnyitása (a tulajdonképpeni "program" elindítása) nélkül ez nem megy
Viszont van kerülő út, pl.:
- a win. indítópultjába berakod, így az a gép (újra)indításakor megnyílik, a program lefut. Hátránya, hogy bezárni Neked kell
- VBScript, időzítő programok használata...Hogy csak egyszer lehessen futtatni:
Makró kell.
Ki kell választani egy cellát valamelyik munkalapon (lehet egy kimondottan erre létrehozott, esetleg rejtett!).
Ez lesz a CheckDate...
A lekérdezést/másolást végző makró elejére kell beírni egy kódot, ami ellenőrzi, hogy a CheckDate cella tartalma mi: ha üres vagy a mai napnál régebbi dátum szerepel benne, akkor mehet tovább a feldolgozás,
egyébként esetleg MsgBox a júzernek, hogy ma már nem futhat...
Új hozzászólás Aktív témák
- Star Wars Outlaws GeForce RTX 40 Bundle - lepd meg magad!
- Windows 10/11 Home/Pro , Office OEM/Retail kulcsok
- Eredeti Microsoft termékek - MEGA Akciók! Windows, Office Pro Plus, Project Pro, Visio Pro stb.
- Játékkulcsok olcsón: Steam, Uplay, GoG, Origin, Xbox, PS stb.
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - 2990 Ft-tól!
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: HC Pointer Kft.
Város: Pécs