Speciális VBA útmutató az MS Excelhez

Ha még csak most kezdi használni a VBA -t , akkor érdemes elkezdenie a VBA kezdőknek szóló útmutatójának(VBA guide for beginners) tanulmányozását . De ha Ön tapasztalt VBA -szakértő, és olyan fejlettebb dolgokat keres, amelyeket az Excelben elérhető (Excel)VBA - val megtehet , akkor olvasson tovább.

A VBA kódolás Excelben(Excel) való használatának lehetősége az automatizálás egész világát nyitja meg. Automatizálhatja a számításokat az Excelben(Excel) , nyomógombokkal, sőt e-mailt is küldhet. Több lehetőség kínálkozik a napi munka automatizálására a VBA segítségével , mint gondolná.

Speciális VBA útmutató a Microsoft Excelhez(Advanced VBA Guide For Microsoft Excel)

A VBA(VBA) -kód Excelben(Excel) való írásának fő célja, hogy információkat kinyerhessen egy táblázatból, különféle számításokat végezzen rajta, majd az eredményeket visszaírja a táblázatba.

Az alábbiakban bemutatjuk a VBA(VBA) leggyakoribb felhasználási módjait az Excelben(Excel) .

  • Adatok importálása(Import) és számítások elvégzése
  • Számítsa ki(Calculate) az eredményeket, ha a felhasználó megnyom egy gombot
  • A számítási(Email) eredményeket küldje el valakinek

Ezzel a három példával képesnek kell lennie arra, hogy különféle speciális Excel VBA -kódokat írjon.

Adatok importálása és számítások végrehajtása(Importing Data and Performing Calculations)

Az egyik leggyakoribb dolog, amire az emberek az Excelt használják, az az, hogy az (Excel)Excelen(Excel) kívül létező adatokon végeznek számításokat . Ha nem használja a VBA -t, az azt jelenti, hogy manuálisan kell importálnia az adatokat, futtatnia kell a számításokat, és ki kell adnia ezeket az értékeket egy másik lapra vagy jelentésre.

A VBA segítségével a teljes folyamat automatizálható. Ha például minden hétfőn egy új (Monday)CSV -fájlt tölt le számítógépe valamelyik könyvtárába , beállíthatja úgy, hogy VBA -kódja (VBA)kedd(Tuesday) reggel , amikor először megnyitja a táblázatot, fusson .

A következő importálási kód fog futni, és importálja a CSV -fájlt az Excel - táblázatba.

Dim ws As Worksheet, strFile As String

Set ws = ActiveWorkbook.Sheets("Sheet1")
Cells.ClearContents

strFile = “c:\temp\purchases.csv”

With ws.QueryTables.Add(Connection:="TEXT;" & strFile, Destination:=ws.Range("A1"))
     .TextFileParseType = xlDelimited
     .TextFileCommaDelimiter = True
     .Refresh
End With

Nyissa meg az Excel VBA szerkesztőeszközét, és válassza ki a Sheet1 objektumot. Az objektum és metódus legördülő mezőiből válassza a Munkalap(Worksheet) és az Aktiválás lehetőséget(Activate) . Ez minden alkalommal futtatja a kódot, amikor megnyitja a táblázatot.

Ezzel létrehoz egy Sub Worksheet_Activate() függvényt. Illessze be a fenti kódot a függvénybe.

Ezzel az aktív munkalapot Lap1 értékre állítja , törli a lapot, csatlakozik a fájlhoz az (Sheet1)strFile változóval megadott fájl elérési út használatával , majd a With ciklus végighalad a fájl minden során, és az adatokat az A1 cellától kezdődően a munkalapba helyezi. .

Ha futtatja ezt a kódot, látni fogja, hogy a CSV -fájl adatai importálva vannak az üres táblázatba, az 1. munkalapba(Sheet1) .

Az importálás csak az első lépés. Ezután új fejlécet szeretne létrehozni a számítási eredményeket tartalmazó oszlophoz. Ebben a példában tegyük fel, hogy ki szeretné számítani az egyes cikkek eladása után fizetett 5%-os adót.

A kód által végrehajtandó műveletek sorrendje a következő:

  1. Hozzon létre új eredményoszlopot adók(taxes) néven .
  2. Lapozzon át az eladott egységek(units sold) oszlopban, és számítsa ki a forgalmi adót.
  3. Írja a számítási eredményeket a lap megfelelő sorába!

A következő kód végrehajtja ezeket a lépéseket.

Dim LastRow As Long
Dim StartCell As Range
Dim rowCounter As Integer
Dim rng As Range, cell As Range
Dim fltTax As Double

Set StartCell = Range("A1")

'Find Last Row and Column
LastRow = ws.Cells(ws.Rows.Count, StartCell.Column).End(xlUp).Row
Set rng = ws.Range(ws.Cells(2, 4), ws.Cells(LastRow, 4))

rowCounter = 2
Cells(1, 5) = "taxes"

For Each cell In rng
fltTax = cell.Value * 0.05
Cells(rowCounter, 5) = fltTax
rowCounter = rowCounter + 1
Next cell

Ez a kód megkeresi az adatlap utolsó sorát, majd beállítja a cellák tartományát (az eladási árakat tartalmazó oszlopot) az első és utolsó adatsor szerint. Ezután a kód végigfut ezeken a cellákon, elvégzi az adószámítást, és beírja az eredményeket az új oszlopba (5. oszlop).

Illessze be a fenti VBA -kódot az előző kód alá, és futtassa a szkriptet. Az eredményeket az E oszlopban láthatja.

Mostantól minden alkalommal, amikor megnyitja az Excel -munkalapot, az automatikusan kialszik, és megkapja az adatok legfrissebb másolatát a CSV - fájlból. Ezután elvégzi a számításokat, és az eredményeket a lapra írja. Nem kell többé semmit kézzel csinálnia!

Számolja ki az eredményeket a gombnyomással(Calculate Results From Button Press)

Ha jobban szeretné irányítani a számítások futtatását, ahelyett, hogy a munkalap megnyílásakor automatikusan futna, használhat vezérlőgombot.

A(Control) vezérlőgombok akkor hasznosak, ha szabályozni szeretné, hogy mely számításokat használja. Például ebben az esetben, mint fent, mi van akkor, ha az egyik régióra 5%-os, a másikra pedig 7%-os adókulcsot szeretne alkalmazni?

Megengedheti, hogy ugyanaz a CSV -importálási kód automatikusan fusson, de hagyja futni az adószámítási kódot, amikor megnyomja a megfelelő gombot.

Ugyanazzal a táblázattal, mint fent, válassza ki a Fejlesztő(Developer) lapot, és válassza a Beszúrás(Insert) lehetőséget a szalag Vezérlők(Controls) csoportjából. Válassza ki az ActiveX Control nyomógombot(push button) a legördülő menüből.

Rajzolja a nyomógombot a lap bármely részére, távolabb attól, ahová az adat kerül.

Kattintson a jobb gombbal a nyomógombra, és válassza a Tulajdonságok menüpontot(Properties) . A Tulajdonságok(Properties) ablakban módosítsa a Feliratot arra, amit meg szeretne jeleníteni a felhasználó számára. Ebben az esetben ez lehet az Calculate 5% Tax .

Ez a szöveg megjelenik magán a nyomógombon. Zárja be a tulajdonságok(properties) ablakát, és kattintson duplán magára a nyomógombra. Ezzel megnyílik a kódszerkesztő ablak, és a kurzor azon a funkción belül lesz, amely akkor fut le, amikor a felhasználó megnyomja a nyomógombot.

Illessze be a fenti szakasz adószámítási kódját ebbe a függvénybe úgy, hogy az adókulcs szorzója 0,05 marad. Ne felejtse el beilleszteni a következő 2 sort az aktív lap meghatározásához.

Dim ws As Worksheet, strFile As String

Set ws = ActiveWorkbook.Sheets("Sheet1")

Most ismételje meg a folyamatot egy második nyomógomb létrehozásával. Calculate 7% Tax feliratot .

Kattintson duplán(Double-click) erre a gombra, és illessze be ugyanazt a kódot, de állítsa be az adószorzót 0,07-re.

Most attól függően, hogy melyik gombot nyomja meg, az adók oszlop ennek megfelelően kerül kiszámításra.

Ha végzett, mindkét nyomógomb megjelenik a lapján. Mindegyik más-más adószámítást kezdeményez, és más-más eredményt ír az eredmény oszlopba. 

Ennek szövegezéséhez válassza ki a Fejlesztő(Developer) menüt, majd válassza ki a Tervezési módot(Design Mode) a szalag Vezérlők(Controls) csoportjából a Tervezési mód(Design Mode) letiltásához . Ez aktiválja a nyomógombokat. 

Próbáljon kijelölni minden nyomógombot, hogy megnézze, hogyan változik az „adók” eredményoszlop.

A számítási eredmények elküldése e-mailben valakinek(Email Calculation Results to Someone)

Mi a teendő, ha el szeretné küldeni valakinek e-mailben a táblázatban szereplő eredményeket?

A fenti eljárással létrehozhat egy másik gombot is Email Sheet to Boss néven. (Email Sheet to Boss)A gomb kódja magában foglalja az Excel CDO objektum használatát az SMTP e-mail beállítások konfigurálásához, és az eredmények e-mailben történő elküldését felhasználó által olvasható formátumban.

A funkció engedélyezéséhez válassza az Eszközök és referenciák(Tools and References) lehetőséget . Görgessen le a Microsoft CDO for Windows 2000 Library részhez(Microsoft CDO for Windows 2000 Library) , engedélyezze, és kattintson az OK gombra(OK) .

Az e-mail küldéséhez és a táblázat eredményeinek beágyazásához létrehozandó kódnak három fő része van.

Az első a tárgy, a címzett és feladó(From) címek, valamint az e-mail törzsének tárolására szolgáló változók beállítása .

Dim CDO_Mail As Object
Dim CDO_Config As Object
Dim SMTP_Config As Variant
Dim strSubject As String
Dim strFrom As String
Dim strTo As String
Dim strCc As String
Dim strBcc As String
Dim strBody As String
Dim LastRow As Long
Dim StartCell As Range
Dim rowCounter As Integer
Dim rng As Range, cell As Range
Dim fltTax As Double
Set ws = ActiveWorkbook.Sheets("Sheet1")
strSubject = "Taxes Paid This Quarter"
strFrom = "[email protected]"
strTo = "[email protected]"
strCc = ""
strBcc = ""
strBody = "The following is the breakdown of taxes paid on sales this quarter."

Természetesen a törzsnek dinamikusnak kell lennie attól függően, hogy milyen eredmények vannak a lapon, ezért itt hozzá kell adni egy ciklust, amely átmegy a tartományon, kivonja az adatokat, és soronként ír a törzsbe.

Set StartCell = Range("A1")

'Find Last Row and Column
LastRow = ws.Cells(ws.Rows.Count, StartCell.Column).End(xlUp).Row
Set rng = ws.Range(ws.Cells(2, 4), ws.Cells(LastRow, 4))

rowCounter = 2
strBody = strBody & vbCrLf

For Each cell In rng
     strBody = strBody & vbCrLf
     strBody = strBody & "We sold " & Cells(rowCounter, 3).Value & " of " & Cells(rowCounter, 1).Value _
     & " for " & Cells(rowCounter, 4).Value & " and paid taxes of " & Cells(rowCounter, 5).Value & "."
     rowCounter = rowCounter + 1
Next cell

A következő szakasz az SMTP - beállítások beállítását tartalmazza, hogy e-maileket küldhessen az SMTP - kiszolgálón keresztül. Ha Gmailt(Gmail) használ , ez általában az Ön Gmail e-mail címe, Gmail jelszava és a Gmail SMTP szervere (smtp.gmail.com).

Set CDO_Mail = CreateObject("CDO.Message") 
On Error GoTo Error_Handling
Set CDO_Config = CreateObject("CDO.Configuration")
CDO_Config.Load -1
Set SMTP_Config = CDO_Config.Fields

With SMTP_Config
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "[email protected]"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
 .Update
End With

With CDO_Mail
     Set .Configuration = CDO_Config
End With

Cserélje le az [email protected] és a jelszót saját fiókadataival.

Végül az e-mail küldésének elindításához írja be a következő kódot.

CDO_Mail.Subject = strSubject
CDO_Mail.From = strFrom
CDO_Mail.To = strTo
CDO_Mail.TextBody = strBody
CDO_Mail.CC = strCc
CDO_Mail.BCC = strBcc
CDO_Mail.Send

Error_Handling:
If Err.Description <> "" Then MsgBox Err.Description

Megjegyzés(Note) : Ha átviteli hibát lát a kód futtatásakor, annak valószínűleg az az oka, hogy Google - fiókja blokkolja a „kevésbé biztonságos alkalmazások” futását. Látogassa meg a kevésbé biztonságos alkalmazások beállítási oldalát(less secure apps settings page) , és kapcsolja BE ezt a funkciót.

Miután ez engedélyezve van, elküldjük az e-mailt. Így néz ki az a személy, aki megkapja az automatikusan generált eredményekről szóló e-mailt.

Amint láthatja, az Excel VBA segítségével sok minden automatizálható . Próbáljon kijátszani az ebben a cikkben megismert kódrészletekkel, és létrehozza saját egyedi VBA automatizálását.



About the author

Ingyenes szoftverfejlesztő vagyok, és a Windows Vista/7 szószólója vagyok. Több száz cikket írtam az operációs rendszerrel kapcsolatos különféle témákban, beleértve tippeket és trükköket, javítási útmutatókat és bevált módszereket. Cégemen, a Help Desk Services szolgáltatáson keresztül irodai tanácsadási szolgáltatásokat is nyújtok. Mélyen ismerem az Office 365 működését, funkcióit és a leghatékonyabb használatukat.



Related posts