Перевод макроса excel в синтаксис foxpro


Содержание

Иллюстрированный самоучитель по Visual FoxPro 7

Передача данных в Microsoft Excel с помощью OLE

В рассматриваемом примере используем данные из таблицы cntcust для построения диаграммы распределения клиентов по городам в программе Microsoft Excel с помощью OLE-объектов:

  1. В меню File (Файл) выберите команду New (Новый), установите опцию Program (Программа) и нажмите кнопку New file (Новый файл). Откроется новое окно редактирования программ.
  2. Для установления связи с Microsoft Excel, передачи в него данных и построения диаграммы введите следующие команды:
  1. Проверьте синтаксис и запустите программу на выполнение. Результат выполнения программы представлен на рис. 21.13.

Замечание
Наиболее простым способом формирования команд для выполнения действий над OLE-объектами является запись соответствующего макроса на сервере приложении и использование текста этого макроса в Visual FoxPro
.

Рис. 21.13. Создание диаграммы с помощью OLE

Как создать макрос в Excel

Эту статью я хочу посвятить такому огромному разделу MS Excel как макросы, а точнее начнем сначала и рассмотрим как создать макрос в Excel, для чего он нужен и как его использовать в своей работе.

Как вы знаете из собственного опыта, при работе с макросом есть очень много «рутинны», то есть производятся одни и те же операции и действия которые нужны для получения результата, это могут быть заполнение однотипных таблиц ну или бланков, обработка данных, похожие как близнецы еженедельные, ежемесячные отчёты, создание дашбордов и т.д. А вот использование макросов позволит вам производить эти действия в автоматическом режиме, используя возможности Excel на полную катушку, скидая эти рутинные и монотонные операции на мощные плечи Excel. Также причиной использования макросов может быть добавления нужных возможностей, которые еще не реализованы в стандартных функциях Excel (например, вывод суммы прописью, сбор данных на одном листе и прочее).

Если вы никогда не слышали о макросе, то самым точным его определением будет таким, это действия которые запрограммированы на определённую последовательность и записаны в среде программирования на языке Visual Basic for Applications (VBA). Запуск макроса может производиться многократно и это заставит Excel выполнять любую последовательность необходимых нам действий, которые вручную выполнять нам просто не нравится или не хочется. Несмотря на великое множество языков программирования для всего комплекса Microsoft Office стандартом является именно VBA и он работает в любом приложении офисного пакета.

Итак, создать макрос в Excel возможно 2 способами:

Создать макрос в Excel с помощью макрорекордера

Для начала проясним, что собой представляет макрорекордер и при чём тут макрос.

Макрорекордер – это вшитая в Excel небольшая программка, которая интерпретирует любое действие пользователя в кодах языка программирования VBA и записывает в программный модуль команды, которые получились в процессе работы. То есть, если мы при включенном макрорекордере, создадим нужный нам ежедневный отчёт, то макрорекордер всё запишет в своих командах пошагово и как итог создаст макрос, который будет создавать ежедневный отчёт автоматически.

Этот способ очень полезен тем, кто не владеет навыками и знаниями работы в языковой среде VBA. Но такая легкость в исполнении и записи макроса имеет свои минусы, как и плюсы:

  • Записать макрорекордер может только то, что может пощупать, а значит записывать действия он может только в том случае, когда используются кнопки, иконки, команды меню и всё в этом духе, такие варианты как сортировка по цвету для него недоступна;
  • В случае, когда в период записи была допущена ошибка, она также запишется. Но можно кнопкой отмены последнего действия, стереть последнюю команду которую вы неправильно записали на VBA;
  • Запись в макрорекордере проводится только в границах окна MS Excel и в случае, когда вы закроете программу или включите другую, запись будет остановлена и перестанет выполняться.

Для включения макрорекордера на запись необходимо произвести следующие действия:

  • в версии Excel от 2007 и к более новым вам нужно на вкладке «Разработчик» нажать кнопочку «Запись макроса»;
  • в версиях Excel от 2003 и к более старым (они еще очень часто используются) вам нужно в меню «Сервис» выбрать пункт «Макрос» и нажать кнопку «Начать запись».

Следующим шагом в работе с макрорекордером станет настройка его параметров для дальнейшей записи макроса, это можно произвести в окне «Запись макроса», где:

  • поле «Имя макроса» — можете прописать понятное вам имя на любом языке, но должно начинаться с буквы и не содержать в себе знаком препинания и пробелы;
  • поле «Сочетание клавиш» — будет вами использоваться, в дальнейшем, для быстрого старта вашего макроса. В случае, когда вам нужно будет прописать новое сочетание горячих клавиш, то эта возможность будет доступна в меню «Сервис» — «Макрос» — «Макросы» — «Выполнить» или же на вкладке «Разработчик» нажав кнопочку «Макросы»;
  • поле «Сохранить в…» — вы можете задать то место, куда будет сохранен (но не послан) текст макроса, а это 3 варианта:
  • «Эта книга» — макрос будет записан в модуль текущей книги и сможет быть выполнен только в случае, когда данная книга Excel будет открыта;
  • «Новая книга» — макрос будет сохранен в тот шаблон, на основе которого в Excel создается пустая новая книга, а это значит, что макрос станет доступен во всех книгах, которые будут создаваться на этом компьютере с этого момента;
  • «Личная книга макросов» — является специальной книгой макросов Excel, которая называется «Personal.xls» и используется как специальное хранилище-библиотека макросов. При старте макросы из книги «Personal.xls» загружаются в память и могут быть запущены в любой книге в любой момент.
  • поле «Описание» — здесь вы можете описать, что и как должен делать макрос, для чего он создавался и какие функции несет, это чисто информативное поле, что называется на память.
  • После того как вы запустили и записали свой макрос, выполнив все нужные действия, запись можно прекратить командой «Остановить запись» и ваш макрос с помощью макрорекордера будет создан.

    Создать макрос в Excel в редакторе Visual Basic.

    В этом способе мы рассмотрим, как создать макрос в Excel через редактор программ на VBA который, как я говорил выше, встроен в любую версию Excel.

    Запуск редактора программ на VBA происходит по-разному, в зависимости от версии вашей программы Excel:

    • в версиях Excel 2003 и более старше, нам нужно в меню «Сервис», выбрать пункт «Макрос» и нажать «Редактор Visual Basic»;
    • в версиях Excel 2007 и более новее, нам нужно на вкладке «Разработчик» нажать кнопку «Редактор Visual Basic». В случае когда вы не находите эту вкладку вам нужно ее активировать выбрав пункт меню «Файл» — «Параметры» — «Настройка ленты» и в диалоговом окне флажком активируем вкладку «Разработчик».

    В открывшемся окне вы можете лицезреть интерфейс редактора VBA, здесь все написано по-английски и русификаторов не существует, можете не искать, а просто смиритесь и работайте, тем более что это только поначалу непонятно, а потом всё будет привычно.

    Итак, как же, работать в редакторе VBA, где что хранится и как создать макрос в Excel. Вопросы такого характера возникают сразу же, как только вы увидите редактор и сейчас все их будем рассматривать.

    Все наши макросы будут храниться в так называемых программных модулях. В любой из книг любой версии Excel нам доступно создание любых программных модулей в любом количестве и размещать в них все созданные нами макросы. Один модуль в состоянии содержать в себе любое количество нужных вам или созданных макросов. Модули доступны в окне «Project Explorer» и размещаются в верхнем левом углу редактора макросов (так же его можно вызвать комбинацией клавиш CTRL+R).

    Программные модули в редакторе VBA существуют в нескольких видах и используются для разных вариантов и ситуаций:

    • Обычные модули – самый распространённый вариант при создании макросов. Если вам нужно создание именно такого модуля, тогда выберете в пункте меню «Insert», пункт «Module». В открывшемся новом пустом окне нового модуля теперь можно вводить нужные команды на VBA посредством клавиатуры или же попросту копируя их с других источников, например с моего сайта;
    • Модуль «Эта книга» — размещен там же где и предыдущий в том же окне «Project Explorer» и в данный модуль сохраняют макросы, которые срабатывают при определенных действиях, которые имеют место в книге Excel, это могут быть отправка файла на печать, открытие или закрытие документа и т.п.
    • Модуль листа – может быть доступен там, где и предыдущие, а также через контекстное меню ярлыка листа, выбрав пункт «Исходный текст». В этот модуль записывают те макросы, которые нужно исполнять при выполнении событий на листе, такие как пересчёт листа, изменение данных в ячейке, удаление или копирование листа ну и т.д.

    Собственно сам макрос при работе в стандартном модуле выглядит следующим образом:

    Рассмотрим на примере работающего макроса «Расширенный фильтр»:

    • Все макросы в обязательном порядке будут начинаться с оператора Sub, после которого следует имя вашего макроса и список аргументов в скобочках. В случаях, когда аргументы отсутствуют скобки нужно оставить пустыми;
    • В обязательном порядке все макросы заканчиваются оператором End Sub;
    • Данные что находятся между операторами Sub и End Sub, является телом макроса, которое будет работать при запуске макроса. В примере, макрос проверяет диапазон данных и при вводе данных находит их в списке базы данных и накладывает фильтр, выводя указанное по критериям значение.

    Как видите второй способ более труден в использовании и понимании, если у вас отсутствует опыт в программировании вообще или в частности в VBA. Очень сложно понять и разобраться какие команды и как вводятся, какие аргументы он использует для того чтобы макрос начал выполнять свою работу в автоматическом режиме. Но дорогу осилит идущий, как говорили древние мудрецы и поэтому и вам не стоит опускать руки, а следовать заповедям дедушки Ленина…

    Создание кнопки для запуска макросов в панели инструментов

    Как я говорил ранее вы можете вызывать процедуру макроса горячей комбинацией клавиш, но это очень утомительно помнить какую комбинацию кому назначена, поэтому лучше всего будет создание кнопки для запуска макроса. Кнопки создать, возможно, нескольких типов, а именно:

    1. Кнопка в панели инструментов в MS Excel 2003 и более старше. Вам нужно в меню «Сервис» в пункте «Настройки» перейти на доступную вкладку «Команды» и в окне «Категории» выбрать команду «Настраиваемая кнопка» обозначена жёлтым колобком или смайликом, кому как понятней или удобней. Вытащите эту кнопку на свою панель задач и, нажав правую кнопку мыши по кнопке, вызовите ее контекстное меню, в котором вы сможете отредактировать под свои задачи кнопку, указав для нее новую иконку, имя и назначив нужный макрос.
    2. Кнопка в панели вашего быстрого доступа в MS Excel 2007 и более новее. Вам нужно клацнуть правой кнопкой мышки на панели быстрого доступа, которое находится в верхнем левом углу окна MS Excel и в открывшемся контекстном меню выбираете пункт «Настройка панели быстрого доступа». В диалоговом окне настройки вы выбираете категорию «Макросы» и с помощью кнопки «Добавить» вы переносите выбранный со списка макрос в другую половинку окна для дальнейшего закрепления этой команды на вашей панели быстрого доступа.

    Создание графической кнопки на листе Excel

    Данный способ доступен для любой из версий MS Excel и заключается он в том, что мы вынесем кнопку прямо на наш рабочий лист как графический объект. Для этого вам нужно:

    • В MS Excel 2003 и более старше переходите в меню «Вид», выбираете «Панель инструментов» и нажимаете кнопку «Формы».
    • В MS Excel 2007 и более новее вам нужно на вкладке «Разработчик» открыть выпадающее меню «Вставить» и выбрать объект «Кнопка».

    После всего этого вы должны нарисовать кнопку на вашем листе при зажатой левой кнопке мыши. После окончания процесса рисования включится автоматически окошко, где вам нужно будет выбрать тот макрос, который обязан, выполнятся при нажатии на вашей кнопке.

    Как создать пользовательские функции на VBA

    В принципе, создание, так называемых, пользовательских функций не особо отличаются от создания обычного макроса в стандартном программном модуле. Разница между этими понятиями заключается в том что макрос будет выполнять заложенные в нём действия с объектами книги или листа (это формулы, ячейки, диаграммы и т.д), а вот пользовательская функция работает только со значениями которые она получает от нас и являются аргументами они же начальные данные для вычислений.

    К примеру, для создания пользовательской функции налога на добавленную стоимость, он же НДС, нам нужно открыть наш редактор VBA и добавить новый модуль, выбрать в меню «Insert» пункт «Module» и ввести туда текст для нашей функции: Следует заметить, что главное отличие функции от макроса это заголовок Function заменило Sub и в наличии заполненный список аргументов, в нашем примере это Summa. После того как наш код будет введен, он станет доступен в стандартном окне Мастера функций, который находится в меню «Формулы», пункт «Вставить функцию». И выбираем категорию «Определенные пользователем» в которой и будет отображаться наша написанная функция «NDS». После выбора нашей функции можно установить курсор на ячейку с аргументом, в которой будет содержаться та сумма, для которой мы считаем НДС, всё происходит, как и с обычной функцией. А на этом у меня всё! Я очень надеюсь что статья о том как создать макрос в Excel вам была понятной и полезной. Буду очень благодарен за оставленные комментарии, так как это показатель читаемости и вдохновляет на написание новых статей! Делитесь с друзьями прочитанным и ставьте лайк!

    P.S. Если вам очень интересно как работает макрос и где он применяется. С примерами вы сможете ознакомиться у меня на сайте в следующих статьях:

    Не забудьте поблагодарить автора!

    Не уметь переносить бедность постыдно; не уметь избавиться от неё трудом – ещё постыднее. Перикл

    Excel Automation

    For clarity’s sake, the full object hierarchy is used for each command. Using a ‘With oExcel’ will tend to make your code more readable.

    Connecting to Excel

    We’ll assume throughout this page that you named your Excel object oExcel and your workbook oWorkbook.

    Constants for Excel

    Excel Constants documents the constants that Excel’s macros use (xlThis, xlThat etc)
    2007/08/30 Mike Mohr — Excel 2003 Constants MSDN Library
    2007/08/30 Mike Mohr — Excel 2007 (office 12) Constants MSDN Library

    Opening an existing XLS

    Creating a blank workbook:

    Creating a new workbook based on a template:

    You can turn off Excel’s alerts with the Display Alerts property: when set to False, Excel automatically chooses the default answer to any message:

    Saving a workbook as Excel 97/03 from Excel 2007

    Using Save As while automating Excel 2007 creates a 2007 style workbook with an XLS extension (regardless of compatibility settings) unless the file format is specified:

    Controlling visibility

    If the Excel window is not visible it is harder for the user to interact with Excel. This makes it slightly safer for your automation as the user is less likely to issue commands in the middle of your automation.

    Controlling Interaction

    Also, if it is preferred that Excel be seen during automation set these two properties to .F.

    After completing automation, return their value to .T. to allow the user to start interaction
    The Interactive property is the one that controls whether the user is allowed to interact with Excel. When set to .F., the user gets the hourglass icon when they hover over Excel, and mouse clicks on the Excel application are ignored.

    The UserControl property does NOT prevent the user from interacting with Excel. That property indicates whether the Excel application was opened by the user (.T.), or whether the Excel application was opened programmatically via CREATEOBJECT() (.F.). If you used GETOBJECT( , «Excel.Application» ) to get a reference to the Excel application, you can use this property to determine if you are sharing the application with the user or not. One cool thing is that this property is automatically updated if the user closes Excel.
    See UserControl Property [Excel 2007 Developer Reference]
    Bottom line: even though you CAN change UserControl , I recommend that you NOT do that.

    Storing data to a cell

    Set the font color and style

    Set Excel Cell to Text Format

    If your app exports user-entered text data from a field into an Excel cell, you always convert the cell’s numberformat to text prior to setting the value. I forgot this in an app once, and a user entered a long string of equal signs into a notes field in VFP, which generated a COM error when setting the cell’s value (Excel doesn’t like «=======» as a value, thinks it’s an incorrectly written formula)

    Getting data into Excel

    Assuming your table is selected. First the easy way. You can make a new file in an old Excel format which all version should be able to read.

    Or if you have a pre-formatted template (.XLS or .XLT) that you want to paste into. Note that this method will not handle Memo fields.

    Selecting a range using the Cells collection

    Resize all columns

    Insert two rows before the first row

    Closing Excel

    You’ll still need to handle closing questions like saving changes and file format changes. And you’ll need to release your oExcel object

    I find that an instance of Excel remains after quiting. To Clear issue:

    Closing Excel with all changes discarded — no question asked

    Iterate through Excel’s Worksheets

    Finding text in Excel

    Searching for «Tax»

    Range(«A1:H250») specifies that we’re searching columns A to H (inclusive) and rows 1-250.
    oExcel.ActiveCell is where to start searching, and -4123 is the constant for xlFormulas. I theorize that this means ‘if there is a formula, search its code rather than its output.’ 1 is the constant for xlWhole, meaning match against all the text in the cell. You could swap in 2 to get partial matches.
    — Tom Cerul

    You have to be careful when specifying the extra parameters to Find as they persist between searches, as specified in the Excel documentation:

    The settings for LookIn, LookAt, SearchOrder, and MatchByte are saved each time you use this method. If you don’t specify values for these arguments the next time you call the method, the saved values are used. Setting these arguments changes the settings in the Find dialog box, and changing the settings in the Find dialog box changes the saved values that are used if you omit the arguments. To avoid problems, set these arguments explicitly each time you use this method.

    Developing new code

    Sometimes the easiest way to figure out how to code an automation routine is this: open Excel, tell it to record a macro, do the task you want to automate. Stop the recording and look at the code that it generated.

    Putting it all together, a runnable example

    First, COPY TO all fields (or some) in Excel Format

    — Alex Feldstein

    • Sometimes the Last Cell is not up-to-date after deleting a row in Excel,
    • Calling Active Sheet.UsedRange after deleting a row will keep Last Cell
    • up-to-date.

    — David Fung

    Having worked with excel a lot a few notes:
    Office applications are not as much backward compatible as VFP is. For that reason I suggest not to use VFP’s direct Excel related commands like:

    copy to myExcel type xls && or xl5,xl8.
    import . type xl8

    etc. These commands are version dependant directly within VFP themselve. You immediately lose data with these commands.
    -The number of rows you can copy is limited for example (VFP5 copied 16384 max while VFP9 copies 65536 max, but as new Excel versions come into market those limits are not sufficient anymore).
    -Memo fields are immediately dropped as with any ‘copy to’ command

    Data To Clip() — Do not use Data To Clip() for Excel transfers.
    -You lose Memo fields but worse you get a transform() version of memo fields.
    -You’re limited on rowcount that you can transfer with this method. There is no exact number and sounds like related with Excel version + available memory. It’s possible you end with much fewer rows than you could transfer using ‘copy to’. Likely you’d get unpredictable exceptions.

    Instead you can use:

    Copy to myExcel.xls type fox2x && actually creating a dBaseIII compatible file. Excel recognizes internally
    Copy to myExcel.csv type csv && CSV files are natively recognized

    Both fail to transfer memo fields and CSV might have problems with datatypes converted correctly (mostly with date fields) but in general are better than Data To Clip() and ‘copy . type xls’.

    Similar to Data To Clip() you can copy to a tab delimited file, read it into clipboard with FileToStr() and pasteSpecial() in Excel. Works better than Data To Clip() but it again falls short of transferring memo fields.

    Excel (especially newer versions) also recognizes XML and HTM ( table tags ).

    My best preferance is to transfer data using ADO instead. Passing with ADO uses Excel’s own VBA commands to ‘paste’ the data. Here is a sample sending data to Excel and putting data starting at A10:

    Note that .Visible = .T. is very early in code just after adding the workbook. Having that «later after you’re done with populating cells males things faster» is a myth. Surprisingly having it early in code makes your code faster in many cases.

    My suggestions:
    Working with Excel means you’re doing COM calls using VBA which by nature is slow. Therefore, whenever possible, do things at VFP side and call Excel automation commands as few as you can. ie:

    Instead of this:

    Above code also shows another alternative to transferring data to Excel via array instead of pasting.

    Getting Data from Excel

    Using automation, you can write loops which go through a worksheet cell-by-cell reading the data. Although this technique is relatively simple, it appears to be universally acknowledged as being very slow.
    Another technique which is promoted in different places is to use ADO or ODBC/OLEDB, which is quite fast, but a bit more complicated.
    However, it was Cetin’s example above, which uses an array to populate a worksheet, which helped me to discover a third option. It turns out that it is very simple, and also very fast, to use automation to read data from Excel into an array.

    Using what I consider a fairly average modern PC (dual core, 2GB of RAM), I used the above code to read an 8-column, 5000-row worksheet and populate a cursor with the data in under 0.15 seconds. Obviously, your mileage may vary, but you should get more than acceptable results in most situations.

    Note that this technique allows you to populate memo fields in a cursor. If a column contains cells with more than 254 characters of text in them, the entire text is copied to the array, and from there can dumped directly into a memo field using either of the FROM ARRAY techniques above. That’s something you can’t do with APPEND FROM .. XLS|XL5|XL8 .

    Note that a data cell in Excel must be compatible with the data type of the VFP cursor field in which you wish to store that data. In most cases this isn’t a problem, but one notable exception is if you wish to a copy a column of numbers from Excel into a Character field in VFP. Any cells in Excel which are stored as numbers will be ignored when you try to copy them into a VFP character field, leaving the VFP field empty. (Numbers stored as text in Excel are normally differentiated by a little green triangle in the upper left corner of the cell.) You could manually edit the Excel spreadsheet to correct this problem, but a far simpler solution is to modify your VFP code to transform the data read from Excel before copying it into the VFP cursor. The sample code above has been updated to include this solution.

    If you are using VFP 8 or earlier, arrays are limited to 65,000 elements, so you will get an error if you attempt to read more that 65,000 cells from Excel into an array. However, VFP 9 raised the limit on arrays to 2GB, which should be more than enough for any import.

    Notes/Caveats on the above excel->array->table method:
    #1. Call UsedRange before determining the last cell. It’s not core to the method, but it helps.
    #2. Whilst Memo fields do transfer to the array, they are not transferred to the table with APPEND FROM ARRAY . This can be rectified with a REPLACE afterwards.
    #3. I have had better results using the Value2 property of the range for the transfer to the array. The Value property includes currency and date localization options and rounding, whilst the Value2 property is just the underlying value.

    Brian Marston
    #4. Even with VFP 9 sp2 I kept running into an ole error code 0x8007000e whenever my spreadsheet had more than 65000 rows. I ended up having to iterate in chunks of less than 65000 rows into the array. Do like the array approach.

    Laurin Eck Contributors: Alex Feldstein Tom Cerul Stuart Dunkeld David Fung Cetin Basoz Mike Potjer
    & late comer and follower to the above giants, Laurin Eck
    #DEFINE xlLastCell 11
    CREATE CURSOR strucs (colname c(30), coltype c(20))

    COPY TO excel Sheet in foxpro

    Is their any command in Foxpro that convert the DBF into a particular excel sheet. I have three DBF(dbf_1, dbf_2, dbf_3). My current program convert the file using copy to «filename.xls» type fox2x and then I will manually copy the consolidate all the sheet into one excel. For me, this method I using is alright but what if their are 20 or more dbf that I will consolidate. Is their any command in foxpro that convert the dbf’s into one excel file. I already use the foxpro Automation but it is to slow.

    3 Answers 3

    Also «copy to . type fox2x». although better than many other type selections (such as csv and xls) should not be chosen when there are better ways.

    You are saying automation is slow, but don’t know if you are really finding automation slow, or if you have tried it in the ways that you shouldn’t use to transfer data to Excel. The sample below, use one of the variations of my «vfp2excel» function and automation. It transfers sample Customer, Employee, Orders, OrdItems and Products data in 2.5 seconds on my machine. If you really meant it as slow then no dice, otherwise here is the sample:

    This is what I was looking for :-) I was trying with my knowledge of Excel Automation programming in Visual FoxPro but always got errors. My task was to create «n» Sheets from one big cursors which I want to parse regarding customer selection of attribute name from cursor to get also «n» Sheets. This sample is for 3 cursors and 3 Sheets and it is generic. But I need this for «n» cursors and one attribute which customer select to distinct and get «n» Sheets in one Excel file. So now I have dynamic procedure. I customized this code and solve my problem which I am trying to end for about 4 days. So again thank you for this code and off course I will not modify VFP2Excel procedure and wrote somewhere else my name. Thanks for help !

    There is no native VFP function to do this, BUT, there is an awesome open source project which has a class that will make this very easy:

    VFPx Workbook Xlsx — See it here on Github: XLSX Workbook for FoxPro

    It has 3 magical functions that will do exactly what you asked for:

    • CreateWorkbook()
    • AddSheet()
    • SaveTableToWorkbook()

    (Repeat commands 2 and 3 above for each DBF/Sheet you want to create)

    It is well documented with a 54-page PDF and code sample that explains everything you’ll need to know.

    Автоматизация задач с помощью средства записи макросов — Excel

    Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).

    Для автоматизации повторяющихся задач в Microsoft Excel можно быстро записать макрос. Предположим, у вас есть даты в различном формате и вы хотите применить ко всем из них один формат. Это можно сделать с помощью макроса. Вы можете записать макрос, который применяет нужный формат, а затем запускать его при необходимости.

    При записи макроса записываются все действия, описанные в Visual Basic для приложений (VBA) коде. Эти действия могут включать ввод текста или чисел, нажатие ячеек или команд на ленте или в меню, форматирование ячеек, строк или столбцов, а также импорт данных из внешнего источника, например Microsoft Access. Приложение Visual Basic (VBA) — это подмножество мощного языка программирования Visual Basic, которое входит в большинство приложений Office. Несмотря на то, что VBA обеспечивает возможность автоматизации процессов между приложениями Office, вам не нужно знать код VBA или программное программирование, если это нужно.

    Важно знать, что при записи макроса регистрируются почти все ваши действия. Поэтому если вы допустите ошибку, например нажмете не ту кнопку, средство записи макросов зарегистрирует это действие. В таком случае можно снова записать всю последовательность или изменить код VBA. Поэтому перед записью процесса следует хорошо проработать его. Чем точнее вы запишете последовательность, тем более эффективно будет работать макрос.

    Макросы и средства VBA находятся на вкладке Разработчик, которая по умолчанию скрыта, поэтому сначала нужно включить ее. Дополнительные сведения см. в статье Отображение вкладки «Разработчик».

    Запись макроса

    Перед записью макросов полезно знать следующее:

    Макрос, записанный для работы с диапазоном Excel, будет выполняться только для ячеек этого диапазона. Поэтому если вы добавите в диапазон новую строку, макрос не будет применяться к ней.

    Если вам нужно записать длинную последовательность задач, советуем вместо этого использовать несколько более мелких макросов.

    В макросе могут содержаться и задачи, не относящиеся к Excel. Процесс макроса может охватывать прочие приложения Office и другие программы, которые поддерживают Visual Basic для приложений (VBA). Например, вы можете записать макрос, который сначала обновляет таблицу в Excel, а затем открывает Outlook для ее отправки по электронной почте.

    Чтобы записать макрос, следуйте инструкциям ниже.

    На вкладке Разработчик в группе Код нажмите кнопку Запись макроса.

    В поле Имя макроса введите название макроса. Сделайте имя понятным, чтобы можно было быстро найти нужный макрос.

    Примечание: Первым символом имени макроса должна быть буква. Последующие символы могут быть буквами, цифрами или знаками подчеркивания. В имени макроса не должно содержаться пробелов; в качестве разделителей слов следует использовать знаки подчеркивания. Если используется имя макроса, являющееся ссылкой на ячейку, может появиться сообщение об ошибке, указывающее на недопустимое имя макроса..

    Чтобы назначить сочетание клавиш для запуска макроса, в поле Сочетание клавиш введите любую строчную или прописную букву. Рекомендуется использовать сочетания клавиш с CTRL+ SHIFT, так как они будут заменять собой совпадающие с ними стандартные сочетания клавиш в Excel, пока открыта книга, содержащая макрос. Например, если назначить сочетание клавиш CTRL+Z (Отменить), вы не сможете использовать его для функции «Отменить» в данном экземпляре Excel.

    В списке Сохранить в выберите книгу, в которой вы хотите сохранить макрос.

    Как правило, макрос сохраняется в указанном расположении книги , но если вы хотите, чтобы макрос был доступен при использовании Excel, выберите пункт Личная книга макросов . Если выбрать команду Личная книга макросов, Excel создаст скрытую личную книгу макросов (личное. xlsb), если она еще не существует, и сохранит макрос в этой книге.

    В поле Описание при необходимости введите краткое описание действий макроса.

    Хотя поле «Описание» является необязательным, рекомендуется его заполнить. Кроме того, желательно ввести понятное описание, которое будет полезно вам и всем, кто запускает макрос. Если у вас много макросов, описания помогут быстро определить, для чего они нужны.

    Чтобы начать запись макроса, нажмите кнопку ОК.

    Выполните действия, которые нужно записать.


    На вкладке разработчик в группе код нажмите кнопку остановить запись .

    Работа с макросами, записанными в Excel

    На вкладке Разработчик щелкните Макросы, чтобы просмотреть макросы, связанные с книгой. Кроме того, можно нажать клавиши ALT+F8. При этом откроется диалоговое окно Макрос.

    Внимание: Макросы нельзя отменить. Прежде чем впервые запускать записанный макрос, сохраните книгу или создайте ее копию, чтобы предотвратить внесение нежелательных изменений. Если вас не устраивают результаты выполнения макроса, вы можете закрыть книгу, не сохраняя ее.

    Ниже приведены дополнительные сведения о работе с макросами в Excel.

    Сведения о параметрах безопасности макросов и их значении.

    Макросы можно запускать различными способами, например с помощью сочетания клавиш, графического объекта, панели быстрого доступа, кнопки или даже при открытии книги.

    С помощью редактора Visual Basic можно изменять макросы, присоединенные к книге.

    Если книга содержит макрос VBA, который нужно использовать где-либо еще, этот модуль можно скопировать в другую книгу с помощью редактора Microsoft Visual Basic.

    Назначение макроса объекту, фигуре или графическому элементу

    На листе щелкните правой кнопкой мыши объект, рисунок, фигуру или элемент, которому нужно назначить существующий макрос, а затем выберите команду назначить макрос.

    В поле Назначить макроса выберите макрос, который вы хотите назначить.

    Вы можете назначить макрос значку и добавить его на панель быстрого доступа или ленту.

    Вы можете назначать макросы формам и элементам ActiveX на листе.

    Узнайте, как включать и отключать макросы в файлах Office.

    Открытие редактора Visual Basic

    Нажмите клавиши ALT+F11.

    Узнайте, как найти справку по элементам Visual Basic.

    Работа с записанным кодом в редакторе Visual Basic (VBE)

    С помощью редактора Visual Basic (VBE) вы можете добавлять в записанный код собственные переменные, управляющие структуры и другие элементы, которые не поддерживает средство записи макросов. Так как средство записи макросов фиксирует почти каждый шаг, выполняемый во время записи, может также потребоваться удалить ненужный код. Просмотр записанного кода — отличный способ научиться программировать на VBA или отточить свои навыки.

    Пример изменения записанного кода можно найти в статье Начало работы с VBA в Excel.

    Запись макроса

    Перед записью макросов полезно знать следующее:

    Макрос, записанный для работы с диапазоном Excel, будет выполняться только для ячеек этого диапазона. Поэтому если вы добавите в диапазон новую строку, макрос не будет применяться к ней.

    Если вам нужно записать длинную последовательность задач, советуем вместо этого использовать несколько более мелких макросов.

    В макросе могут содержаться и задачи, не относящиеся к Excel. Процесс макроса может охватывать прочие приложения Office и другие программы, которые поддерживают Visual Basic для приложений (VBA). Например, вы можете записать макрос, который сначала обновляет таблицу в Excel, а затем открывает Outlook для ее отправки по электронной почте.

    Макросы и средства VBA находятся на вкладке Разработчик, которая по умолчанию скрыта, поэтому сначала нужно включить ее.

    Перейдите в раздел настройки _гт_ Excel . панель инструментов _Гт_ ленты _амп_.

    В категории Настроить ленту в списке Основные вкладки установите флажок Разработчик, а затем нажмите кнопку Сохранить.

    Чтобы записать макрос, следуйте инструкциям ниже.

    На вкладке Разработчик нажмите кнопку Запись макроса.

    В поле Имя макроса введите название макроса. Сделайте имя понятным, чтобы можно было быстро найти нужный макрос.

    Примечание: Первым символом имени макроса должна быть буква. Последующие символы могут быть буквами, цифрами или знаками подчеркивания. В имени макроса не должно содержаться пробелов; в качестве разделителей слов следует использовать знаки подчеркивания. Если используется имя макроса, являющееся ссылкой на ячейку, может появиться сообщение об ошибке, указывающее на недопустимое имя макроса..

    В списке Сохранить в выберите книгу, в которой вы хотите сохранить макрос.

    Как правило, макрос сохраняется в указанном расположении книги , но если вы хотите, чтобы макрос был доступен при использовании Excel, выберите пункт Личная книга макросов. Если выбрать команду Личная книга макросов, в Excel будет создана скрытая личная книга макросов (личное. XLSB), если он еще не существует, и сохранение макроса в этой книге. Книги в этой папке открываются автоматически при запуске Excel, а код, хранящийся в личной книге макросов, будет указан в диалоговом окне Макрос, которое описано в следующем разделе.

    Чтобы назначить сочетание клавиш для запуска макроса, в поле Сочетание клавиш введите любую строчную или прописную букву. Рекомендуется использовать сочетания клавиш, которые еще не назначены другим командам, так как они будут переопределять совпадающие с ними стандартные сочетания клавиш в Excel, пока открыта книга, содержащая макрос.

    В поле Описание при необходимости введите краткое описание действий макроса.

    Хотя поле «Описание» является необязательным, рекомендуется его заполнить. Полезно ввести понятное описание с любой полезной информацией, которая может быть полезна Вам или другим пользователям, которые будут запускать макрос. Если у вас много макросов, описания помогут быстро определить, для чего они нужны.

    Чтобы начать запись макроса, нажмите кнопку ОК.

    Выполните действия, которые нужно записать.

    На вкладке Разработчик щелкните Остановить запись.

    Работа с макросами, записанными в Excel

    На вкладке Разработчик щелкните Макросы, чтобы просмотреть макросы, связанные с книгой. При этом откроется диалоговое окно Макрос.

    Примечание: Макросы нельзя отменить. Прежде чем впервые запускать записанный макрос, сохраните книгу или создайте ее копию, чтобы предотвратить внесение нежелательных изменений. Если вас не устраивают результаты выполнения макроса, вы можете закрыть книгу, не сохраняя ее.

    Ниже приведены дополнительные сведения о работе с макросами в Excel.

    Узнайте, как включать и отключать макросы в Excel для Mac.

    Чтобы сэкономить время на выполнении часто повторяющихся задач, можно записать соответствующую последовательность действий в виде макроса. Узнайте, как создавать и выполнять макросы.

    Если книга содержит макрос VBA, который нужно использовать где-либо еще, этот модуль можно скопировать в другую книгу с помощью редактора Microsoft Visual Basic.

    Назначение макроса объекту, фигуре или графическому элементу

    На листе щелкните правой кнопкой мыши объект, рисунок, фигуру или элемент, которому нужно назначить существующий макрос, а затем выберите команду назначить макрос.

    В поле Назначить макроса выберите макрос, который вы хотите назначить.

    Вы можете назначить макрос значку и добавить его на панель быстрого доступа или ленту.

    Вы можете назначать макросы формам и элементам ActiveX на листе.

    Открытие редактора Visual Basic

    На вкладке Разработчик щелкните Visual Basic или выберите Сервис > Макрос > Редактор Visual Basic.

    Узнайте, как найти справку по элементам Visual Basic.

    Дополнительные сведения

    Вы всегда можете задать вопрос специалисту Excel Tech Community, попросить помощи в сообществе Answers community, а также предложить новую функцию или улучшение на веб-сайте Excel User Voice.

    VBA Excel: примеры программ. Макросы в Excel

    Немногие знают, что первая версия популярного продукта Microsoft Excel появилась в 1985 году. С тех пор он пережил несколько модификаций и востребован у миллионов пользователей по всему миру. При этом многие работают лишь с малой толикой возможностей этого табличного процессора и даже не догадываются, как им могло бы облегчить жизнь умение программирования в Excel.

    Что такое VBA

    Программирование в Excel осуществляется посредством языка программирования Visual Basic for Application, который изначально встроен в самый известный табличный процессор от Microsoft.

    К его достоинствам специалисты относят сравнительную легкость освоения. Как показывает практика, азами VBA могут овладеть даже пользователи, которые не имеют навыков профессионального программирования. К особенностям VBA относится выполнение скрипта в среде офисных приложений.

    Недостатком программы являются проблемы, связанные с совместимостью различных версий. Они обусловлены тем, что код программы VBA обращается к функциональным возможностям, которые присутствуют в новой версии продукта, но отсутствуют в старой. Также к минусам относят и чрезмерно высокую открытость кода для изменения посторонним лицом. Тем не менее Microsoft Office, а также IBM Lotus Symphony позволяют пользователю применять шифрование начального кода и установку пароля для его просмотра.

    Объекты, коллекции, свойства и методы

    Именно с этими понятиями нужно разобраться тем, кто собирается работать в среде VBA. Прежде всего необходимо понять, что такое объект. В Excel в этом качестве выступают лист, книга, ячейка и диапазон. Данные объекты обладают специальной иерархией, т.е. подчиняются друг другу.

    Главным из них является Application, соответствующий самой программе Excel. Затем следуют Workbooks, Worksheets, а также Range. Например, для обращения к ячейке A1 на конкретном листе следует указать путь с учетом иерархии.

    Что касается понятия «коллекция», то это группа объектов того же класса, которая в записи имеет вид ChartObjects. Ее отдельные элементы также являются объектами.

    Следующее понятие — свойства. Они являются необходимой характеристикой любого объекта. Например, для Range — это Value или Formula.

    Методы — это команды, показывающие, что требуется сделать. При написании кода в VBA их необходимо отделять от объекта точкой. Например, как будет показано в дальнейшем, очень часто при программировании в «Эксель» используют команду Cells(1,1).Select. Она означает, что необходимо выбрать ячейку с координатами (1,1) т.е. A1.

    Вместе с ней нередко используется Selection.ClearContents. Ее выполнение означает очистку содержимого выбранной ячейки.

    Как начать

    Прежде всего требуется создать файл и сохранить его, присвоив имя и выбрав тип «Книга Excel с поддержкой макросов».

    Затем необходимо перейти в приложение VB, для чего достаточно воспользоваться комбинацией клавиш «Alt» и «F11». Далее:

    • в строке меню, расположенном в верхней части окна, нажимают на иконку рядом с иконкой Excel;
    • выбирают команду Mudule;
    • сохраняют, нажав на иконку с изображением floppy disk;
    • пишут, скажем так, набросок кода.

    Он выглядит следующим образом:

    Обратите внимание, что строка «’Наш код» будет выделена другим цветом (зеленым). Причина в апострофе, поставленном в начале строки, который обозначает, что далее следует комментарий.

    Теперь вы можете написать любой код и создать для себя новый инструмент в VBA Excel (примеры программ см. далее). Конечно, тем, кто знаком с азами Visual Basic, будет намного проще. Однако даже те, кто их не имеет, при желании смогут освоиться достаточно быстро.

    Макросы в Excel

    За таким названием скрываются программы, написанные на языке Visual Basic for Application. Таким образом, программирование в Excel — это создание макросов с нужным кодом. Благодаря этой возможности табличный процессор Microsoft саморазвивается, подстраиваясь под требования конкретного пользователя. Разобравшись с тем, как создавать модули для написания макросов, можно приступать к рассмотрению конкретных примеров программ VBA Excel. Лучше всего начать с самых элементарных кодов.

    Пример 1

    Задача: написать программу, которая будет копировать значение содержимое одной ячейки и затем записывать в другую.

    • открывают вкладку «Вид»;
    • переходят на пиктограмму «Макросы»;
    • жмут на «Запись макроса»;
    • заполняют открывшуюся форму.

    Для простоты в поле «Имя макроса» оставляют «Макрос1», а в поле «Сочетание клавиш» вставляют, например, hh (это значит, что запустить программку можно будет блиц-командой «Ctrl+h»). Нажимают Enter.

    Теперь, когда уже запущена запись макроса, производят копирование содержимого какой-либо ячейки в другую. Возвращаются на исходную пиктограмму. Нажимают на «Запись макроса». Это действие означает завершение программки.

    • вновь переходят на строку «Макросы»;
    • в списке выбирают «Макрос 1»;
    • нажимают «Выполнить» (то же действие запускается начатием сочетания клавиш «Ctrl+hh»).

    В результате происходит действие, которое было осуществлено в процессе записи макроса.

    Имеет смысл увидеть, как выглядит код. Для этого вновь переходят на строку «Макросы» и нажимают «Изменить» или «Войти». В результате оказываются в среде VBA. Собственно, сам код макроса находится между строками Sub Макрос1() и End Sub.

    Если копирование было выполнено, например, из ячейки А1 в ячейку C1, то одна из строк кода будет выглядеть, как Range(“C1”).Select. В переводе это выглядит, как «Диапазон(“C1”).Выделить», иными словами осуществляет переход в VBA Excel, в ячейку С1.

    Активную часть кода завершает команда ActiveSheet.Paste. Она означает запись содержания выделенной ячейки (в данном случае А1) в выделенную ячейку С1.

    Пример 2

    Циклы VBA помогают создавать различные макросы в Excel.

    Циклы VBA помогают создавать различные макросы. Предположим, что имеется функция y=x + x 2 + 3x 3 – cos(x). Требуется создать макрос для получения ее графика. Сделать это можно только, используя циклы VBA.

    За начальное и конечное значение аргумента функции берут x1=0 и x2=10. Кроме того, необходимо ввести константу — значение для шага изменения аргумента и начальное значение для счетчика.

    Все примеры макросов VBA Excel создаются по той же процедуре, которая представлена выше. В данном конкретном случае код выглядит, как:

    Do While x1 0 Then Cells(1, 1).Value = 1

    Перевод макроса excel в синтаксис foxpro

    Давайте посмотрим, как можно работать с Excel в VFP через OLE. Задача эта бывает весьма актуальна, когда данные нужно представить в доступном массам виде :-)

    Вот текст программки, которая просто запускает Excel, создает новую Книгу и сохраняет ее на диске:

    Как видите, все просто. Если же после запуска Excel еще добавить строку:

    Можно глазами созерцать процесс:

    Более подробно на этом остановлюсь в другой раз.

    Примеры макросов Excel

    Следующие простые примеры макросов Excel иллюстрируют некоторые возможности и приёмы, описанные в самоучителе по Excel VBA.

    Макрос Excel: пример 1

    Первоначально эта процедура Sub была приведена, как пример использования комментариев в коде VBA. Однако, здесь также можно увидеть, как объявляются переменные, как работают ссылки на ячейки Excel, использование цикла For, условного оператора If и вывод на экран окна сообщения.

    Макрос Excel: пример 2

    Следующая процедура Sub – пример использования цикла Do While. Здесь также можно увидеть, как объявляются переменные, работу со ссылками на ячейки Excel и применение условного оператора If.

    Макрос Excel: пример 3

    Эта процедура Sub просматривает ячейки столбца A активного листа до тех пор, пока не встретит пустую ячейку. Значения записываются в массив. Этот простой макрос Excel показывает работу с динамическими массивами, а также использование цикла Do Until. В данном примере мы не будет совершать какие-либо действия с массивом, хотя в реальной практике программирования после того, как данные записаны в массив, над ними такие действия, как правило, совершаются.

    Макрос Excel: пример 4

    В этом примере процедура Sub считывает значения из столбца A рабочего листа Лист2 и выполняет с ними арифметические операции. Результаты заносятся в ячейки столбца A на активном рабочем листе. В этом макросе продемонстрировано использование объектов Excel. В частности, производится обращение процедурой Sub к объекту Columns, и показано, как доступ к этому объекту осуществляется через объект Worksheet. Показано так же, что при обращении к ячейке или диапазону ячеек на активном листе, имя этого листа при записи ссылки указывать не обязательно.

    Макрос Excel: пример 5

    Данный макрос показывает пример кода VBA, отслеживающего событие Excel. Событие, к которому привязан макрос, происходит каждый раз при выделении ячейки или диапазона ячеек на рабочем листе. В нашем случае при выделении ячейки B1, на экран выводится окно с сообщением.

    Макрос Excel: пример 6

    На примере этой процедуры показано использование операторов On Error и Resume для обработки ошибок. В данном коде также показан пример открытия и чтения данных из файла.

    Перевод макроса excel в синтаксис foxpro

    Отличительной чертой бизнес-продуктов Microsoft является обязательное присутствие макроязыка (в MS Office 97 это Visual Basic for Applications — VBA) и поддержка технологии OLE. Это означает, что если Вам недостаточно стандартно предлагаемых возможностей программы, то Вы можете самостоятельно их расширить с помощью макросов, а с помощью OLE — использовать все это в других приложениях.

    Чтобы использовать макросы VBA, понадобятся две панели — «Visual Basic» и «Элементы управления». Включите их через меню «Вид/Панели инструментов» и перетащите мышью в удобное место.

    Продолжая тему предыдущей статьи «Использование Excel 97 — не сядьте на мель» в прошлом выпуске «КГ», поставим следующую задачу: необходимо автоматизировать копирование результатов расчетов из различных листов книги в дополнительный лист и сохранить его в другом формате.

    «В лоб» задача решается примитивно просто: открываем нужную книгу, на панели «Visual Basic» нажимаем кнопку «Записать макрос» (либо меню «Сервис/Макрос/Начать запись»), в диалоговом окне записываем понятное имя нового макроса (вроде «МойЛичныйМакрос») и жмем. Теперь Excel готов запомнить все последующие действия. Переходим в нужный лист, выделяем блок ячеек с результатами, нажимаем «Копировать». Переходим в дополнительный лист, указываем начальную ячейку, нажимаем «Вставить». Таким образом, повторяя сей процесс многократно, заносим требуемые данные в дополнительный лист, переходим в него и выбираем пункт меню «Файл/Сохранить как». Указываем тип файла «*.DBF» и нужное имя и жмем . Теперь можно нажать кнопку «Остановить запись» (либо меню «Сервис/ Макрос/ Остановить запись»).

    Чтобы вызвать полученный макрос, выбираем пункт меню «Сервис/ Макрос/ Макросы», в списке выбираем записанный макрос (» МойЛичныйМакрос»), нажимаем «Выполнить» и . естественно, наблюдаем свои действия в ускоренном режиме. Если таблицы имеют значительные размеры, то, конечно, приходится их прокручивать в разные стороны и многократно переключаться между листами, перенося несмежные блоки ячеек. Тогда выполнение этих действий макросом создает неприятное мельтешение таблиц и катавасию на экране. Одна дама даже испугалась, увидав такое на своем компьютере, поэтому рекомендуется либо проводить предварительную психологическую подготовку малоопытным пользователям, либо корректировать макросы вручную.

    Вот и подошли к самому интересному.Выбираем пункт меню «Сервис/ Макрос/ Макросы», в списке выбираем записанный макрос (» МойЛичныйМакрос»), нажимаем «Изменить», и в запущенном редакторе Visual Basic откроется окно с исходным текстом макроса в виде подпрограммы на языке Basic. Только кроме операторов Basic’а используются вызовы методов объектов Office.

    Для несведущих — имена объекта и его метода или свойства при написании разделяются точкой. Метод объекта — функция, принадлежащая только этому объекту и обрабатывающая только его свойства. Свойства объекта — переменная внутри объекта. Объекты могут быть вложенными, т. е. находиться внутри других объектов, тогда их имена при написании также разделяются запятой. Когда внутри метода глобального объекта используем его же вложенные объекты (так происходит в большинстве случаев), тогда имя этого глобального объекта опускаем, т. к. оно подразумевается по умолчанию.

    Сразу можете закомментировать (поставить в начале строки апостроф) команды типа ActiveWindow.SmallScroll Down:=6 и ActiveWindow.LargeScroll ToRight:=-1, т.к. они управляют только прокруткой содержимого окна.

    Перенос данных производят следующие команды:
    Range(«A3:C12»).Select ‘Выделение блока ячеек, начиная с A3 и заканчивая C12
    Selection.Copy ‘Копирование выделенной области
    Sheets(«Лист2»).Select ‘Переключение на лист Лист2
    Range(«C2»).Select ‘Выделить ячейку С2
    ActiveSheet.Paste ‘Вставить, начиная с выделенной ячейки
    Когда такие операции повторяются несколько раз, содержимое окна многократно перерисовывается, это и создает неприятный эффект. Если не получается перенести данные за один прием, тогда можно попробовать переписать макрос вручную.
    Закомментируйте строки, сгенерированные Excel, и введите свои, примерно следующего содержания:
    ‘Однократное переключение на дополнительный лист
    Sheets(«Лист2»).Select
    ‘Присваивание значения одной ячейке
    Range(«C2»).Value= Range(«‘Лист1’!A3»).Value
    ‘Присваивание одного значения группе ячеек
    Range(«C3:C7»).Value= Range(«‘Лист1’!B7»).Value
    Если одинаковых операций для смежных ячеек слишком много, то их можно объединить в циклы, например:
    From=2 ‘Начальный номер строки источника данных
    Into=11 ‘Конечный номер строки источника
    xFrom=7 ‘Начальный номер строки назначения данных
    xInto= xFrom + Into — From ‘Конечный номер области назначения
    For i=1 to XX
    Ranger= Str(i)
    Ranger= Right(Ranger, Len(Ranger)-1)
    j= i — From + xFrom
    xRanger= Str(j)
    xRanger= Right(xRanger, Len(xRanger)-1)
    Range(«C»+ xRanger).Value= Range(«‘Лист1’!A»+ Ranger).Value
    Next i

    Присваивать ячейкам можно не только значения, но и формулы в виде строк. Например, Range(«A2»).FormulaR1C1 = «=A1+1». Значением ячейки будет результат вычисления этой формулы. Следует отметить, что при сохранении таблицы в формате какой-нибудь БД будут сохранены именно значения.

    Еще один важный положительный момент — вы можете указать способ доступа при сохранении таблицы в параметре AccessMode. Дело в том, что Excel использует по умолчанию эксклюзивный (однопользовательский) режим доступа к данным. Но если нужно использовать данные в разделяемом (многопользовательском) режиме, вы должны вручную дописать значение параметра. Например, следующая команда сохранит лист в формате *.DBF в режиме разделяемого доступа:
    ActiveWorkbook.SaveAs FileName:= _
    «C:\Мои документы\Makovchik\Example.dbf», FileFormat:=xlDBF4, _
    CreateBackup:=False AccessMode:=xlShared

    Дополнительно, для удобства, создадим простейшую кнопку вызова макроса. На панели «Элементы управления» нажимаем кнопку «Кнопка», переводим указатель мыши в рабочую область таблицы, нажимаем левую кнопку мыши и, удерживая ее, очерчиваем размеры кнопки, а затем отпускаем кнопку мыши. Появится кнопка «CommandButton1», и одновременно Excel перейдет в режим конструктора. Щелкаем правой кнопкой мыши по кнопке на таблице и в меню выбираем «Исходный текст». Откроется окно редактора с пустой процедурой, которая будет вызываться при нажатии на эту кнопку. Внутри ее (между строк «Private Sub. » и «End Sub») в отдельной строке пишем имя записанного ранее макроса и закрываем редактор VBA. На панели «Элементы управления» нажимаем кнопку «Режим конструктора» для возврата ее в нормальное состояние. Теперь при нажатии на кнопку «CommandButton1» подпрограмма обработки событий вызовет наш макрос. Не нравится название — нажимаем «Режим конструктора», щелкаем правой кнопкой мыши по экранной кнопке и выбираем «Свойства». В списке выбираем свойство «Caption» и пишем любое другое слово. Вот и все.

    Перевод макроса excel в синтаксис foxpro

    Наиболее простым способом формирования команд для выполнения действий над OLE-объектами является запись соответствующего макроса на сервере приложении и использование текста этого макроса в Visual FoxPro.

    Рис. 21.13. Создание диаграммы с помощью OLE

    Используя команды Export (Экспорт) и Import (Импорт) из меню virtual (Файл), можно осуществлять обмен данными между Visual FoxPro и текстовыми файлами, а также наиболее популярными базами данных и электронными таблицами.

    Для экспорта данных из таблицы Visual FoxPro выполните команду Export (Экспорт) из меню virtual (Файл). Открывается диалоговое окно Export (Экспорт) (рис. 21.14), в котором из списка Туре (Тип) вам необходимо выбрать тип экспортируемого формата. Допустимые типы форматов приведены в табл. 21.2.

    Рис. 21.14. Диалоговое окно Export

    Таблица 21.2. Типы экспортируемых форматов

    Тип Кодовое обозначение Назначение
    Visual FoxPro 3.0 (DBF) Копирование одной таблицы в другую
    FoxPro для Windows 2.x (DBF) FOX2X Экспорт в формат FoxPro для Windows 2.x
    FoxBASE+ (DBF) FOXPLUS Экспорт в формат FoxBASE+
    dBASE IV (DBF) Экспорт в формат dBASE IV
    Delimited Text Экспорт в текстовый файл с разделителями
    Microsoft Excel 5.0 (XLS) XLS Экспорт в формат электронной таблицы Microsoft Excel 5.0
    Microsoft Excel 2.0, 3.0 и 4.0 (XLS) XLS Экспорт в формат электронных таблиц Microsoft 2.0, 3.0 и 4.0
    Lotus 1-2-3 2.x (WK1) WK1 Экспорт в формат электронной таблицы Lotus 1-2-3 2.x
    Lotu s 1-2-31 -A (WKS) WKS Экспорт в формат электронной таблицы Lotus 1-2-3 1-А
    Symphony 1.10 (WR1) WR1 Экспорт в формат электронной таблицы Symphony 1.10
    Symphony 1.01 (WRK) WRK Экспорт в формат электронной таблицы Symphony 1.01
    MultiPlan 4.01 (MOD) MOD Экспорт в формат электронной таблицы MultiPlan 4.01
    Data Interchange Format (DIF) DIF Экспорт в текстовый файл, используемый приложением VisiCalc
    System Data Format (SDF) SDF Экспорт в стандартный текстовый файл
    Symbolic Link Format SYLK Экспорт в текстовый файл, используемый электронной таблицей MultiPlan

    В поле ввода From (Форма) диалогового окно Export (Экспорт) необходимо указать имя экспортируемой таблицы, а в поле То (В) — имя файла, в который будет записываться результат экспорта.

    После того как вы указали имя исходной таблицы, становится доступной кнопка Options (Параметры), при нажатии на которую открывается диалоговое окно Export Options (Параметры экспорта) (рис. 21.15). В этом диалоговом окне для выбора записей таблицы, экспортируемых в выходной файл, вы можете использовать кнопки Scope (Граница), For (Для), While (Пока).

    Рис. 21.15. Диалоговое окно Export Options

    С помощью кнопки Fields (Поля) можно открыть диалоговое окно Field Picker (Выбор поля), в котором выбрать поля исходной таблицы для экспорта (рис. 21.16).

    Рис. 21.16. Диалоговое окно Field Picker

    В настоящем разделе мы обсудим импорт данных из форматов других приложений в таблицу Visual FoxPro. Для импорта данных воспользуемся услугами мастера.

    1. Чтобы запустить мастера импорта данных в таблицу Visual FoxPro, в меню Tools (Сервис) выберите команду Wizards (Мастера), а затем Import (Импорт).

    Для запуска мастера импорта вы также можете воспользоваться командой Import (Импорт) из меню virtual (Файл). В этом случае на экране открывается диалоговое окно Import (Импорт), в котором необходимо нажать кнопку Import Wizard (Мастер импорта).

    1. На первом шаге импорта данных с помощью мастера (рис. 21.17) вы указываете формат импортируемого файла, используя список virtual Type (Тип файла). С помощью кнопки Locate (Определить) вы задаете в поле Source virtual (Файл источника) имя исходного файла. Затем установкой соответствующей опции вам необходимо указать, в новую таблицу вы импортируете файл или в существующую, и задать имя таблицы.

    Завершив установку параметров, нажмите кнопку Next (Далее).

    Рис. 21.17. Первый шаг работы мастера: выбор типа импортируемого файла

    1. На втором шаге работы мастера вам необходимо указать, создается свободная таблица или таблица, входящая в базу данных. Установите соответствующую опцию. Если импортируемая таблица будет размещена в базе данных, то укажите ее название и расположение.
    2. На следующих двух шагах вы можете просмотреть содержимое импортируемого файла, определить заголовки и типы создаваемых полей.
    1. На пятом шаге работы мастера импорта задаются форматы отображения дат, кодовых страниц, денежных единиц и чисел.
    2. После завершения установок на последнем шаге работы мастера нажмите кнопку Finish (Готово), и на основе данных импортируемого файла будет создана таблица Visual FoxPro.

    Данные, содержащиеся в таблицах Visual FoxPro, можно использовать в других приложениях Windows. Например, в Microsoft Word вы можете подготовить этикетки для наклейки на конверты для рассылки своим клиентам, используя для этого данные, размещенные в таблице Customer.

    Для слияния данных из Visual FoxPro и Microsoft Word необходимо использовать мастер. Чтобы его запустить, в меню Tools (Сервис) выберите команду Wizards (Мастера) и в появившемся подменю — Mail Merge (Составление писем). Слияние данных осуществляется с помощью мастера за несколько шагов.

    1. На первом шаге мастер предлагает выбрать таблицу и поля, используемые для слияния. Перенесите необходимые поля в список Selected fields (Выбранные поля) и нажмите кнопку Next (Далее).

    Перед запуском мастера закройте базу данных.

    1. На втором шаге необходимо указать, с каким редактором вы будете работать далее. По умолчанию установлена опция Microsoft Word. Нажмите кнопку Next (Далее) для перехода к следующему шагу.
    1. На третьем шаге мастер предлагает поместить данные в новый или уже существующий документ (рис. 21.23). При выборе переключателя Use existing document (Существующий документ) становится доступной кнопка virtual (Файл), открывающая диалоговое окно Open (Открыть) для выбора ранее подготовленного документа.
    2. Если вы хотите разместить данные во вновь создаваемом документе, то на четвертом шаге мастера необходимо определить тип создаваемого файла, выбрав один из переключателей группы Select a document type (Выбор типа документа). В табл. 21.3 описаны переключатели группы Select a document type (Выбор типа документа) и типы создаваемых файлов.

    Таблица 21.3. Переключатели группы Select a document type

    Переключатель Тип создаваемого документа
    Form Letter Письмо
    Label Этикетка
    Envelope Конверт
    Catalog Каталог

    Выбрав необходимую опцию, нажмите кнопку Next (Далее) для перехода к последнему шагу мастера.

    Илон Маск рекомендует:  Иерархия хомского регулярные языки
    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL