Office Guru

Vágólapos elmélkedés Excelből: ürítsünk, na de hogyan?

2017. augusztus 02. - Office Guru

A mai posztban egy vágólapot feszegető kérdést fogunk körbejárni, amelyben a kedves Olvasó arra keresi a választ, hogy hogyan lehetne elérni, hogy egyetlen beillesztés után Excel vágólapunk üres legyen ismét és a vágólap tartalma ne őrződjön meg tovább.

Alapesetben az Excel Clipboard funkciót nem lehet teljesen eliminálni egy egyszerű checkbox ki-be pipálgatásával, így a következőkben néhány lehetséges áthidaló megoldást fogok bemutatni. Azért itt tegyük tisztába, hogy van egy Office-vágólap (24 elemre) és egy Windows-vágólap is (egyetlen elemre) és érdekes, de CTRL+C lenyomásával az Office-vágólapra pakolunk, CTRL+V lenyomásával pedig a Windows-vágólapról illesztünk be - hacsak manuálisan nem lépünk közbe a Clipboard varázslónk segítségével.

1. Szóval első opcióként a Home ribbonfül Clipboard szekciójában válasszuk az apró kis nyilacskát a jobb sarokban, hogy az egyéb lehetőségeket is láthassuk:

clip1.JPGEzzel meg fog jelenni bal oldalt a Clipboard menüsáv, benne listázva az éppen a vágólapon lévő elemeink:

clip2.JPGÉrtelemszerűen tehát ha valamit vágólapra helyezünk, majd beillesztünk, utána a Clear All gomb használatával törölni tudjuk a régi elemeket. Nem egy hatékony megoldás, de megoldás, ha a sima Escape billentyűs menekülés már nem segít.

2. Használjunk egy roppant egyszerű VBA-s megoldást, amelynek első lépéseként mondjuk hozzunk létre egy gombot a munkalapunkon (vagy akár a Ribbonhoz is adhatunk ilyen gombot), amelyhez rendeljünk hozzá egy makrót.

clip4.JPGEz a makró nagyjából egy egyetlen soros kis kód lesz, egy Application.CutCopyMode = False tulajdonságállítással.

clip3.JPGA gomb nem igazán életszerű megoldás, hiszen valószínűleg ezt a Clipboard kiürítéses megoldást állandóan használni szeretnénk, de ennek érdekében bármilyen más VBA-kód végére odaszúrhatjuk ezt az egyetlen sort. Ezt egyébként főleg rögzített makrókban találhatjuk.

3. A harmadik megoldás is VBA, ráadásul elegánsabb, amelyet meghatározott időközönként, gombhoz hozzárendelve, Ribbonra helyezve is tudunk használni.

VBA-editorban először is deklaráljunk három funkciót a következőképp:

Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long
Private Declare Function CloseClipboard Lib "user32" () As Long

A Private azt fogja elmondani a compilernek, hogy ez a funkció a jelenlegi osztályban vagy modulban lesz csak definiálva, más osztályokból nem érhető majd el. A Declare értelemszerűen azt mondja meg a compilernek, hogy a funkció később (mondjuk egy külső osztályban) kerül majd definiálásra, míg a Function maga a funkció, ami visszaad egy értéket. Ezután jön a funkció neve, majd a Lib, ami megmondja, hogy az adott funkció hol van definiálva - a mi esetünkben ez a user32.dll. A többi rész pedig magáért beszél.

A funkcióban a (ByVal hwnd As Long) azt a célt segít elérni, hogy olyan funkciót használhassunk, ami közvetlenül nem támogatott a VBA-ban, "hwnd" a "handle of the window" nem egy pontos cím, de a Windowst fogja útbaigazítani, mert a hwnd Windows API funkciók meghívásánál megadandó argumentum. Például hwnd kell akkor is, ha azt akarjuk megnézni, hogy az aktuális ablakunk mérete milyen.

Innentől kezdve már csak futtatnunk kell a három funkciót, amikor csak akarjuk - automatikusan bizonyos lépések után, gombnyomásra stb.

Sub ClearClipboard()
OpenClipboard (0&)
EmptyClipboard
CloseClipboard
End Sub

clip5.JPGFontos tudni, hogy a hármas pontban taglalt megoldás semmilyen formában nem saját, rengetegen használják úton-útfélen évek óta és én is csak javasolni tudom a bevetését szükség esetén.

A bejegyzés trackback címe:

https://officeguru.blog.hu/api/trackback/id/tr7512716112

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

GABOR2 2017.08.08. 18:51:22

Nem értem miért baj, ha a vágólapon marad valami.
süti beállítások módosítása