Keresés

Részletes keresés

SQLkerdes Creative Commons License 2011.07.20 0 0 15501

A Sheet2 az adott munkalap kódneve, ami nem változik bárhanyadik lesz is a munkalap a workbookon belül illetve bármire is változtatják a nevét.

Szerintem hasznos dolog ezt használni, egyetlen általam ismert korlátozása van:  csak a makrót tartalmazó workbookon belül működik.  Szóval másik workbook munkalapjára így már nem tudsz hivatkozni.

Előzmény: wawabagus (15489)
wawabagus Creative Commons License 2011.07.20 0 0 15500

Szia Jimmy,

Hááát, lehet hogy erre.

Kipróbálom...

Köszi szépen!!

Y

Előzmény: Törölt nick (15499)
Törölt nick Creative Commons License 2011.07.20 0 0 15499

Van itt ez a módszer:

DoCmd.OutputTo acOutputQuery, "query neve", acFormatXLS, "D:\teszt.xls", True

 

Erre gondoltál?

Előzmény: wawabagus (15498)
wawabagus Creative Commons License 2011.07.20 0 0 15498

Sziasztok!

Ért esetleg valaki Access quiery exportálásához konkrét excel templétbe VBA segitségével?

 

Tehát pl. lefut XY quiery amit a macro kiexportál a TEMPLÉT-be pl b4-es cellába mint value...

Nehéz ügy ez?

 

Köszi a segtséget!

Sznida Creative Commons License 2011.07.20 0 0 15497

Köszönöm az infókat, Neked is Jimmy!

Megfontolom, s így fogok tenni.

Jimmy, ezt kipróbáltam, s működik védett módban is lefut a kód!

 

Köszönöm még egyszer!

 

Üdv: Sznido

Előzmény: Gavriel (15496)
Törölt nick Creative Commons License 2011.07.20 0 0 15495

Sajnálom, ebben a kérdésben nem tudok segíteni.

Utánakerestem én is, és egybehangzóan állítják mindenütt, hogy a VBA project védelme kódból nem érhető el, nem módosítható. Amit belinkeltél, az a SendKeys művelettel operál, ami tulajdonképpen, szimulálni próbálja a billentyűleütéseket, mintha manuálisan csinálnád a védelem beállítását. A SendKeys nagyon megbízhatatlan dolog, aki szakértőket én ismerek, mindenki fújol rá. Bármi történhet a billentyűkódok elküldése közben, ami megváltoztatja az aktív ablakot, vagy ilyesmi, és máris hibás eredményt kapsz. Vagy pl. ha az első x darab billentyűkód feldolgozásához kell egy kis idő, mielőtt következőt is fogadni tudja az alkalmazás, a SendKeys meg nyomatja a kódokat rendületlenül...

 

Szóval a SendKeys semmiképpen nem ajánlott olyan kényes műveletek elvégzésére, mint pl. egy jelszó beállítása. Ha valami hiba csúszik a műveletbe, megeshet, hogy ott állsz egy levédett projekttel, és nem tudod a jelszót.

 

A másik dolog, hogy úgy hírlik, egyes makrók nem is futnak le, ha a VBA projekt le van védve.

 

Sznida Creative Commons License 2011.07.19 0 0 15494

Bámulatos!!!

Köszönöm szépen!!!! Nagyon jó, nem is gondoltam volna, hogy ezt így meg lehet csinálni!

 

Van még egy kérdés, hogyan lehet ezek a file-ok VB project-jeit védeni, tehát programozni akarom a:

Look project for viewing = True

Password="teszt"

 

Ezt találtam a google-ban:

http://www.mrexcel.com/archive/VBA/29825.html

 

Lefut szépen, de nem történik meg a védelem beállítása, lehet nem is csinálja?

 

Köszönettel: Sznido

Előzmény: Törölt nick (15490)
Delila10 Creative Commons License 2011.07.19 0 0 15493

Nincs mit.

 

Szia

Delila

Előzmény: wawabagus (15492)
wawabagus Creative Commons License 2011.07.19 0 0 15492

Köszi szépen a segítséget Delila10 :-)!!!

 

Előzmény: Delila10 (15491)
Delila10 Creative Commons License 2011.07.19 0 0 15491

Nem figyeltem fel a With-es sorodra,  nálam kiakadt.

 

A mindenkori 2. lapra történő hivakozás Sheets(2).

Előzmény: wawabagus (15489)
Törölt nick Creative Commons License 2011.07.19 0 0 15490

Sub teszt()
    Dim FPath As String, FName As String
    Dim wb As Workbook, LineCount As Long
    Dim WBModule As VBIDE.CodeModule
    
    FPath = "D:\"
    FName = Dir(FPath & "\*.xls", vbNormal)
    While Not FName = ""
        Set wb = Workbooks.Open(FPath & "" & FName)
        Set WBModule = wb.VBProject.VBComponents("ThisWorkbook").CodeModule
        With WBModule
            LineCount = .CountOfLines + 1
            .InsertLines LineCount, "Private Sub Workbook_BeforePrint(Cancel As Boolean)"
            LineCount = LineCount + 1
            .InsertLines LineCount, "    Cancel = True"
            LineCount = LineCount + 1
            .InsertLines LineCount, "    MsgBox (""Nem nyomtatható dokumentum!"")"
            LineCount = LineCount + 1
            .InsertLines LineCount, "End Sub"
        End With
        wb.Close savechanges:=True
        FName = Dir()
    Wend  
End Sub

Pár dolog kiegészítésképpen:

1. A "kezelendő" fájlokat gyűjtsd egy mappába, és azt a mappát add meg FPath változó értékeként.

2. A Tools->References menüben kapcsold be a hivatkozást a Microsoft Visual Basic for Applications Extensibility komponensre.

3. Az Excel Eszközök->Beállítások->Biztonság->Makróvédelem->Megbízható közzétevők lapon tedd be a pipát a "Visual Basic Projekthez való hozzáférés megbízható" beállítás elé.

 

 

Előzmény: Sznida (15485)
wawabagus Creative Commons License 2011.07.19 0 0 15489

:-). értem. De működik a sima With Sheet2 is :-)...

 

Én ezt úgy értelmeztem, hogy ez abból a szempontból jó, hogy a mindenkori Sheet2-t fogja venni, még ha nem is ez a neve...

 

Ilyet kategórikusan nem szabad csinálni?

 

:-)

 

 

Előzmény: Delila10 (15488)
Delila10 Creative Commons License 2011.07.19 0 0 15488

Mert ez a helyes szintaktika, így kell hivatkozni egy lapra. :-)

A With Sheet2-nél hibát jelez. Azt hiszem, változónak értelmezi a Sheet2-t.

 

Az előző hsz-ban With Sheets2-t írtam véletlenül.

Előzmény: wawabagus (15487)
wawabagus Creative Commons License 2011.07.19 0 0 15487

Szia!

Nagyon köszönöm a segítséget. Közben már elkezdett működni a macro :-), de kijavítottam a YEAR-t Period-ra...remélem azt szabad használni.

 

Miért kell így írni?

"A With Sheets2 helyett With Sheets("Sheet2")-t írj."

 

 

Előzmény: Delila10 (15486)
Delila10 Creative Commons License 2011.07.19 0 0 15486

A Year VB-s kulcsszó, nem szabad ilyen nevet adni egy változónak. Legyen pl. Yearr - mert múlt idő :)

 

BusinessType = ThisWorkbook.Names("business").RefersTo

sor értéke "=Sheets1!$J$1" (ha ennek a cellának adtad a business nevet).

 

Az értékadásnál le kell venned a kezdő = jelet. Az értékadó sor ezután

BusinessType = Range(Right(ThisWorkbook.Names("business").RefersTo, Len(ThisWorkbook.Names("business").RefersTo) - 1))

 

A With Sheets2 helyett With Sheets("Sheet2")-t írj.

 

Etekkel a változtatásokkal működik, kipróbáltam.

Előzmény: wawabagus (15484)
Sznida Creative Commons License 2011.07.19 0 0 15485

Sziasztok,

 

Ismét van egy kérdésem:

Van nagyon sok excel file-om (kb. 500 db), ezeket kell megnyitnom, és minden egyes file VBA-ja belemásolni a következő kódot:

 

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Cancel = True
MsgBox ("Nem nyomtatható dokumentum!")
End Sub

 

Az a kérdés, hogy hogyan lehet ezt egyszerűen megcsinálni, hogy ne kelljen manuálisan egyesével megnyitni a file-t, aztán VBA felület, This workbook, ctrl+v, ... stb.

 

Ötleteiteket előre is köszönöm!

 

Üdv: Sznido

wawabagus Creative Commons License 2011.07.19 0 0 15484

Sziasztok!

A munkafüzetben definiált namerange-et szeretnék használni VBA-ban.

Pl. B2 = "year" name range

Aztán a VBA-ban erre a name rangere szeretnék hivatkozni.

Így próbálkoztam vele. Van ennek így értelme?

Köszi a segítséget :-)!!!

 

 

-------

Dim Year As Variant
Dim BusinessType As Variant
Dim Country As Variant

Year = ThisWorkbook.Names("year").RefersTo
BusinessType = ThisWorkbook.Names("business").RefersTo
Country = ThisWorkbook.Names("country").RefersTo

With Sheet2
            .AutoFilterMode = False
                With .Range("A1:G1")
                     .AutoFilter
                     .AutoFilter Field:=1, Criteria1:= Country
                     .AutoFilter Field:=6, Criteria1:= BusinessType
                     .AutoFilter Field:=7, Criteria1:= Year
                End With
    End With
    
With Sheet3
            .AutoFilterMode = False
                With .Range("A3:E3")
                     .AutoFilter
                     .AutoFilter Field:=1, Criteria1:= Country
                     .AutoFilter Field:=4, Criteria1:= BusinessType
                End With
End With
End Sub

pimre Creative Commons License 2011.07.18 0 0 15483

Kösz, most már étem. Ld: #15482.

Előzmény: Sznida (15481)
pimre Creative Commons License 2011.07.18 0 0 15482

Időközben újraolvastam, vagy inkább újraértelmeztem a könyvrészletet. Azt nem írta a könyvem (csak én képzeltem hozzá), hogy az Activesheet.protect userinterfaceonly:=True parancs kiadása után a létrejött lapvédelmet is csak program írhatja felül.

Csak arról írt, hogy bizonyos parancsokat azért a védett munkalapon is alkalmazni lehet programból.

 

A jelszavas védelem majd csak későbbi téma lesz:-)))

 

Mégegyszer kösz.

Előzmény: Törölt nick (15464)
Sznida Creative Commons License 2011.07.18 0 0 15481

Szia,

 

Ha kézzel megadod a jelszót, akkor azt makróból nem tudod feloldani, csak ha beírod a kódba a jelszót is.

Ha makróval védesz minkalapot, jelszóval, akkor a kézi feloldáshoz is kell a jelszó, aki nem tudja a jelsazót nem tudja (olyan egyszerűen) feloldani.

 

Érted már?

 

Üdv: Sznido

Előzmény: pimre (15480)
pimre Creative Commons License 2011.07.18 0 0 15480

Köszönöm. Ezek szerint password nélkül nem működik?

 

Mert a tankönyvem szerint (Kovalcsik Géza: AZ Excel'97 programozása) ezt (a userinterfaceonly paramétert) csak programból állíthatjuk be, és kapcsolhatjuk ki. De jelszóról nem ír, ami nem is lenne nekem elsőre logikus, hiszen jelszóval védeni nem csak programból lehetne. A kézzel bekapcsolt lapvédelemnél is meg lehet adni jelszót.

 

Szóval még mindig nem értem. De azért kösz.

Előzmény: Törölt nick (15464)
tajhamer Creative Commons License 2011.07.18 0 0 15479

Nagyon köszönöm a segítséged!

Üdv,

Tiha

Előzmény: mimi_bacsi (15477)
mimi_bacsi Creative Commons License 2011.07.18 0 0 15477

Töltök fel egy példa fájlt, azt értelmezd és használd a saját adataidra...

 

A letöltéshez katt ide

 

Előzmény: tajhamer (15476)
tajhamer Creative Commons License 2011.07.18 0 0 15476

Kedves mimi_bacsi!

Köszönöm, megpróbálom ezzel, majd jelentkezem, hogy mit tudtam összehonzi :)

Segítséged köszönöm,

Tajha

Előzmény: mimi_bacsi (15475)
mimi_bacsi Creative Commons License 2011.07.18 0 0 15475

Én így csinálnám:

 

Egy fájlban legyen (minimum) két munkalapod. Az egyikben (Munkalap1) a cégeket (B2) és a hozzá tartozó címeket (C2) írdd be, külön cellákba. Az A2-be egy azonosító (pl. 0001, 0002, 0003.....) növekvő egész számot adj, arra fogsz mindig hivatkozni a másik munkalapon.

A másik munkalapon (Munkalap2) az A2 cellába beírod az egyik azonosító számot (pl. 0001) és FKERES függvénnyel hivatkozol a Munkalap1-ben lévő címre

 

Segítségül a súgóból kimásoltam az FKERES szintaxisát is

 

FKERES szintaxis

=FKERES(keresési_feltétel; tömb; index; rendezett)

A keresési_feltétel a tömb első oszlopában keresett érték.

A tömb legalább két oszlopból álló hivatkozás.

Az index a visszakapni kívánt értéket tartalmazó oszlop száma a tömbben. Az első oszlop száma 1.

A rendezett opcionális paraméter, amely azt jelöli, hogy a tömb első oszlopa növekvő sorrendben van-e rendezve. Ha az első oszlop nincs növekvő sorrendben rendezve, akkor írja be a logikai HAMIS vagy a nulla értéket. A rendezett oszlopokban a keresés sokkal gyorsabb, illetve a függvény minden esetben visszaad egy értéket. Ez igaz még akkor is, ha a függvény a keresési értékkel nem talált pontos egyezést, feltéve, hogy az érték a rendezett lista legmagasabb és a legalacsonyabb rendezett értéke között található. Nem rendezett listák esetén a keresési értéknek pontosan egyeznie kell. Ha nem így van, a függvény a következő üzenetet adja vissza: Hiba: Érték nem érhető el.

 

Előzmény: tajhamer (15473)
Törölt nick Creative Commons License 2011.07.18 0 0 15474
Előzmény: Gavriel (15470)
tajhamer Creative Commons License 2011.07.18 0 0 15473

Sziasztok,

Kis segítséget szeretnék kérni tőletek. Egy listát szeretnék létrehozni, amelyben a megfelelő cellát automatikusan kellene kitöltse megadott adatokkal az excel, vagyis:

Beírom a cégnevet, ő meg írja be a címet mellé. A cégnevekhez tartozó cím állandó :) Gondolom kell készíteni egy listát a cégnevekkel és a hozzájuk tartozó címekkel, és ezeket kell behivatkozni valahogy a készítendő listába, de sajnos ez még meghalad engem :)

 

Segítségeteket előre is köszönöm,

Tajha

Törölt nick Creative Commons License 2011.07.18 0 0 15472

Debug -> Compile lefut rendesen?

 

A Private Sub UserForm_Initialize() szubrutin a Form kódlapján van?

Előzmény: Gavriel (15470)
Törölt nick Creative Commons License 2011.07.18 0 0 15471

ááááá

köszi!

régi válasz nélkül maradt kérdésem :)

megláttam, h ilyet írsz - rögtön fel is kaptam rá a fejem.

Előzmény: Törölt nick (15462)
Sznida Creative Commons License 2011.07.18 0 0 15468

Szia,

 

VBA felületen: Insert, class module

Akkor mejelenik bal oldalon a fában, rákattintasz, és a propeties window-ban (F4) meg tudod adni a nevét!

 

Üdv: Sznido

Előzmény: Gavriel (15466)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!