Макро догађаја за промену заглавља у програму Екцел - Екцел савети

Преглед садржаја

Донна из Миссоурија је питала:

Да ли имате појма како могу да пронађем пут до кога се документ налази, назначен у заглављу или подножју - или било где у документу. Могу да пронађем име датотеке са & ф, али не могу да схватим како да урадим путању.

Пре свега, схватам да је Мицрософт додао ову функцију у Екцел КСП и нудим им похвале јер је то често постављани проблем. Читачима који су већ надоградили на Оффице КСП неће бити потребне технике из овонедељног савета за решавање овог проблема, али ће и даље бити корисне за решавање других проблема.

Решење овог савета је посебна врста макронаредбе која се назива макро за обраду догађаја. Накратко ћемо преузети контролу над Екцелом сваки пут када ће ускоро штампати нашу радну свеску и додати тренутну путању у заглавље.

Многи корисници Екцел-а бавили су се снимањем једноставних макронаредби. Макронаредбе се чувају у модулу названом Модуле1 или Модуле2 и постају део вашег пројекта. Данас ћу разговарати о макроима за руковање догађајима. Ови макрои се налазе на посебном модулу кода који је повезан са сваким радним листом или радном свеском.

Претходни савети, попут савета Ентер Екцел Тиме Витхоут Цолон, бавили су се догађајем Ворксхеет_Цханге. Данашњи савет захтева да додамо неки код догађају ВоркПресс БефореПринт.

Код додан догађају ће се покретати сваки пут када се тај догађај „активира“. У овом случају, било када да се одштампа Екцел радна свеска, пре почетка штампања, Екцел пребацује контролу на ВБА код и омогућава да се све што наведете у ВБА коду аутоматски догоди пре штампања.

Претпоставићу да сте нови у макроима за руковање догађајима. Прошетаћу кроз тачно како доћи до правог места како бих ушао у овај макро.

Имам радну свеску под називом „Тип055 Сампле.клс“. Када се радна свеска учита у Екцелу, притиснућу алт = "" + Ф11 да бих започео са уређивачем висуал басиц. Подразумевани изглед уређивача је приказан десно. Са леве стране обично видите окно пројекта наслагано на врху окна Својства. Већина десне стране екрана укључује окно кода. Ако у радној свесци немате макронаредбе, окно кода ће бити сиво као што је приказано десно.

На слику сам додао плаве курзивне речи како бих идентификовао три окна - у вашем примеру их нећете видети.

Важно је да у ВБ уређивачу видите окно пројекта. Ако ваш приказ ВБ уређивача не укључује окно пројекта, притисните Цтрл + Р да бисте погледали окно пројекта. Или кликните на икону траке са алаткама приказану испод:

У оквиру пројекта приказат ће се пројекат за сваку отворену Екцел радну свеску и сваки инсталирани додатак. Кликните сиви плус поред назива ваше радне свеске да бисте проширили пројекат за своју радну свеску. Затим кликните сиви плус поред фасцикле Мицрософт Екцел Објецтс да бисте проширили фасциклу објеката. Сада бисте требали видети један унос за сваки радни лист и један унос под називом ТхисВоркбоок.

Кликните десним тастером миша на унос за ТхисВоркбоок и у искачућем менију изаберите Виев Цоде.

Сада ћете вероватно имати велико празно бело бело кодно окно које заузима десну страну екрана. На врху окна са кодом налазе се два падајућа менија са натписима (Опште) и (Изјаве).

  • У левом падајућем менију изаберите Радна свеска.
  • Десни падајући мени је сада попуњен свим програмирљивим догађајима повезаним са радном свеском. Овде постоје догађаји који ће покретати код сваки пут када се радна свеска отвори, активира, деактивира итд. Данас желимо да напишемо код у догађају БефореПринт, па одаберите БефореПринт са десног падајућег менија.

Имајте на уму да сваки пут када изаберете нешто са десног падајућег менија, ВБА едитор уместо вас уписује почетну и завршну линију кода у модул кода. Први пут када промените леви падајући мени у Радна свеска, вероватно сте подразумевано добили почетке потпрограма Радна свеска_Отвори. Ако нећете писати процедуру Воркбоок_Опен, размислите о брисању ове празне процедуре.

Сада, на писању ВБА кода. Постоји неколико корисних променљивих које можете користити.

  • АцтивеВоркбоок.Патх ће вратити путању до радне свеске. Може изгледати као „Ц: Моји документи МрЕкцел“.
  • АцтивеВоркбоок.ФуллНаме ће вратити путању и име датотеке радне свеске. То би могло изгледати као „Ц: Ми Доцументс МрЕкцел Тип055 Сампле.клс“.

Овој променљивој можете доделити једну на следећих 6 позиција:

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

Ево три могућа узорка макронаредби.

Овај макро ће имати путању и име датотеке као десно подножје активног радног листа:

Private Sub Workbook_BeforePrint(Cancel As Boolean) ActiveSheet.PageSetup.RightFooter = ActiveWorkbook.FullName End Sub

Путања ће бити додата овом макронаредбу као лево заглавље Схеет1 и као централно подножје Схеет2:

Private Sub Workbook_BeforePrint(Cancel As Boolean) Worksheets("Sheet1").PageSetup.LeftHeader = ActiveWorkbook.Path Worksheets("Sheet2").PageSetup.CenterFooter = ActiveWorkbook.Path End Sub

Ако приликом штампања користите опцију „Цела радна свеска“, ова верзија ће додати пуно име као централно подножје свим листовима:

Private Sub Workbook_BeforePrint(Cancel As Boolean) For Each Sh In ActiveWorkbook.Worksheets Sh.PageSetup.CenterFooter = ActiveWorkbook.FullName Next Sh End Sub

Follow one of these examples or create one of your own. When you are finished, close the VBA editor with File> Close and Return to Microsoft Excel.

Anytime that you print a worksheet, the code will run and insert the current path into the appropriate header or footer that you indicated in the VBA code.

Some notes and cautions:

  • Novice Excel users will have little idea that this code is in the workbook. When they open the workbook, they may get the security warning that the file contains macros, but there will be no warning when the VBA code whacks whatever they had as the center footer and puts the pathname there. This can lead to heartburn. Imagine 5 years from now someone is using your workbook and the new manager wants the filename to move from the center footer to the right footer. This person may know to manually change the settings in File> PageSetup, but if they do not know the code is there, it will drive them batty as the code continually changes their footers back.

    It is really unlikely that they will be able to find your code module, but just in case they do, you might want to leave a comment in the code module that directs them back to this website for an explanation.

    You also might want to add a comment to cell A1 reminding yourself that there is an event handler set up to change the print headers.

  • There is a setting within VBA which prevents events from running. If your macro suddenly stops working, t is common to find that something within VBA has turned this setting to prevent the events from running. The common scenario is that a programmer starts a macro with:

    Application.EnableEvents = False '… macro here… Application.EnableEvents = True

    Када дође до грешке у макронаредби, догађаји се никада неће поново укључити. Када се ово догоди, мало је упозорења. Ако сумњате да се ваши извршитељи догађаја не извршавају, идите на едитор висуал басиц. Притисните Цтрл + г да бисте отворили тренутно окно. У непосредно окно откуцајте:

    Print Application.EnableEvents

    и притисните Ентер. Ако установите да је ово постављено на Нетачно, укуцајте следећи ред у непосредно окно:

    Application.EnableEvents = True

    и притисните Ентер.

Хвала Донни на сјајном питању. У процесу објашњавања одговора, то је била одлична прилика да проширите концепт руковаоца догађајима у ВБА.

Занимљиви Чланци...