Donna no Misūri jautāja:
Vai jums ir kāda ideja, kā es varu iegūt ceļu, kur dokuments tiek iesniegts, norādīts galvenē vai kājenē, vai jebkur dokumentā. Es varu iegūt faila nosaukumu ar & f, bet es nevaru saprast, kā veikt ceļu.
Pirmkārt, es saprotu, ka Microsoft ir pievienojusi šo funkcionalitāti Excel XP, un es viņiem piedāvāju atzinību, jo tā ir bieži uzdotā problēma. Visiem lasītājiem, kuri jau ir jauninājuši uz Office XP, šīs nedēļas padomā nebūs vajadzīgi paņēmieni, kā atrisināt šo problēmu, taču tie joprojām būs noderīgi citu problēmu risināšanai.
Šī padoma risinājums ir īpašs makro veids, ko sauc par notikumu apstrādes makro. Katru reizi, kad gatavojas izdrukāt mūsu darbgrāmatu un pievienot galvenei pašreizējo ceļu, mēs īsi kontrolēsim programmu Excel.
Daudzi Excel lietotāji ir mēģinājuši ierakstīt vienkāršus makro. Makro tiek glabāti modulī ar nosaukumu Module1 vai Module2 un kļūst par jūsu projekta daļu. Šodien es apspriedīšu notikumu apstrādātāju makro. Šie makro atrodas īpašā koda modulī, kas ir saistīts ar katru darblapu vai darbgrāmatu.
Iepriekšējie padomi, piemēram, Enter Excel Time Without Colon, ir apstrādāti ar notikumu Worksheet_Change. Šodienas padoms prasa, lai mēs pievienotu nelielu kodu darbgrāmatas pasākumam BeforePrint.
Pasākumam pievienotais kods tiks palaists ikreiz, kad šis notikums tiks "aktivizēts". Šajā gadījumā jebkurā laikā, kad tiek izdrukāta Excel darbgrāmata, pirms drukāšanas sākuma programma Excel pāriet uz VBA kodu un ļauj pirms drukāšanas automātiski notikt visam, ko varat norādīt VBA kodā.
Es pieņemšu, ka jūs esat jauns notikumu apstrādes makro. Es iešu cauri tam, kā tieši nokļūt īstajā vietā, lai iekļūtu šajā makro.
Man ir darbgrāmata ar nosaukumu “Tip055 Sample.xls”. Kad darbgrāmata ir ielādēta programmā Excel, es nospiedīšu alt = "" + F11, lai sāktu vizuālā pamata redaktora izveidi. Redaktora noklusējuma izskats ir tāds, kā parādīts labajā pusē. Kreisajā pusē parasti redzat projekta rūti, kas sakrauta īpašību rūts augšpusē. Lielākajā daļā ekrāna labās puses ir kodu rūts. Ja darbgrāmatā nav makro, koda rūts būs pelēka, kā parādīts labajā pusē.
Attēlam esmu pievienojis zilu kursīvu skripta vārdus, lai identificētu trīs rūtis - jūs tos neredzēsiet savā piemērā.
Ir svarīgi, lai jūs varētu redzēt projekta rūti VB redaktorā. Ja jūsu VB redaktora skatā nav iekļauta projekta rūts, nospiediet taustiņu kombināciju Ctrl + R, lai skatītu projekta rūti. Vai noklikšķiniet uz zemāk redzamās rīkjoslas ikonas:
Projekta rūtī tiks parādīts katras atvērtās Excel darbgrāmatas un katra instalētā pievienojumprogrammas projekts. Noklikšķiniet uz pelēkā pluszīmes blakus darbgrāmatas nosaukumam, lai paplašinātu darbgrāmatas projektu. Pēc tam noklikšķiniet uz pelēkā pluszīmes blakus mapei Microsoft Excel Objects, lai izvērstu objektu mapi. Tagad jums vajadzētu redzēt vienu ierakstu katrai darblapai un vienu ierakstu ar nosaukumu ThisWorkbook.
Ar peles labo pogu noklikšķiniet uz ThisWorkbook ieraksta un uznirstošajā izvēlnē atlasiet Skatīt kodu.
Tagad jums, iespējams, būs liela tukša balta koda rūts, kas aizņem ekrāna labo pusi. Kodu rūts augšpusē ir divas nolaižamās izvēlnes, kurās būs teikts (Vispārīgi) un (Deklarācijas).
- Kreisajā nolaižamajā izvēlnē atlasiet Darbgrāmata.
- Labajā nolaižamajā izvēlnē tagad ir iekļauti visi programmējamie notikumi, kas saistīti ar darbgrāmatu. Šeit ir notikumi, kas palaidīs kodu jebkurā laikā, kad tiks atvērta, aktivizēta, deaktivizēta utt. Šodien mēs vēlamies ierakstīt kodu notikumā BeforePrint, tāpēc labajā nolaižamajā izvēlnē atlasiet BeforePrint.
Ņemiet vērā, ka katru reizi, kad izvēlaties kaut ko labajā nolaižamajā izvēlnē, VBA redaktors koda modulī jums ieraksta koda sākuma un beigu rindu. Pirmo reizi nomainot kreiso nolaižamo izvēlni uz Workbook, iespējams, pēc noklusējuma esat saņēmis apakšprogrammas Workbook_Open sākumu. Ja nevēlaties rakstīt Workbook_Open procedūru, apsveriet iespēju izdzēst šo tukšo procedūru.
Tagad, rakstot VBA kodu. Varat izmantot pāris noderīgus mainīgos.
- ActiveWorkbook.Path atgriezīs darbgrāmatas ceļu. Tas varētu izskatīties kā "C: Mani dokumenti MrExcel".
- ActiveWorkbook.FullName atgriezīs darbgrāmatas ceļu un faila nosaukumu. Tas varētu izskatīties kā "C: Mani dokumenti MrExcel Tip055 Sample.xls".
Varat piešķirt šim mainīgajam vienu no šīm 6 pozīcijām:
Worksheets("Sheet1").PageSetup.LeftHeader = ActiveWorkbook.FullName Worksheets("Sheet1").PageSetup.CenterHeader = ActiveWorkbook.FullName Worksheets("Sheet1").PageSetup.RightHeader = ActiveWorkbook.FullName Worksheets("Sheet1").PageSetup.LeftFooter = ActiveWorkbook.FullName Worksheets("Sheet1").PageSetup.CenterFooter = ActiveWorkbook.FullName Worksheets("Sheet1").PageSetup.RightFooter = ActiveWorkbook.FullName
Šeit ir trīs iespējamie makro paraugi.
Šim makro ceļš un faila nosaukums tiks pievienots kā aktīvās darblapas labā kājene:
Private Sub Workbook_BeforePrint(Cancel As Boolean) ActiveSheet.PageSetup.RightFooter = ActiveWorkbook.FullName End Sub
Šim makro ceļš tiks pievienots kā 1. lapas kreisā galvene un kā 2. lapas kājene:
Private Sub Workbook_BeforePrint(Cancel As Boolean) Worksheets("Sheet1").PageSetup.LeftHeader = ActiveWorkbook.Path Worksheets("Sheet2").PageSetup.CenterFooter = ActiveWorkbook.Path End Sub
Ja drukāšanas laikā mēdzat izmantot opciju "Visa darbgrāmata", šī versija visām lapām kā centrālo kājeni pievienos pilnu vārdu:
Private Sub Workbook_BeforePrint(Cancel As Boolean) For Each Sh In ActiveWorkbook.Worksheets Sh.PageSetup.CenterFooter = ActiveWorkbook.FullName Next Sh End Sub
Izpildiet vienu no šiem piemēriem vai izveidojiet savu. Kad esat pabeidzis, aizveriet VBA redaktoru ar File> Close un Return to Microsoft Excel.
Jebkurā laikā, kad drukājat darblapu, kods darbosies un ievietos pašreizējo ceļu attiecīgajā galvenē vai kājenē, kuru norādījāt VBA kodā.
Dažas piezīmes un brīdinājumi:
-
Iesācēju Excel lietotājiem būs maz nojausmas, ka šis kods ir darbgrāmatā. Atverot darbgrāmatu, viņi var saņemt drošības brīdinājumu, ka failā ir makro, taču brīdinājums nebūs, kad VBA kods sitīs visu, kas viņiem bija kā centrālā kājene, un ievietos tur ceļa nosaukumu. Tas var izraisīt grēmas. Iedomājieties, ka pēc 5 gadiem kāds izmanto jūsu darbgrāmatu, un jaunais pārvaldnieks vēlas, lai faila nosaukums pārvietotos no centrālās kājenes uz labo kājeni. Šī persona, iespējams, zina, ka manuāli jāmaina iestatījumi sadaļā Fails> Lappuses iestatīšana, taču, ja viņi nezina, ka kods ir, tas viņu pamudinās, jo kods nepārtraukti maina kājenes atpakaļ.
Tas ir maz ticams, ka viņi varēs atrast jūsu koda moduli, taču katram gadījumam, iespējams, vēlēsities atstāt komentāru koda modulī, kas tos novirza atpakaļ uz šo vietni, lai sniegtu paskaidrojumu.
Varat arī pievienot komentāru šūnai A1, atgādinot sev, ka drukas galvenes mainīšanai ir iestatīts notikumu apdarinātājs.
-
VBA ir iestatījums, kas neļauj notikumiem darboties. Ja jūsu makro pēkšņi pārtrauc darboties, parasti tiek konstatēts, ka kaut kas VBA ietvaros ir pagriezis šo iestatījumu, lai novērstu notikumu darbību. Parasti scenārijs ir tāds, ka programmētājs sāk makro ar:
Application.EnableEvents = False '… macro here… Application.EnableEvents = True
Ja makro rodas kļūda, notikumi vairs netiek atkal ieslēgti. Kad tas notiek, brīdinājumu ir maz. Ja jums ir aizdomas, ka jūsu notikumu apstrādātāji netiek izpildīti, dodieties uz Visual Basic redaktoru. Nospiediet Ctrl + g, lai atvērtu tūlītēju rūti. Tiešajā rūtī ierakstiet:
Print Application.EnableEvents
un nospiediet Enter. Ja konstatējat, ka tā ir iestatīta uz False, tiešajā rūtī ierakstiet šādu rindu:
Application.EnableEvents = True
un nospiediet Enter.
Paldies Donnai par lielisko jautājumu. Atbildes skaidrošanas procesā tā bija lieliska iespēja izvērst notikumu apstrādātāju jēdzienu VBA.