Keresés

Részletes keresés

pimre Creative Commons License 2011.08.21 0 0 15895

Egyszerű. Megnyitod egyidejűleg mindkét fájlt.  Abban a fájlban, illetve annak abban a cellájában ahova a függvényt akarod írni,  megnyomod az egyenlőségjelet, majd elengeded a billentyűzetet, és az egérrel átmész a másik fájlba, ott az egérrel ráállsz a kiválasztandó cellára, és az egérrel rákattintasz. Ha csak ennyi, akkor entert nyomsz. Ha folytatni kell, például összeadás jön, akkor nem enter jön, hanem megnyomod a + jelet, és kikeresed a következő adatot. És így tovább.

 

Ha persze az elején az egyenlőségjel után egy függvényt akarsz kezdeni az hasonló. Például összegzésnél beütöd, hogy =szum( majd ezen a ponton (a nyitó zárójel után) hagyod félbe a pötyögést, és mész az egérrel a másik fájlban a keresett cellákra. 

 

Ezzel a technikával akár egy fájl több munkalapjának adata, de akár több fájl különböző munkalapjainak adata is lehet egyetlen képletben.

 

Azt hiszem van egy határ, hogy a képlet szövegének hossza nem haladhat meg valahány karaktert (én olyan 800-900 közötti értéket  találtam), de ezt pontosan nem tudom.

 

Még annyit, hogy ha a képletet javítani kell, nem kell elölről kezdeni, hanem a cellára állva fenn a parancssorban megjelenik annak aktuális képlete. És ott javítható, kiegészíthető a képlet.

 

Remélem érthető, így leírva bonyolultabbnak látszik, mint a gyakorlatban megcsinálni.

 

Előzmény: nikojam (15894)
nikojam Creative Commons License 2011.08.21 0 0 15894

Sziasztok!

 

Nagyon sok okosságot lehet itt találni, amiket utólag meg is köszönnék.

Eddig nem kérdeztem tőletek, de most a tudományom végére értem. Ha tudtok segítsetek. Egy függvényt szeretnék írni ami egy mezőt tölt ki, de a feltételeknek megfelelő adatokkal ami egy másik xls-ben van. Programként jól működik, de függvényként mintha csak az aktuális xls-t látná és a másikat nem.

Segítségeteket előre is megköszönném!

pimre Creative Commons License 2011.08.21 0 0 15893

Én is vidultam, mikor megláttam. De bizisten nem volt szándékos.

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

Nekem is feltűnt az a szó az eredeti post-ban. De teljesen helyénvalónak éreztem :)

Előzmény: SQLkerdes (15891)
SQLkerdes Creative Commons License 2011.08.21 0 0 15891

OMG

A hónap posztja.

Freud hangosan röhög a sírjában :-)

Előzmény: pimre (15889)
Törölt nick Creative Commons License 2011.08.21 0 0 15890

Furcsállom, mert nekem a program maga lefutott. (Csak azt nem tudtam ellenőrizni, hogy mit csinál.) Arra gyanakszom, hogy a hiba a gépedben lehet. Próbáltad másik számítógépen? Milyen op. rendszered van? Milyen Office verzió?

 

Esetleg ránézhetek közelről, ha el tudod küldeni a doksit email-ben. Előtte persze törölj ki belőle mindent, ami nem kell, csak a két makró modul maradjon bent.

Előzmény: Tündi2003 (15887)
pimre Creative Commons License 2011.08.20 0 0 15889

Bocsánat, egy kellemetlen elütés. Helyesen: ... akkor ne fusson rá a program...

Előzmény: pimre (15888)
pimre Creative Commons License 2011.08.20 0 0 15888

Sziasztok, csak beszámolok egy érdekes meglepetésemről a programozásnál. Egy adott ponton az iif függvényt használtam:

iif(sor<0 or oszlop<0,0,függvény(sor, oszlop)) formában, ahol a meghívott függvény használta a cells(sor,oszlop) kifejezést.

 

A szándékom az volt, hogy amikor a nem megfelelő paraméterek miatt közvetlenül kell adatot megadnom, akkor ne fosson rá a program egy olyan kifejezésre, ami hibát okozna.

 

Viszont legnagyobb meglepetésemre a függvényt a program akkor is meghívta, ha a feltétel miatt csak az iif függvény true értékének megfelelő kifejezést kellett volna visszaadnia.

 

Nem okozott gondot, átírtam a normál if...then szerkezetre. Csak érdekes (talán mondhatom, hogy apró hiba), hogy ezek szerint a program előbb kiértékeli az iif függvénynek mindkét ágát, és csak utána dönti el, hogy melyiket adja vissza. (20 évvel ezelőtti emlékeim szerint, ahol még Clipperben programoztam, nem volt ilyen gond az ottani iif függvénnyel)

Tündi2003 Creative Commons License 2011.08.20 0 0 15887

Konkrétan ez nem működik benne (az aláhúzott részeket jelzi ki hibásnak, a hiba neve: "Compile Error: Internal error"):

 

Private Function SetPrinterProperty(ByVal iPropertyType As Long, _
      ByVal iPropertyValue As Long) As Boolean

 

   'Code adapted from Microsoft KB article Q230743

    Dim hPrinter As Long          'handle for the current printer
    Dim pd As PRINTER_DEFAULTS

Előzmény: Tündi2003 (15886)
Tündi2003 Creative Commons License 2011.08.20 0 0 15886

Köszi, ez már majdnem működik! :)

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

Itt a megoldás:

http://pubs.logicalexpressions.com/Pub0009/LPMArticle.asp?ID=116

 

A cikk alsó részében szereplő hosszú-hosszú kódot (onnantól kezdve, hogy "Option Explicit") másold be a dokumentumodba, egy új modulra.

A saját makród meg így módosul:

 

Sub Nyomtatás()
    With Options
        .UpdateFieldsAtPrint = False
        .UpdateLinksAtPrint = False
        .DefaultTray = "A nyomtató beállításaival"
        .PrintBackground = True
        .PrintProperties = False
        .PrintFieldCodes = False
        .PrintComments = False
        .PrintHiddenText = False
        .PrintXMLTag = False
        .PrintDrawingObjects = True
        .PrintDraft = False
        .PrintReverse = False
        .MapPaperSize = True
        .PrintOddPagesInAscendingOrder = True
        .PrintEvenPagesInAscendingOrder = True
        .PrintBackgrounds = False
    End With
    With ActiveDocument
        .PrintPostScriptOverText = False
        .PrintFormsData = False
    End With
    
    SetDuplex 3  'vertical duplex
    Application.PrintOut FileName:="", Range:=wdPrintRangeOfPages, Item:= _
        wdPrintDocumentContent, Copies:=1, Pages:="1;4", PageType:= _
        wdPrintAllPages, ManualDuplexPrint:=False, Collate:=True, Background:= _
        True, PrintToFile:=False, PrintZoomColumn:=0, PrintZoomRow:=0, _
        PrintZoomPaperWidth:=16839, PrintZoomPaperHeight:=23814
    
    SetDuplex 1   'simplex
    Application.PrintOut FileName:="", Range:=wdPrintRangeOfPages, Item:= _
        wdPrintDocumentContent, Copies:=1, Pages:="2-3", PageType:= _
        wdPrintAllPages, ManualDuplexPrint:=False, Collate:=True, Background:= _
        True, PrintToFile:=False, PrintZoomColumn:=0, PrintZoomRow:=0, _
        PrintZoomPaperWidth:=16839, PrintZoomPaperHeight:=23814
End Sub

 

Remélem, ez már működik majd. De (duplex nyomtató híján) ezt sem tudom letesztelni...

 

(Amúgy a 2) sorszámú, ámde harmadik megoldáshoz nem kell új nyomtató, csak az az egy, ami már amúgy is megvan. Csak meg kell duplázni a telepített nyomtatók listájában. De ez most már irreleváns.)

Előzmény: Tündi2003 (15884)
Tündi2003 Creative Commons License 2011.08.19 0 0 15884

Én csak kettőt látok sorszámozva. :) Ha esetleg a másodikra gondolsz, mint harmadik lehetőségre, azaz az új nyomtató telepítésére, az nem fog menni, mert ahogy írtam, pont most adtak központi nyomtatót az egyéni nyomtatók helyett. Nem fognak külön nekem még egyet beállítani, se igazit, se virtuálisat. :(

Előzmény: Törölt nick (15882)
wawabagus Creative Commons License 2011.08.19 0 0 15883

Respect :-D.

Köszi ezredszerre is :-)!!!

Előzmény: Törölt nick (15879)
Törölt nick Creative Commons License 2011.08.19 0 0 15882

Próbáltad a 3. lehetőséget?

Előzmény: Tündi2003 (15881)
Tündi2003 Creative Commons License 2011.08.19 0 0 15881

Ó, roppant szomorú vagyok, de köszönöm a válaszod! :(

 

A nyomtató is "új", most telepítették Eddig saját nyomtatója volt mindenkinek, de most inkább költséghatékonyak leszünk, és közös, a folyosón elhelyezett hálózati nyomtatónk lett. Eddig ki kellett nyomtatni a fájlt A4-ben, és abból nagyítottam fénymásolón A3-ra, kétoldalasra. Most annyival lett könnyebb, hogy az új nyomtató tud A3-ra nyomtatni, ezt akartam még tovább egyszerűsíteni a makróval, hogy ne kelljen mindennap ennek a fájlnak a nyomtatási beállításaival vacakolni, hanem "írok" egy makrót, hozzárendelek egy gombot az eszköztáron, és csak egy gombnyomás, és kész a kétoldalas, A3-as nyomtatás. De hát ezek szerint marad a naponkénti molyolás a nyomtatóbeállítással.

 

Azért ez gáz, hogy nem lehet Word/Excelben beállítani a nyomtatást makróval... de hát ez van.

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

Excel és Word környezetben nincs lehetőség a nyomtató parmétereinek makróval történő beállítására. Access-ben viszont van. Ha van a gépeden telepítve Access, akkor az alábbi kód lehet, hogy működni fog:

 

Sub Nyomtatás()
    Const acPRDPSimplex = 1
    Const acPRDPHorizontal = 2
    Const acPRDPVertical = 3

    Dim AC As Access.Application, P As Access.Printer
    Set AC = New Access.Application
    AC.Visible = True
    Set P = AC.Printer

    With Options
        .UpdateFieldsAtPrint = False
        .UpdateLinksAtPrint = False
        .DefaultTray = "A nyomtató beállításaival"
        .PrintBackground = True
        .PrintProperties = False
        .PrintFieldCodes = False
        .PrintComments = False
        .PrintHiddenText = False
        .PrintXMLTag = False
        .PrintDrawingObjects = True
        .PrintDraft = False
        .PrintReverse = False
        .MapPaperSize = True
        .PrintOddPagesInAscendingOrder = True
        .PrintEvenPagesInAscendingOrder = True
        .PrintBackgrounds = False
    End With
    With ActiveDocument
        .PrintPostScriptOverText = False
        .PrintFormsData = False
    End With
    P.Duplex = acPRDPVertical
    Application.PrintOut FileName:="", Range:=wdPrintRangeOfPages, Item:= _
        wdPrintDocumentContent, Copies:=1, Pages:="1;4", PageType:= _
        wdPrintAllPages, ManualDuplexPrint:=False, Collate:=True, Background:= _
        True, PrintToFile:=False, PrintZoomColumn:=0, PrintZoomRow:=0, _
        PrintZoomPaperWidth:=16839, PrintZoomPaperHeight:=23814
    P.Duplex = acPRDPSimplex
    Application.PrintOut FileName:="", Range:=wdPrintRangeOfPages, Item:= _
        wdPrintDocumentContent, Copies:=1, Pages:="2-3", PageType:= _
        wdPrintAllPages, ManualDuplexPrint:=False, Collate:=True, Background:= _
        True, PrintToFile:=False, PrintZoomColumn:=0, PrintZoomRow:=0, _
        PrintZoomPaperWidth:=16839, PrintZoomPaperHeight:=23814
    AC.Quit
End Sub

 

A kék sorok állítják be elvileg az egy- illetve kétoldalas nyomtatást. Ha az acPRDPVertical nem jó, próbáld meg acPRDPHorizontal beállítással is.

A Tools->References menüben a Microsoft Access Object Library-t be kell ikszelni.

 

Na most a helyzet az, hogy nekem a fenti kód nem működött. Viszont lehet ennek az is az oka, hogy itt nálunk a rendszergazda jogosultaságot igénylő beállítások le vannak tiltva. Talán admin joggal működik. Nem tudom, próbálkozz vele. Ha nem megy, akkor két további lehetőséget látok.

 

1) Olyan makrót írni, amely meghívja a megfelelő Windows rendszerfüggvényeket, és ezáltal állítja be a duplex paramétert. Nem biztos, hogy az itt jelenlévők tudása együttesen elegendő ehhez.

 

2) Telepíteni még egy ugyanolyan nyomtatót, mint az első. Ehhez nyugodtan lehet a már telepített printer drivert használni, és a nyomtatóport is legyen ugyanaz. Így tehát van egy db. fizikai nyomtató, de a Telepített nyomtatók listájában két bejegyzés szerepel hozzá. Az egyik neve legyen mondjuk "HP LJ akármi duplex", a másiké pedig "HP LJ akármi simplex". Mindkettőn be kell állítani az alapértelmezett nyomtatási módot (két- ill. egyoldalas nyomtatás), a makrót pedig úgy átalakítani, hogy az első és negyedik oldalt az egyikre küldja, a 2-3 oldalt pedig a másikra.

 

A második megoldást kivitelezhetőnek tartom.

 

 

Előzmény: Tündi2003 (15878)
Törölt nick Creative Commons License 2011.08.19 0 0 15879

Valami ilyesmi lesz a megoldás (nem teszteltem):

 

Function Open_Excel()
    Dim appexcel As Object, WB As Object, Month_Lee As String
    
    wNum = IsoWeekNumber(Now()) - 1
    Set appexcel = CreateObject("Excel.Application")
    appexcel.Visible = True
    Set WB = appexcel.Workbooks.Open("D:Weekly_Template_ChannelKnowledge_SuppliesInvalidPNs.xlsx")
    Month_Lee = WB.Sheets(1).Range("A1").Value
    WB.SaveAs "D:ChannelKnowledge_InvalidPNs W" & wNum & ".xls"
    Set WB = appexcel.Workbooks.Open("D:Monthly_Template_ChannelKnowledge_SuppliesInvalidPNs.xlsx")
    WB.SaveAs "D:ChannelKnowledge_InvalidPNs " & Month_Lee & ".xls"
End Function

Előzmény: wawabagus (15876)
Tündi2003 Creative Commons License 2011.08.19 0 0 15878

Segítségül, ezt a kódot alkottam eddig (illetve alkotta a Word Rögzítés üzemmódban), látszik, hogy az 1;4 és a 2-3 oldalak nyomtatási parancsai egyformák, sehol nem szerepel az 1;4-nél a kétoldalas nyomtatásra utasító rész. Ami azt illeti, az A3-as méretre utaló sem, pedig az is be van pipálva. Gondolom, ha más doksit nyomtatnék A4-re, akkor onnantól ez a makró is csak A4-re nyomtatna.

 

ActivePrinter = "nyomtatóneve"
    With Options
        .UpdateFieldsAtPrint = False
        .UpdateLinksAtPrint = False
        .DefaultTray = "A nyomtató beállításaival"
        .PrintBackground = True
        .PrintProperties = False
        .PrintFieldCodes = False
        .PrintComments = False
        .PrintHiddenText = False
        .PrintXMLTag = False
        .PrintDrawingObjects = True
        .PrintDraft = False
        .PrintReverse = False
        .MapPaperSize = True
        .PrintOddPagesInAscendingOrder = True
        .PrintEvenPagesInAscendingOrder = True
        .PrintBackgrounds = False
    End With
    With ActiveDocument
        .PrintPostScriptOverText = False
        .PrintFormsData = False
    End With
    Application.PrintOut FileName:="", Range:=wdPrintRangeOfPages, Item:= _
        wdPrintDocumentContent, Copies:=1, Pages:="1;4", PageType:= _
        wdPrintAllPages, ManualDuplexPrint:=False, Collate:=True, Background:= _
        True, PrintToFile:=False, PrintZoomColumn:=0, PrintZoomRow:=0, _
        PrintZoomPaperWidth:=16839, PrintZoomPaperHeight:=23814
    ActivePrinter = "nyomtatóneve"
    Application.PrintOut FileName:="", Range:=wdPrintRangeOfPages, Item:= _
        wdPrintDocumentContent, Copies:=1, Pages:="2-3", PageType:= _
        wdPrintAllPages, ManualDuplexPrint:=False, Collate:=True, Background:= _
        True, PrintToFile:=False, PrintZoomColumn:=0, PrintZoomRow:=0, _
        PrintZoomPaperWidth:=16839, PrintZoomPaperHeight:=23814

Tündi2003 Creative Commons License 2011.08.19 0 0 15877

Sziasztok!

 

A kérdésem csak részben kapcsolódik az Excelhez, merthogy Word-ös. :) Mivel azonban nyomtatásról van szó, a problémám univerzálisnak érzem. :)

 

Van egy hálózati nyomtatónk, ami tud A3-asra kétoldalasan nyomtatni. Erre én "írni" szándékozom egy makrót, hogy az adott fájlnak az első és a negyedik oldalát egymás hátára nyomtassa, míg a másodikat és a harmadikat csak simán egyoldalasra, és persze mindet A3-asban. Nem akarom minden nyomtatásnál kézzel állítgatni a paramétereket, ezért kellene a makró. Makróírási tudományom odáig terjed, hogy "Feljegyzés" üzemmódban (vagy minek hívják) tudom megcsinálni a makrót, majd tudom értelmezni a kapott kódot.

 

A probléma ott van, hogy a kétoldalas beállítást a makró nem jegyzi fel, azaz kinyomtatja a fájlt, de minden oldalt külön lapra.

 

Kpróbáltam azt a beállítást külön "feljegyezni", ami a kétoldalas nyomtatásra vonatkozik, de a makró egyszerűen nem jegyez fel semmit. Az adott nyomtató Tulajdonságainál lehet bepipálni a kétoldalas nyomtatásra vonatkozó részt, de a makró ezt úgy veszi, mintha nem csináltam volna semmit. Hogyan, milyen paranccsal tudnám kézzel beleírni a makróba, hogy az első és a negyedik oldalt egymás hátára, míg a másodikat és a harmadikat külön lapra nyomtassa?

wawabagus Creative Commons License 2011.08.19 0 0 15876

Sziasztok!

Access és excel jóbarátságáról szeretnék tőletek kérdezni.

Ez szuper egyszerű dolgot, de már annyél megragadtam.

 

Íme a kód, amit segítségetekkel hoztam létre. Accessből kinyit excel, lement stb.

Esküszöm szégyelem is magam, hogy nem tudok rájönni, de valahogy ez az accessből dolgozás fura nekem.

Csak annyit szeretnék, hogy a második fájl mentésénél a névbe tegyen bele egy nevet, ami MINDIG a sheet1!A1-en található.

Lehetne hivatkozni named rangel is. Próbálkoztam saját logika szerint, de nem ment :-(...

 

Ti tudjátok a megoldást esetleg?

Nagyon köszönöm!!!

 

 

Public Function IsoWeekNumber(d1 As Date) As Integer
    Dim d2 As Long
   
    d2 = DateSerial(Year(d1 - Weekday(d1 - 1) + 4), 1, 3)
    IsoWeekNumber = Int((d1 - d2 + Weekday(d2) + 5) / 7)
End Function

 

Function Open_Excel()
Dim appexcel As Object

wNum = IsoWeekNumber(Now()) - 1
Set appexcel = CreateObject("Excel.Application")
appexcel.Workbooks.Open "D:Weekly_Template_ChannelKnowledge_SuppliesInvalidPNs.xlsx"
appexcel.Visible = True
appexcel.ActiveWorkbook.SaveAs "D:ChannelKnowledge_InvalidPNs W" & wNum & ".xls"
appexcel.Workbooks.Open "D:Monthly_Template_ChannelKnowledge_SuppliesInvalidPNs.xlsx"

'ide kéne hogy olvassa ki a monthly fájl nevét, ami mindig a "sheet1!A1 -n van. A fent említett template fájlban"

appexcel.ActiveWorkbook.SaveAs "D:ChannelKnowledge_InvalidPNs " & a & ".xls"

End Function

tt65 Creative Commons License 2011.08.18 0 0 15875

menni fog. szólj ha elakadtál!

Előzmény: muszakiellenor (15874)
muszakiellenor Creative Commons License 2011.08.18 0 0 15874

Köszönöm szépen, megprószálom :)

Előzmény: tt65 (15873)
tt65 Creative Commons License 2011.08.18 0 0 15873

Persze, csak fordítva kell a lóra ülni! :-)

A formanyomtatvány szöveg nagyon jól van wordben, mert azt arra találták ki.

Excelben pedig a változó adatokat tárolod, onnan a word emeli be az adatot a megefelelő helyre.

Ezt körlevélnek hívják.

lsg. gugli: word körlevél készítés adatok excelben pl.: http://office.microsoft.com/hu-hu/excel-help/word-korlevel-letrehozasa-excel-adatokkal-HP005203760.aspx

Előzmény: muszakiellenor (15872)
muszakiellenor Creative Commons License 2011.08.18 0 0 15872

Sziasztok!

 

Excelben szeretnék olyat megoldani, hogy bizonyos nyomtatványokat- közigazgatási határozatokat, végzéseket- vinnék fel egy-egy munkalapra. Lenne egy alap munkalap, ahova az ügyfél nevét, címét, iktatószámot, építési helyet, helyrajzi számot csak egyszer kellene begépelnem és a  =munkalap1!a..... hivatkozással ezek az alapadatok átkerülnének az eljárási cselekmények végzéseibe, határozataiba.

Nagyjából ezek sikerülnek is, csak a wordmen meglévő sablon dokumentumait soronként kell az excel cellákba "áthordanom" és a külalak elég gyatra lett eddig. Próbáltam cellaegyesítés után bemásolni, de az nem lehetséges. Az lenne a tiszteletteljes kérdésem, hogy van-e szalonképesebb megoldás erre az excelben ?

A segítséget előre is köszönöm !

muszakiellenor Creative Commons License 2011.08.18 0 0 15871

Kösz szépen !

Előzmény: tt65 (15870)
tt65 Creative Commons License 2011.08.17 0 0 15870
Előzmény: muszakiellenor (15865)
pimre Creative Commons License 2011.08.17 0 0 15869

Persze így jó, de a munkalap nevének bepötyögése helyett biztosabb módszer az = jel beírása után átmenni a másik munkalapra, ott kiválasztani a megfelelő cellát, és az enter után ott lesz a megfelelő képlet. Bonyolultabb esetben minden műveleti jel után ki lehet választani ilyen módon a megfelelő munkalap megfelelő celláját. 

Előzmény: muszakiellenor (15868)
muszakiellenor Creative Commons License 2011.08.17 0 0 15868
Koszi , zarojel nelkul ok!
Előzmény: tt65 (15866)
tt65 Creative Commons License 2011.08.17 0 0 15867

vagy esetleg ctrl C + ctrl V ill. ctrl M + ctrl V ? :-)

Előzmény: muszakiellenor (15865)
tt65 Creative Commons License 2011.08.17 0 0 15866

esetleg zárójel nélkül?

pl.: =Munka1!C3

Előzmény: muszakiellenor (15865)

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