Köszönet Katherine-nek, aki elküldte a kérdést az e heti Excel-tipphez:
Egy űrlapgombot szeretnék elhelyezni egy Excel munkalapon, amelyre kattintva ugyanezt az Excel munkalapot elküldi valakinek.
Ha az egész könyvet a [email protected] címre szeretné elküldeni egy adott tárgysorral, használja ezt az Excel makrót.
Sub SendIt() Application.Dialogs(xlDialogSendMail).Show arg1:="[email protected]", _ arg2:="This goes in the subject line" End Sub
Van egy eszköztár ikon, amely lehetővé teszi a parancs gomb hozzáadását. Kövesse az alábbi lépéseket, ha hozzá szeretné adni egy meglévő eszköztárhoz:
- Nézet> Eszköztárak> Testreszabás
- Kattintson a Parancsok fülre
- A Kategória mezőben görgessen le a Vezérlő eszköztárhoz
- A Parancsok mezőben görgessen le a Parancs gombra
- Kattintson a parancs gombra, majd húzza felfelé és dobja be egy meglévő eszközsorra
- A Bezárás gombra kattintva utasítsa el a Testreszabás párbeszédpanelt
Most, hogy megvan a parancs gomb ikonja: Kattintson az ikonra. Húzza a munkalapot a gomb létrehozásához. Készítsen akkorát vagy olyan kicsi, amennyit csak akar. Az Excel megkéri, hogy rendeljen makrót a gombhoz. Válassza a SendIt lehetőséget. Kattintson és húzza a gomb 1 szó kiemeléséhez. Írjon be valami olyat, mint "E-mailben küldje el ezt a fájlt". Kattintson a gombra, és készen áll az indulásra. Ha valaha át kell rendelnie a gombhoz csatolt makrót, kattintson a jobb gombbal a gombra, és válassza a makró hozzárendelését.
Mi van, ha van egy nagy listája az információkról, amelyeket el akar terjeszteni számos felhasználó számára, de azt szeretné, ha minden felhasználó csak a saját adatait látná? Az alábbiakban egy kissé összetettebb makró található, amely ezt meg fogja tenni. A jobb oldalon található egy minta lista az eladásokról három régió számára.
A makró megírása előtt állítsa be a munkafüzetet az alábbiak szerint:
- Másolja az adatlapot az egér jobb gombjával az adat fülre kattintva, válassza az "áthelyezés vagy másolás" lehetőséget, jelölje be a "másolat létrehozása" lehetőséget, OK. Nevezze át az új munkalapot "Jelentés" néven. Átnevezhet egy lapot, ha jobb gombbal kattint a fülre, kiválasztja az "átnevezés" lehetőséget, majd beírja a Jelentés parancsot.
- A Jelentés lapon törölje az összes adatsort. Csak a címsorokat és a címeket őrizze meg.
- Helyezzen be egy új munkalapot a következő oszlopokkal: Régió, Címzett. Ezen a munkalapon írja be az egyes régiók nevét és a felhasználót, akinek meg kell kapnia a jelentést. Nevezze át ezt a munkalapot "Terjesztés" névre.
Itt van a makró. Az aposztrófokkal kezdődő sorok (') azok a megjegyzések, amelyek célja a folyamat követése.
Public Sub SendItAll() ' Clear out any old data on Report Sheets("Report").Select Range("A1").CurrentRegion.ClearContents ' Sort data by region Sheets("Data").Select Range("A1").CurrentRegion.Select Selection.Sort Key1:=Range("A2"), Header:=xlYes ' Process each record on Distribution Sheets("Distribution").Select FinalRow = Range("A15000").End(xlUp).Row For i = 2 To FinalRow Sheets("Distribution").Select RegionToGet = Range("A" & i).Value Recipient = Range("B" & i).Value ' Clear out any old data on Report Sheets("Report").Select Range("A1").CurrentRegion.ClearContents ' Get records from Data Sheets("Data").Select Range("A1").CurrentRegion.Select ' Turn on AutoFilter, if it is not on If ActiveSheet.AutoFilterMode = False Then Selection.AutoFilter ' Filter the data to just this region Selection.AutoFilter Field:=1, Criteria1:=RegionToGet ' Select only the visible cells and copy to Report Selection.SpecialCells(xlCellTypeVisible).Select Selection.Copy Destination:=Sheets("Report").Range("A1") ' Turn off the Autofilter Selection.AutoFilter ' Copy the Report sheet to a new book and e-mail Sheets("Report").Copy Application.Dialogs(xlDialogSendMail).Show _ arg1:=Recipient, _ arg2:="Report for " & RegionToGet ActiveWorkbook.Close SaveChanges:=False Next i End Sub