Visual Basic for Applications (VBA) is an implementation of Microsoft’s event-driven programming language Visual Basic 6, and associated integrated development environment (IDE), which is built into most Microsoft Office applications. VBA enables developers to build user defined functions, automate processes, and access Win32 and other low level functionality through DLLs. It was also built into Office applications up to version 2004 for Apple’s Mac OS X, other Microsoft applications such as Microsoft MapPoint and Microsoft Visio; as well as being at least partially implemented in some other applications such as AutoCAD, WordPerfect and ArcGIS. It supersedes and expands on the capabilities of earlier application-specific macro programming languages such as Word’s WordBasic, and can be used to control many aspects of the host application, including manipulating user interface features, such as menus and toolbars, and working with custom user forms or dialog boxes. VBA can also be used to create import and export filters for various file formats, such as ODF.
As its name suggests, VBA is closely related to Visual Basic and uses the Visual Basic Runtime, but can normally only run code within a host application rather than as a standalone application. It can, however, be used to control one application from another using OLE Automation. For example, it is used to automatically create a Word report from Excel data, in turn automatically collected by Excel from polled observation sensors. The VBA IDE is reached from within an Office document by pressing the key sequence <Alt>F11.
VBA is functionally rich and flexible but it does have some important limitations, such as restricted support for function pointers which are used as callback functions in the Windows API. It has the ability to use (but not create) (ActiveX/COM) DLLs, and later versions add support for class modules.
Language
Code written in VBA is compiled[1] to a proprietary intermediate language called P-code (packed code)[2], which is stored by the hosting applications (Access, Excel, Word, PowerPoint)) as a separate stream in structured storage files (e.g., .doc
or .xls
) independent of the document streams. The intermediate code is then executed[1] by a virtual machine (hosted by the hosting application). Despite its resemblance to many old BASIC dialects (particularly Microsoft BASIC, from which it is indirectly derived), VBA is not compatible with any of them except Microsoft Visual Basic, where source-code of VBA Modules and Classes can be directly imported, and which shares the same library and virtual machine. Compatibility ends with Visual Basic version 6; VBA is not compatible with VB.NET. VBA is proprietary to Microsoft and, apart from the COM interface, is not an open standard.
Object models
To use VBA with an application such as Access, Word, or Excel, terminology and language constructions are needed to interact with the application.[3][4] This portion of VBA is called the Object Model for the application. A map of the object model is online for Excel and for Word. A listing of the object model is found by opening the Macro/VBA editor in the target application and then using «View» to open the «Object Browser» (F2).
Much of the difficulty in using VBA is related to learning the object model, which uses names invented by the originators of the model that may be less than transparent to a new user. One way to learn the terms and syntax of the object model is to use the macro recorder to record the steps taken to achieve a desired result using the mouse and menus of the application.[5] Once this is done, the VBA code constructed by the recorder can be viewed in the VBA editor, and often greatly streamlined or generalized with only a modicum of understanding of VBA itself. Unfortunately, the macro recorder does not always record everything (particularly for graphs), and some applications employing VBA do not provide a recorder at all. Use of debugging tools to discover VBA constructs for some cases where the macro recorder does not work are described by Jelen and Syrstad,[6] but some steps may remain obscure.
A more complete description of the strengths and weaknesses of the Visual Basic language is found in Visual Basic.
Automation
-
Main article: OLE Automation
Interaction with the host application uses OLE Automation. Typically, the host application provides a type library and API documentation which document how VBA programs can interact with the application. This documentation can be examined from inside the VBA development environment using its Object Browser.
VBA programs which are written to use the OLE Automation interface of one application cannot be used to automate a different application, even if that application hosts the Visual Basic runtime, because the OLE Automation interfaces will be different. For example, a VBA program written to automate Microsoft Word cannot be used with a different word processor, even if that word processor hosts VBA.
Conversely, multiple applications can be automated from the one host by creating Application objects within the VBA code. References to the different libraries must be created within the VBA client before any of the methods, objects, etc. become available to use in the application. These application objects create the OLE link to the application when they are first created. Commands to the different applications must be done explicitly through these application objects in order to work correctly.
For example: In Microsoft Access, users automatically have access to the Access library. References to the Excel, Word, and Microsoft Outlook libraries can also be created. This will allow creating an application that runs a query in Access, exports the results to Excel, formats the text, then writes a Mail merge document in Word that it automatically e-mails to each member of the original query through Outlook. (In this example, Microsoft Outlook contains a security feature that forces a user to allow, disallow, or cancel an e-mail being sent through an automated process with a forced 5 second wait. Information on this can be found at the Microsoft website.)
VBA programs can be attached to a menu button, a macro, a keyboard shortcut, or an OLE/COM event, such as the opening of a document in the application. The language also provides a user interface in the form of UserForms, which can host ActiveX controls for added functionality.
Security concerns
Like any common programming language, VBA macros can be created with a malicious intent. Using VBA, most of the security features lie in the hands of the user, not the author. The VBA ‘host-application’ options are accessible to the user. The user who runs any document containing VBA macros can preset the software with user preferences, much like those for internet browsers. End-users can protect themselves from attack by disabling macros from running in an application if they do not intend to use documents containing them, or only grant permission for a document to run VBA code if they are sure the source of the document can be trusted.
Named variables and user-defined functions
File:Named Variables in Excel.PNG Use of named column variables x & y in Microsoft Excel; y = x*x is calculated using the formula displayed in the formula box, which is copied down the entire y-column. Use of a user-defined function sq(x) of named variable x in Microsoft Excel. Function supplied automatically from the code in the Visual Basic for Applications editor.
A common use of VBA is to add functionality that may be missing from the standard user interface. Use of VBA is made much easier by using named variables on the spreadsheet, as shown at the left. The formula for y=x2 resembles Fortran or Basic, and the Name Manager shows the definitions of column variables y and x.
Using VBA, the user can add their own functions and subroutines that refer to these named ranges. In the figure at the right, the function sq is created in the Visual Basic editor supplied with Excel, and x & y are named variables in the spreadsheet.
Subroutines
File:Subroutine in Excel.PNG Subroutine in Excel calculates the square of named column variable x read from the spreadsheet, and writes it into the named column variable y.
Functions themselves cannot write into the worksheet, but simply return their evaluation. However, in Microsoft Excel, subroutines can write values or text found within the subroutine directly to the spreadsheet. The figure shows the Visual Basic code for a subroutine that reads each member of the x-column (named column variable x), calculates its square, and writes this value into the corresponding y-column (also a named column variable). The y-column contains no formula because its values are calculated in the subroutine and simply written in.
Examples
This macro provides a shortcut for entering the current date in Word:
Sub EnterCurrentDate() Selection.InsertDateTime DateTimeFormat:="dd-MM-yy", InsertAsField:=False, _ DateLanguage:=wdEnglishAUS, CalendarType:=wdCalendarWestern, _ InsertAsFullWidth:=False End Sub
VBA is useful for automating database tasks such as traversing a table:
Sub LoopTableExample Dim db As DAO.Database Dim rs As DAO.Recordset Set db = CurrentDb Set rs = db.OpenRecordset("select columnA, columnB from tableA") Do Until rs.EOF MsgBox rs!columnA & " " & rs!columnB rs.MoveNext Loop rs.Close Set db = Nothing End Sub
VBA is useful for automating repeated actions in rows of a spreadsheet. For example, using the following code example, the built-in iterative solver Goal Seek is applied automatically to each row in a column array, avoiding repeated use of manual menu entry. Below a column variable «C_M» determines the values of another column variable «Target» in some nonlinear fashion. The built-in nonlinear solver Goal Seek is called to find the value of «C_M» that brings «Target» to value one. The subroutine is inserted into the workbook using the VBA editor and command Insert Module. It is called directly from the VBA editor, or by using a «hot key» or keyboard shortcut. Values on the spreadsheet automatically update as the rows are scanned.
It is useful to note that subroutines have the power to update variables on the spreadsheet; functions do not — they simply report their evaluation.
Line Option Explicit is not part of the subroutine: it sets a compiler option that forces identification of all variables that have not been specified in Dim statements, which avoids difficult to detect debugging problems caused by typos. Notation ( ‘ ) in the following code denotes a comment, and ( _) line continuation. The code uses NAMED variables: a form of cell reference in which cells are assigned names of user choice, rather than the standard cell designation referring to specific row and column numbers. Naming is accomplished on the worksheet using the Excel «Name Manager», or menu Insert Name: Create.
Option Explicit Sub SetTarget() ' ' SetTarget Macro ' Dim J As Integer Dim Size As Integer ' ' On the spreadsheet, array "C_M" is a NAMED column variable ' Its members use a row index taken as J ' Built-in function COUNT determines size of array "C_M" ' Size = Range("C_M").Cells.Count ' ' Set initial value of all members of array ' C_M to 1E-06; J = row index ' For J = 1 To Size Range("C_M").Cells(J) = 0.000001 Next J ' ' "Target" is another NAMED array on the spreadsheet of ' dimension "Size"; the same size as array "C_M" ' ' Each "Target" entry in each row depends in a ' specified way upon the value of "C_M" in that row, ' for example, by a function such as: Target = C_M*C_M ' ' GOAL SEEK is a built-in iterative solver in Excel ' ' Call GOAL SEEK to set each "Target" member to unity: for example, ' taking J = row index, in row J the cell named "C_M" is changed ' by GOAL SEEK until "Target" in row J is one ' ' Syntax (aside from "for-next" details) found with macro recorder; ' underscore "_" is line continuation ' For J = 1 To Size Range("Target").Cells(J).GoalSeek Goal := 1, _ ChangingCell := Range("C_M").Cells(J) Next J End Sub
In the example below VBA is used to get an array from a cell range, manipulate the array, and then set the values back in a different range. This works many times faster than directly setting the cell values one-by-one.
Sub CalculateSquares(rinput As Range, routput As Range) 'Variable specifications Dim values() As Variant Dim i As Integer, N As Integer 'Count the rows to compute N = rinput.Rows.Count 'Set values array from input range. 'Expected shape of array is (1 to N, 1 to 1) values = rinput.Value 'Iterate through rows and set values For i = 1 To N values(i, 1) = values(i, 1) ^ 2 Next i 'Export values back into the spreadsheet by setting the 'value property of the output range. routput.Value = values End Sub
VBA can be used to create a user defined function (UDF) for use in a Microsoft Excel workbook:
Public Function BusinessDayPrior(dt As Date) As Date Select Case Weekday(dt, vbMonday) Case 1 BusinessDayPrior = dt - 3 'Monday becomes Friday Case 7 BusinessDayPrior = dt - 2 'Sunday becomes Friday Case Else BusinessDayPrior = dt - 1 'All other days become previous day End Select End Function
Example of how to add an external application object (the user must have the application library referenced in the application before this):
Public Sub Example() Dim XLApp As Excel.Application Dim WDApp As Word.Application Set XLApp = CreateObject("Excel.Application") Set WDApp = CreateObject("Word.Application") ' ...your code here... XLApp.Quit WDApp.Quit Set XLApp = Nothing Set WDApp = Nothing End Sub
Future
As of July 1, 2007, Microsoft no longer offers VBA distribution licenses to new customers.[7] Microsoft intended to add .NET-based languages to the current version of VBA ever since the release of the .NET Framework.[8] The .NET Framework versions 1.0 and 1.1 included a scripting runtime technology known as Script for the .NET Framework.[9] Also, Visual Studio .NET 2002 and 2003 SDK contained a separate scripting IDE called Visual Studio for Applications (VSA) that supported VB.NET.[10][11][12] One of its significant features was that the interfaces to the technology were also available via Active Scripting (VBScript and JScript), allowing even .NET-unaware applications to be scripted using .NET languages. However, VSA was deprecated in version 2.0 of the .NET Framework,[12] leaving no clear upgrade path for applications desiring Active Scripting support (although «scripts» can be created in C#, VBScript, and other .NET languages, which can be compiled and executed at run-time via libraries installed as part of the standard .NET runtime).
Support for VBA in the Mac OS X version of Microsoft Office was dropped with the release of Microsoft Office 2008 for Mac.[13][14]. The official reason given was that VBA relied heavily on machine code written for the PowerPC architecture, and that rewriting this code for dual PowerPC/Intel architectures would have added another 2 years to the development of the suite. However, the office suite can be automated using AppleScript to an extent. In a press statement released on May 13, 2008, Microsoft’s Macintosh Business Unit (Mac BU) announced that VBA will be returning in the next version of Office for Mac[15], and Microsoft’s announcement of Microsoft Office 2011 for Mac on February 11, 2010 confirmed this promise would be delivered upon[16][17]. Microsoft has also clearly stated that they have no plans to remove VBA from the Windows version of Office.[18][19]
After a decade of neglect, Microsoft has announced that VBA will at last be upgraded to 64 bits, as well as as other improvements. This will break compatibility in some cases, such as calls to the 32 bit Windows API, though this is trivial to fix. [20]
Visual Studio Tools for Applications (VSTA)
-
Main article: Visual Studio Tools for Applications
With the release of Visual Studio 2005, Microsoft announced Visual Studio Tools for Applications (VSTA). Independent Software Vendors may license VSTA in order to provide their end-users with customisation facilities within their application, in a similar way to VBA, however VSTA uses the Visual Studio 2005 or Visual Studio 2008 development environment for programming against the .NET Framework.
VSTA was included in Office 2007 particularly for adding custom program code to InfoPath forms. An introduction to its use is provided by Microsoft.
See also
- Microsoft Visual Basic
- Visual Studio Tools for Office
- Visual Studio Tools for Applications
- Microsoft Visual Studio
- Microsoft Visual Basic.NET
- Microsoft Excel
- Microsoft Word
- Microsoft FrontPage
- Microsoft Access
- Microsoft PowerPoint
References
- ↑ 1.0 1.1 ACC: Visual/Access Basic Is Both a Compiler and an Interpreter
- ↑ Microsoft P-Code technology
- ↑
Steven Roman (2002). Writing Excel Macros with VBA. Sebastopol CA: O’Reilly. Chapter 15. ISBN 0596003595. - ↑
Steven Roman (1999). Writing Word Macros. Sebastopol CA: O’Reilly. Chapter 10. ISBN 1565927257. - ↑
Matthew MacDonald (2005). Excel: The Missing Manual. Sebastopol CA: O’Reilly. pp. 655. ISBN 0596006640. - ↑
Jelen, B., & Syrstad, T. (2008). VBA and macros for Microsoft Office Excel 2007 (business solutions) (Second edition ed.). Indianapolis, Ind: Que. Chapter 2; pp. 42–52. ISBN 0789736829. - ↑ Discontinuation of the VBA Licensing Program
- ↑ Visual Studio for Applications
- ↑ Introducing Visual Studio for Applications
- ↑ Script happens .NET: MSDN
- ↑ Microsoft Takes Wraps Off VSA Development Technology
- ↑ 12.0 12.1 VSA scripting in .NET
- ↑ «WWDC: Microsoft updates Universal status of Mac apps». Macworld. 2006-08-07. Retrieved 2007-05-25.
- ↑ Office 2008 without VBA
- ↑ Microsoft Mac BU Delivers Strongest Launch in History of Office for Mac: Group releases Service Pack 1, announces the return of Visual Basic for Applications in next version
- ↑ «Microsoft will bring back macros to Mac Office in 2011». Retrieved 2010-04-21.
- ↑ «Microsoft to bring back Visual Basic in Office for Mac». Retrieved 2010-04-21.
- ↑ The Reports of VBA’s Demise Have Been Greatly Exaggerated
- ↑ Clarification on VBA Support
- ↑ http://blogs.msdn.com/excel/archive/2010/01/27/programmability-improvements-in-excel-2010.aspx
External links
- Excel and VB.Net
- MS Access VBA Examples
- A VBA Primer
Microsoft Office |
---|
History • Website • Microsoft Product Activation • Genuine Advantage |
Windows |
3.0 • 95 • 97 • 2000 • XP • 2003 • 2007 • 2010 • 2013 • 2016 • 2019 • 2021 |
Mac OS/OS X/macOS |
3.0 • 4.2 • 98 • 2001 • X • 2004 • 2011 • 2016 • 2019 • 2021 |
Applications (List) |
Desktop |
Access • Excel (Viewer) • InfoPath • Lync • OneNote • Outlook (Hotmail Connector • Add-ins) • PowerPoint (Viewer) • Project • Publisher • SharePoint (Designer • Workspace) • Visio • Word (Viewer) |
Server |
Forms Server • Groove Server • Lync Server • PerformancePoint Server • Project Server • Project Portfolio Server • SharePoint Server • Excel Services • InfoPath Forms Services |
Mobile |
Office Mobile |
Online |
Live Meeting • Office Live • Office Web Apps • Outlook Web App • Office 365 • Outlook.com |
Office tools |
Microsoft Office shared tools • Ribbon Hero • Ribbon Hero 2 |
Discontinued |
Accounting • Document Imaging • Entourage • FrontPage • Microsoft InterConnect • Liquid Motion • Mail • Office Assistants • Microsoft PhotoDraw • Photo Editor • Schedule+ • Snapshot Viewer for Access • Microsoft Vizact |
Related products |
Works • MapPoint • Search Server • Language Packs |
Technologies |
Information Bridge Framework • Object Linking and Embedding • Office Open XML • Office XML formats • Smart tags • Visual Basic for Applications |
- REDIRECT Template:Microsoft development tools
af:VBA
ar:فيجوال بيسك للتطبيقات
bs:Microsoft VBA
bg:Visual Basic for Applications
da:Visual Basic for Applications
ko:VBA
hr:Visual Basic for Applications
nl:Visual Basic for Applications
ja:Visual Basic for Applications
pt:Visual Basic for Applications
sk:Visual Basic for Applications
sv:Visual Basic for Applications
th:Visual Basic for Applications
tr:Visual Basic for Applications
From Wikipedia, the free encyclopedia
Paradigm | Multi-paradigm |
---|---|
Developer | Microsoft |
First appeared | 1993; 30 years ago |
Stable release |
7.1 (Office 2021) |
Typing discipline | Static/Dynamic Hybrid, Strong/Weak Hybrid |
OS | Microsoft Windows, macOS |
License | Commercial proprietary software |
Influenced by | |
QuickBASIC, Visual Basic |
Visual Basic for Applications (VBA) is an implementation of Microsoft’s event-driven programming language Visual Basic 6.0 built into most desktop Microsoft Office applications. Although based on pre-.NET Visual Basic, which is no longer supported or updated by Microsoft, the VBA implementation in Office continues to be updated to support new Office features.[1][2] VBA is used for professional and end-user development due to its perceived ease-of-use, Office’s vast installed userbase, and extensive legacy in business.
Visual Basic for Applications enables building user-defined functions (UDFs), automating processes and accessing Windows API and other low-level functionality through dynamic-link libraries (DLLs). It supersedes and expands on the abilities of earlier application-specific macro programming languages such as Word’s WordBASIC. It can be used to control many aspects of the host application, including manipulating user interface features, such as menus and toolbars, and working with custom user forms or dialog boxes.
As its name suggests, VBA is closely related to Visual Basic and uses the Visual Basic Runtime Library. However, VBA code normally can only run within a host application, rather than as a standalone program. VBA can, however, control one application from another using OLE Automation. For example, VBA can automatically create a Microsoft Word report from Microsoft Excel data that Excel collects automatically from polled sensors. VBA can use, but not create, ActiveX/COM DLLs, and later versions add support for class modules.
VBA is built into most Microsoft Office applications, including Office for Mac OS X (except version 2008), and other Microsoft applications, including Microsoft MapPoint and Microsoft Visio. VBA is also implemented, at least partially, in applications published by companies other than Microsoft, including ArcGIS, AutoCAD, CorelDraw, Kingsoft Office, LibreOffice,[3] Reflection,[4] SolidWorks,[5] WordPerfect, and UNICOM System Architect (which supports VBA 7.1).
Design[edit]
Code written in VBA is compiled[6] to Microsoft P-Code (pseudo-code), a proprietary intermediate language, which the host applications (Access, Excel, Word, Outlook, and PowerPoint) store as a separate stream in COM Structured Storage files (e.g., .doc
or .xls
) independent of the document streams. The intermediate code is then executed[6] by a virtual machine (hosted by the host application). Despite its resemblance to many old BASIC dialects (particularly Microsoft BASIC, from which it is indirectly derived), VBA is incompatible with any of them except Visual Basic, where source code of VBA modules and classes can be directly imported, and which shares the same library and virtual machine. Compatibility ends with Visual Basic version 6; VBA is incompatible with Visual Basic .NET (VB.NET). VBA is proprietary to Microsoft and, apart from the COM interface, is not an open standard.
Automation[edit]
Interaction with the host application uses OLE Automation. Typically, the host application provides a type library and application programming interface (API) documentation which document how VBA programs can interact with the application. This documentation can be examined from inside the VBA development environment using its Object Browser.
Visual Basic for Applications programs which are written to use the OLE Automation interface of one application cannot be used to automate a different application, even if that application hosts the Visual Basic runtime, because the OLE Automation interfaces will be different. For example, a VBA program written to automate Microsoft Word cannot be used with a different word processor, even if that word processor hosts VBA.
Conversely, multiple applications can be automated from the one host by creating Application objects within the VBA code. References to the different libraries must be created within the VBA client before any of the methods, objects, etc. become available to use in the application. This is achieved through what is referred to as Early or Late Binding. These application objects create the OLE link to the application when they are first created. Commands to the different applications must be done explicitly through these application objects in order to work correctly.
As an example, VBA code written in Microsoft Access can establish references to the Excel, Word and Outlook libraries; this allows creating an application that – for instance – runs a query in Access, exports the results to Excel and analyzes them, and then formats the output as tables in a Word document or sends them as an Outlook email.
VBA programs can be attached to a menu button, a macro, a keyboard shortcut, or an OLE/COM event, such as the opening of a document in the application. The language provides a user interface in the form of UserForms, which can host ActiveX controls for added functionality.
Inter-process communication automation includes the Dynamic Data Exchange (DDE) and RealTimeData (RTD) which allows calling a Component Object Model (COM) automation server for dynamic or realtime financial or scientific data.[7]
Security concerns[edit]
As with any common programming language, VBA macros can be created with malicious intent. Using VBA, most of the security features lie in the hands of the user, not the author. The VBA host application options are accessible to the user. The user who runs any document containing VBA macros can preset the software with user preferences. End-users can protect themselves from attack by disabling macros from running in an application or by granting permission for a document to run VBA code only if they are sure that the source of the document can be trusted.
In February 2022, Microsoft announced its plan to block VBA macros in files downloaded from the Internet by default in a variety of Office apps due to their widespread use to spread malware.[8]
Version history[edit]
- VBA was first launched with MS Excel 5.0 in 1993. It became an instant success among developers to create corporate solutions using Excel. Inclusion of VBA with Microsoft Project, Access and Word replacing Access BASIC and Word BASIC respectively made it more popular.
- VBA 4.0 is the next famous release with a totally upgraded version compared to previous one. Released in 1996, it is written in C++ and became an object oriented language.
- VBA 5.0 was launched in 1997 along with all of MS Office 97 products. The only exception for this was Outlook 97 which used VBScript.
- VBA 6.0 and VBA 6.1 were launched in 1999, notably with support for COM add-ins in Office 2000. VBA 6.2 was released alongside Office 2000 SR-1.
- VBA 6.3 was released after Office XP, VBA 6.4 followed Office 2003 and VBA 6.5 was released with Office 2007.
- Office 2010 includes VBA 7.0. There are no new features in VBA 7 for developers compared to VBA 6.5 except for 64-bit support. However, after VBA 6.5/Office 2007, Microsoft stopped licensing VBA for other applications.
- Office 2013, Office 2016, Office 2019 and Office 2021 include VBA 7.1.
Development[edit]
As of July 1, 2007, Microsoft no longer offers VBA distribution licenses to new customers. Microsoft intended to add .NET-based languages to the current version of VBA ever since the release of the .NET Framework,[9] of which versions 1.0 and 1.1 included a scripting runtime technology named Script for the .NET Framework.[10] Visual Studio .NET 2002 and 2003 SDK contained a separate scripting IDE called Visual Studio for Applications (VSA) that supported VB.NET.[11][12][13] One of its significant features was that the interfaces to the technology were available via Active Scripting (VBScript and JScript), allowing even .NET-unaware applications to be scripted via .NET languages. However, VSA was deprecated in version 2.0 of the .NET Framework,[13] leaving no clear upgrade path for applications desiring Active Scripting support (although «scripts» can be created in C#, VBScript, and other .NET languages, which can be compiled and executed at run-time via libraries installed as part of the standard .NET runtime).
Microsoft dropped VBA support for Microsoft Office 2008 for Mac.[14][15] VBA was restored in Microsoft Office for Mac 2011. Microsoft said that it has no plan to remove VBA from the Windows version of Office.[16][17]
With Office 2010, Microsoft introduced VBA7, which contains a true pointer data type: LongPtr. This allows referencing 64-bit address space. The 64-bit install of Office 2010 does not support common controls of MSComCtl (TabStrip, Toolbar, StatusBar, ProgressBar, TreeView, ListViews, ImageList, Slider, ImageComboBox) or MSComCt2 (Animation, UpDown, MonthView, DateTimePicker, FlatScrollBar), so legacy 32-bit code ported to 64-bit VBA code that depends on these common controls will not function. This did not affect the 32-bit version Office 2010.[18] Microsoft eventually released a 64-bit version of MSComCtl with the July 27th, 2017 update to Office 2016.[19]
See also[edit]
- Visual Studio Tools for Applications
- Visual Studio Tools for Office
- Microsoft Visual Studio
- Microsoft FrontPage
- OpenOffice Basic
- LotusScript
- Microsoft Power Fx
References[edit]
- ^ «Compatibility Between the 32-bit and 64-bit Versions of Office 2010». msdn.microsoft.com.
- ^ o365devx. «What’s new for VBA in Office 2019». docs.microsoft.com. Retrieved 2022-05-02.
- ^ «Support for VBA Macros». The Document Foundation — LibreOffice. Retrieved 3 January 2023.
- ^ «Reflection Desktop VBA Guide». docs.attachmate.com. Retrieved 2017-07-01.
- ^ «2016 SolidWorks Help – VBA». help.solidworks.com. Retrieved 2016-07-25.
- ^ a b «ACC: Visual/Access Basic Is Both a Compiler and an Interpreter». Microsoft. 2012. Archived from the original on 2012-10-21.
- ^ «How to set up and use the RTD function in Excel». msdn.microsoft.com.
- ^ «Microsoft to Block Office VBA Macros by Default». The Verge. Retrieved 2022-09-26.
- ^ «Visual Studio for Applications». Archived from the original on 2007-12-17.
- ^ «Introducing Visual Studio for Applications». msdn.microsoft.com.
- ^ «Script Happens .NET». msdn.microsoft.com.
- ^ «Microsoft Takes Wraps Off VSA Development Technology». Archived from the original on 2007-12-17.
- ^ a b «VSA scripting in .NET». Archived from the original on 2007-02-11.
- ^ «WWDC: Microsoft updates Universal status of Mac apps». Macworld. 2006-08-07. Retrieved 2007-05-25.
- ^ «What is Microsoft Office and Office 365 – FAQs».
- ^ «The Reports of VBA’s Demise Have Been Greatly Exaggerated».
- ^ «Clarification on VBA Support». Archived from the original on 2008-01-19.
- ^ «Compatibility Between the 32-bit and 64-bit Versions of Office 2010». msdn.microsoft.com.
- ^ «Release notes for Monthly Channel releases in 2017». learn.microsoft.com. Retrieved 2022-11-13.
Комментарии к записи VBA Excel: что это такое, как пользоваться объектами и применить макросы отключены
Первая версия Excel появилась в 1985 году. С этого времени ПО продолжать развиваться, в результате чего появился vba excel. Что это такое и для чего можно использовать, стоит рассмотреть более подробно.
Что это такое
При создании программы Excel использовался специальный технический язык Visual Basic for Application. Первоначально его устанавливают в процессор Microsoft. Технические специалисты отмечают, что данный язык легко изучить и использовать в работе.
Однако существует нюанс, о котором должен знать каждый пользователь: не все версии могут быть совместимы. Это связано с тем, что функционально VBA связана с новой версией продукта, при этом в старых программах таких возможностей нет. Кроме того, код открыт для посторонних пользователей, поэтому его легко изменить. Однако посредством IBM Lotus Symphony можно задать комбинацию пароля, чтобы просматривать документы смог только один пользователь.
Объекты, коллекции, свойства и методы
Для пользователей, которые планируют в будущем использовать VBA, необходимо разобраться с ключевыми понятиями и узнать, что такое объект. Обратившись к программе Excel, здесь в данном случае объектами являются:
- Ячейка
- Лист
- Созданная книга
- Выбранный диапазон.
Все объекты создают определенную иерархию, в которой подчиняются друг другу. Имеющийся Application должен соответствовать продукту Excel. Так, например, чтобы использовать определенную ячейку, пользователь должен задать определенный путь к ней.
Коллекция – это группа объектов, принадлежащих к тому же классу с форматом записи ChartObjects. Отдельные составляющие также принадлежат категории объектов.
Еще одно понятие, с которым важно ознакомиться, это «Свойства». Каждый объект имеет обязательную характеристику. Для Range, как правило, Value и Formula.
Методы – это задаваемые команды, которые требуется осуществить пользователю. Если требуется заполнить команду в форме VBA, то в обязательном порядке нужно проставлять точки, отделяя объект. В качестве примера: Cells (1,2).Select. Данная команда предполагает, что требуется выбрать ячейку под номером 1.2. Если значение было задано неверно или потребуется удалить все содержимое ячейки, то необходимо задать команду Selection.ClearContents.
Stop Recording
Как начать этим пользоваться
Для начала необходимо создать файл в формате Excel и сохранить на рабочем столе. Важно, чтобы файл поддерживал макросы. Далее нужно перейти к VB. Для этого потребуется зажать комбинацию из клавишей «Alt+F1». Потом требуется следовать инструкции:
- Рядом с Excel в верхней части можно найти специальное меню;
- Из перечисленных функций выбрать «Mudule»;
- Сохранить и нажать на изображение с надписью «floppy disk»;
- Вписываем код.
Формат кодировки должен выглядеть в таком формате: Sub program-‘код-End Sub.
Внимание: строка, в которой должен прописываться код будет выделена зеленым цветом. Перед тем, как прописывать кодировку, крайне важно поставить апостроф. Он означает, что после шифра должен проставляться определенный комментарий.
Это все, что понадобиться, чтобы сформировать инструмент VBA. Для пользователей, которые имеют представление о том, как использовать Visual Basic, весь процесс займет минимум времени. Но процесс также не предполагает сложностей для тех пользователей, которые ранее не сталкивались с решением подобной задачи.
Макросы в Excel
Макросом называют специальный код, который записывается на специальном языке VBA. Их можно создавать в ручном или автоматическом режиме. Для этого потребуется использовать специальный макроредактор.
Программа, которая записывает каждое действие, произведенное в программе Excel, преобразует их в специальный язык VBA. Код, который создается посредством макрорекодера, легко поддается редактированию и удобен в использовании. Важно отметить, что макрос можно использовать неограниченное количество раз. Даже если пользователь не знает, каким образом нужно обращаться с VBA, он может максимально автоматизировать весь процесс.
Чтобы самостоятельно создать макрос, рекомендуется использовать следующую инструкцию:
- Кликнуть правой кнопкой мыши на созданную ленту и жать на функцию настройки. С его помощью можно открыть параметры диалогового окна:
Настройка ленты
- В открывшемся окне появится параметр настройки ленты. В правой части находятся основные функции, где потребуется поставить галочку напротив разработчика:
Разработчик
- Подтвердить действие, нажимая кнопку «ОК».
Если все действия выполнены в правильной последовательности, в основной меню должно появиться дополнительное меню Разработчик, как указано на скриншоте:
Дополнительное меню
Чтобы воспользоваться расширенными функциями таблицы Excel, стоит попробовать самостоятельно записать макрос. Он будет самостоятельно выбирать ячейку и формировать в ней заданный текст. Для этого потребуется сделать следующие шаги:
- Перейти в созданную вкладку разработчика;
- В меню кода выбрать функцию записи. Должно открыться отдельное окно
Запись макроса
- В окне записи потребуется задать имя для будущего макроса. Однако важно отметить, что важно выполнить несколько правил, чтобы правильно задать имя: нельзя использовать пробелы. Поэтому лучше задавать слитное название, даже если оно состоит из двух слов. Также разрешается использовать нижний дефис.
Имя макроса
- Если возникает необходимость, то можно задать комбинацию из клавиш. В таком случае нужно одновременно зажать следующее сочетание: «Ctrl+Shift+N». Важно запомнить, что данная комбинация при использовании способна отменить абсолютно любые заданные действия посредством горячих клавиш. Если ранее для автоматического сохранения использовалось сочетание «Ctrl+S», то более для этой функции его нельзя использовать.
Сочетание клавиш
- Перед тем, как сохранить документ, нужно проверить, правильно ли задана опция. Это необходимо для того, чтобы удостовериться в том, что макрос является составляющей выбранной книги. Он будет присутствовать даже при автоматическом сохранении или если потребуется с кем-то поделиться файлом.
Сохранить в
- Как дополнение можно придумать описание к файлу. Чаще всего это требуется, если пользователь планирует создать несколько макросов подряд, чтобы в будущем не запутаться, какой из них за что отвечает;
- Остается нажать «OK». После этого макрос начнет автоматически записывать информацию в книге. Если нужно остановить запись, то кликаем по соответствующей кнопке рядом с меню разработчика;
- Выбираем другую ячейку, например А2;
- Вводим любой текст и нажимает кнопу «Enter»
- Далее приостанавливаем запись.
Остановить запись
На этом все действия выполнены и остается использовать макрос при необходимости. Стоит отметить, что с его помощью каждый пользователь сможет понять, каким образом устроен макрорекодер.
Чтобы ознакомиться с полученными результатами, достаточно перейти в VB в Excel:
- Открыть вкладку разработчика
- В меню кодировки открыть Visual Basic.
Чтобы перейти к кодировке VBA или его редактор, можно использовать комбинацию из клавиш Alt и F11. Для ознакомления, каким образом выглядит сам редактор, представлен следующий скриншот:
Меню Visual Basic
Когда записывается новый макрос, должны происходить следующие изменение:
- Появление нового модуля
- Появление набранного названия
- Добавляется новая функция.
Чтобы показалось окно ввода, остается дважды кликнуть на модуль, чтобы появилась следующая запись, как показано на скриншоте:
Важно принять к сведению, что самостоятельно записанный код эффективен в определенных областях применения (финансовой или математической). Кроме того, зачастую макрорекодер может к имеющемуся инструментарию предлагать совершенно новые и ненужные функции.
Функции VBA
На примере инструкций, которые были приведены ранее, можно сделать вывод о том, что использование VBA и макросов не предполагает больших сложностей. Общее количество функций, которые были созданы специально для программирования на языке VBA, составляет 160 возможностей. Все функции подразделяются на несколько групп:
Математическая. Применяя ее для аргумента, можно вычислять косинусы и логарифмы, что чаще всего требуется для студентов технических вузов и занимающихся программированием. Функция избавляет от необходимости вести математические подсчеты вручную и ускоряет процесс; Финансовая. Данная функция благодаря наличию помогает запускать программирование для финансовых операций. Эти опции помогут составлять грамотный финансовый и бухгалтерский учет; Работа с массивами посредством L,U Bound, Array, IsArray; Отдельная функция VBA для ведения строк. Стоит отметить, что группа представлена многочисленными способностями. Так, например, среди самых распространенных – Space, которая задается в строке с определенным количеством пробелов. Функция Asc требуется для записи кодировки в ANSI. Данные функции пользуются большой популярностью среди пользователей и дают возможность полноценной работы с файлами Excel; Преобразование функций и ввода данных. Использование CVar помогает вернуть изначальное значение аргумента и преобразовать его в другой формат – Variant Изменение и корректировка дат. Они помогают расширить спектр имеющихся возможностей. Чтобы вернуть исходное название или день, используется WeekdayName. Чтобы узнать какое количество секунд прошло с наступления 12 ночи, применяется функция Timer; Чтобы преобразовать число в специальные системы можно обратиться к возможности Oct, которая поможет представить число, состоящее из 8 чисел; Форматирование. Основной является Format. С ее помощью осуществляется возвращение значения в виде Variant, которое дальше форматируется в соответствии с установленными правилами.
Решение задачи с использованием программирования на VBA
Чтобы просчитать возможные отклонения, требуется ввести обозначения и получить заданную формулу. Для того, чтобы просчитать процентное обозначение потребуется использовать следующую формулу: (F-P)разделить на P*100, суммарное значение должно получиться при действии (F-P). Полученные результаты рекомендуется сразу вводить в таблицу.
Чтобы сформировать в надлежащем виде прогноз, нужно применить следующую формулу: ItogP=ItogP + P, ItogF=ItogF+ F. Для просчета отклонений требуется использовать (ItogF – ItogP) / ItogP * 100. Как только все действия будут выполнены, значения вносятся в ячейки, а значит присваивать переменные нет необходимости.
Чтобы осуществить запуск, в первую очередь требуется сохранить созданную книгу. Также стоит обращать внимание и на другие условия. Так, например, добавлять строки придется каждый раз после введения новых обозначений в таблице.
Если требуется создать таблицу для отчетности, то по данной функции достаточно кликнуть все раз. Как только работа подойдет к завершению, нужно нажать на закончить, а затем переключиться в соответствующее окно программы Excel.
Заключение
Выше были изучены все аспекты, каким образом можно использовать макросы, для чего нужен VBA в Excel и каким образом его применять. Стоит отметить, что благодаря простым инструкциям, научиться этим действиям сможет любой начинающий пользователь, который ранее не имел возможность изучать Visual Basic. Подобные возможности помогают в организации финансовой отчетности и проведения математических функций.
Всем доброго времени суток. На связи Алексей Гулынин. В этой первой вводной статье по программированию на VBA, я кратко расскажу об истории появления этого языка и о том, что вы сможете делать после его освоения.
Среди опытных программистов бытует мнение, что BASIC — это несерьёзно. Проанализировать хотя бы название. BASIC (Beginner’s All-purpose Symbolic Instruction Code) — символический код (язык) инструкций для начинающих на все случаи жизни (или для всех целей). Данный язык был сформирован в 1960-х годах, и изначально задумывался как наглядный способ построения различных алгоритмов для студентов колледжей. Однако, данный язык стал очень популярным. С годами BASIC развивался и улучшался. Во многих ранних версиях он был интерпретируемым языком. Каждая строка кода вначале интерпретировалась, а затем только выполнялась, что сильно замедляло время работы программы. В современные версиях языка BASIC программы компилируются, что значительно повышает быстродействие работы программы.
BASIC приобрел популярность к 1991 году, когда компания Microsoft выпустила Visual Basic для Windows. Данный продукт намного упростил разработку обособленных приложений для Windows. Visual Basic почти не имеет ничего общего с ранними версиями BASIC, но он представляет собой основу VBA.
Excel 5 — это первое приложение на рынке программного обеспечения, в котором появился VBA (Visual Basic for Applications). VBA является стандартом написания скриптов для продуктов компании Microsoft и в настоящее время входит в состав всех приложений Microsoft Office, а также приложений других компаний. Примерами таких продуктов могут быть AutoCAD, Coreldraw.
К примеру на моей работе была поставлена задача автоматизировать процесс построения графика по точкам (очень далекое приближение описания того ужасного графика, который получался). Каждая точка представляет собой результат некого анализа. Данный график люди вручную рисовали около двух-трех месяцев в Coreldraw. Была написана программа, в которую они заносили результаты своих анализов. Эти результаты попадали в базу данных. Затем из базы данных, при помощи VBA, тянулись значения, по которым и строился график в Coreldraw. Это было красивое решение такой проблемы. Пользователи были счастливы. Хотя, может быть и нет. Возможно, из-за того, что у них освободилось много времени — на них свалили другую работу. Ну тут уж куда деваться, всё автоматизируется и развивается. Кто не готов это принять — тот за бортом.
Освоив, к примеру, VBA для Excel (чем мы и будем с вами заниматься), вы сможете писать сценарии для других продуктов компании Microsoft, да и не только.
Давайте с вами условимся называть сценарии, программные коды, скрипты в VBA — макросами, потому что они так и называются в VBA. Кроме того, можно создавать программы, которые использует функции различных приложений (например, функции Excel и CorelDraw).
Эффективность применения VBA основана на правильном понимании объектной модели в каждом отдельном приложении. Другими словами, в Excel используется одна объектная модель, в Word — другая, в PowerPoint — третья. VBA только управляет этими объектами. Приложением можно манипулировать программно только при помощью объектов, которые представлены именно в этом приложении.
Так, в объектной модели Excel представлено несколько мощных объектов анализа данных, например рабочие листы, диаграммы, сводные таблицы, сценарии, а также многочисленные математические, финансовые, инженерные и общие функции. С помощью VBA вы можете работать с этими объектами и разрабатывать различные автоматизированные программы, на которые у обычных пользователей без такой автоматизации может уходить много времени. Сначала объектная модель Excel может показаться очень сложной, но это только в начале пути.
Если уж вы решили заняться VBA, пусть для себя или же на работе дядя сказал, то приготовьтесь усердно работать. Простых путей нигде нет.
На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.
Внимание вопрос: как вы думаете, будет ли популярен этот язык лет через 5? Ответы пишите в комментариях.
Сергей Андреевич Дремук
Эксперт по предмету «Программирование»
Задать вопрос автору статьи
Определение 1
Язык Visual Basic for Applications (VBA) – достаточно популярная в последние годы среда разработки приложений, которая является мощным программным средством, позволяющим реализовать широкий спектр практических задач. Основным её достоинством является оптимальное сочетание простоты использования, доступности и большого набора разнообразных возможностей, которые позволяют охватить все основные направления деятельности разработчика прикладных программ.
Историческая справка
Начало 90-х годов прошлого века ознаменовалось тем, что наметилась отчетливая тенденция включения в приложения, которые были предназначены для конечного пользователя, а также средства внутреннего программирования, с помощью которых можно было настраивать и адаптировать эти пакеты под конкретные условия применения.
В конце 1993 г. корпорация Microsoft объявила о создании на основе языка VB новой универсальной системы программирования для прикладных программ, которая в дальнейшем получила название Visual Basic for Applications (VB для приложений). Вполне естественно, что реализацию данного проекта корпорация начала с собственных офисных пакетов:
- Первая версия VBA 1.0 появилась в составе MS Office 4.0, однако не во всех программах, а только в Excel 4.0 и Project 6.0. В других же приложениях — Word 6.0 и Access 2.0 — были собственные варианты Basic. Кроме того, VBA 1.0 очень отличался, несмотря на то, что имел ряд существенных преимуществ, от используемой на тот момент универсальной системы VB 3.0.
- Качественный перелом произошел в конце 1996 года, когда был выпущен MS Office 97 с единой средой программирования VBA 5.0, включенной в приложения Word, Excel и PowerPoint. Кроме того, VBA 5.0 использовал языковый механизм и среду разработки, которые использовала и универсальная система VB 5.0.
- В состав MS Office 2000 вошла уже версия VBA 6.0, использовавшаяся на тот момент уже в 6 приложениях: Word, Excel, PowerPoint, Access, Outlook, Frontpage.
«Язык Microsoft Visual Basic for Applications» 👇
В настоящее время корпорация Microsoft занимает твердую позицию, согласно которой пакет MS Office выступает не просто как набор прикладных программ, а как комплексная платформа для создания всевозможных бизнес-приложений, которые позволяют решить широкий круг специализированных задач пользователей всего мира. Именно поэтому и появился в его составе специальный выпуск для разработчиков приложений — Developer Edition. Помимо всего прочего, в это же время VBA активно продвигают в качестве отраслевого стандарта для управления программируемыми приложениями.
В наши дни уже многие ведущие мировые фирмы-разработчики прикладных программ (в их рядах и российские) приобрели лицензии на VBA и включают его в состав разрабатываемых приложений. Таким образом, осваивая механизм программирования VBA, реализованный в пакетах офисных программ, которые установлены на компьютерах нынешних пользователей, они смогут использовать полученные знания и навыки при работе с десятками и сотнями других программ, в том числе и тех, которые еще не созданы. Начиная с составлений простейших макрокоманд, при большом желании можно в рамках одного инструментария стать хорошим профессионалом по разработке программных систем любой сложности. Лет двадцать назад во всем мире насчитывалось не более 2 млн. программистов. Сегодня же их десятки миллионов, и из них, вероятнее всего, не менее 70% используют хотя бы один из инструментов VB или VBA.
Достоинства и недостатки
Замечание 1
Одним из достоинств языка VBA является сравнительно легкое освоение, благодаря которому приложения может создавать даже пользователь, который никогда в своей жизни не писал программы на профессиональном уровне. К особенностям VBA относится выполнение скрипта именно в среде офисных приложений.
Кроме достоинств имеются конечно же и недостатки. Одним из них является проблема обратной совместимостью разных версий. Эта проблема в основном связана только с тем, что код программы обращается к функциональным возможностям, появившимся в новой версии программного продукта, которые отсутствовали в прежней версии. Также к недостаткам можно отнести и достаточно высокую открытость кода, что чревато случайными изменениями, однако все же многие программные продукты (например, Microsoft Office) дают возможность пользователю применять шифрование исходного кода и устанавливать пароль на его просмотр.
По мнению большинства программистов, этому языку не нужно уделять особого внимания по той лишь причине, что он ломает мышление программистов и не позволяет перейти после него на другие, по их мнению, нормальные языки как Python.
Возможности VBA ничуть не уступают другим системам программирования Windows и постоянно растут. К основным возможностям VBA относятся:
- реализация максимально гибкого и удобного интерфейса для приложения;
- создание различных разнообразных многоуровневых и всплывающих меню;
- обработка событий мыши и клавиатуры;
- работа с графикой.
Разработчикам предоставляется возможность использовать в программе как стандартные, так и встроенные диалоги, необходимые для организации обратной связи с пользователем. Кроме этого, приложение осуществляет работу с таймером, обрабатывает файлы и каталоги на жестком диске, а также предоставляет доступ к базам данных. В среде VBA разработчик может внедрять в приложение различные объекты, которые, в свою очередь, поддерживаются другими программами. Помимо этого, в среде VBA имеется возможность реализации связи одного или нескольких компьютеров, на которых установлено созданное приложение, с сетью Internet.
Язык программирования VBA представляет собой реализацию объектно-ориентированного написания программ в системе MS Office. Синтаксис языка VBA основывается на правилах языка Basic, который, в свою очередь, является одним из самых ранних языков программирования. В процессе написания программы на VBA происходит последовательное заполнение параметров различных объектов. Язык VBA – это мощное программное средство, посредством которого осуществляется обработка файловой информации. Но наиболее привлекательным является то, что с помощью данного языка представляется возможным заносить результаты вычислений и любые данные в приложения Office.
Таким образом, можно отметить, что в настоящее время большое внимание уделяется программированию на VBA.
Описание языка VBA и системы программирования в Office
Операционная система Windows корпорации Microsoft обладает поразительно удобным интерфейсом, а также разнообразными интеллектуальными средствами, освобождающими пользователя от рутинной работы, которая характерна для других операционных систем. Единственным и незаменимым дополнением этой операционной системы являются программные продукты Microsoft Office, с помощью которых даже начинающий пользователь способен с легкостью создать идеально оформленную документацию, а также выполнить финансовые, инженерные и другие расчеты, создать различные базы данных и работать с ними, разработать и оформить всевозможные презентации. Операционная система Windows совместно с программными продуктами Microsoft Office, покорили весь мир.
Microsoft интегрировала в свои офисные программы и в операционную среду поразительно простой и необычайно эффективный язык программирования Visual Basic for Applications. С помощью него в настоящее время каждый пользователь способен автоматизировать работу любого приложения и адаптировать ее для решения конкретных практических задач, не только добавив интерфейсу новую функциональность, но и удалив из него ненужные для данного приложения элементы, тем самым обеспечив ему дополнительную стабильность.
С помощью VBA пользователь может по своему вкусу изменить внешний вид или способ применения имеющихся средств приложения и кроме того добавить свои, абсолютно новые возможности. Приведем несколько примеров, когда VBA окажется наиболее оптимальным вариантом использования:
- Возможность, которую приходится часто использовать, почему-то оказывается спрятанной в глубинах диалоговых окон. Не плохо было бы поместить соответствующую команду в виде кнопки на панель инструментов, чтобы без проблем в нужный момент вызывать команду одним щелчком. А лучшим вариантом будет появление кнопки только в том случае, когда команда действительно понадобилась.
- Пользователю довольно часто приходится сталкиваться с повторением одного и того же набора команд. Вероятнее всего, он предпочел бы иметь программу, запоминающую все нужные для этого шаги, которая запускала бы сразу всю последовательность действий одной командой.
- В случае, когда вашему программному обеспечению просто не хватает нескольких возможностей, которые, ну просто, очень необходимы. Почему бы вам не добавить недостающие команды самостоятельно?
Замечание 2
VBA позволяет выполнить любую из перечисленных выше модификаций приложения. Кроме того, с его помощью вы будете иметь возможность создавать свои законченные и полностью работоспособные программы.
Находи статьи и создавай свой список литературы по ГОСТу
Поиск по теме
В статье рассказывается:
- История развития Visual Basic
- Основные разновидности Visual Basic
- Особенности Visual Basic
- Плюсы и минусы Visual Basic
-
Пройди тест и узнай, какая сфера тебе подходит:
айти, дизайн или маркетинг.Бесплатно от Geekbrains
Visual Basic сочетает в себе процедуры и элементы объектно-ориентированных и компонентно-ориентированных языков программирования. Даже несмотря на то, что появился VB более 50 лет назад, он до сих пор с успехом используется для решения определенных задач.
К примеру, с его помощью благодаря автоматической реализации некоторых механизмов можно быстро разрабатывать приложения баз данных для операционных систем от Microsoft Windows. Есть у Visual Basic и другие преимущества, хотя без недостатков тоже не обошлось. Но давайте поговорим обо всем этом несколько более подробно.
Язык BASIC был разработан в 1964 году. Он создавался для выполнения учебных задач, при которых обучающиеся могли бы использовать простые алгоритмы для освоения навыков программирования. Данный язык вывел образование на новый уровень, а программисты начали соревноваться между собой, создавая все новые и новые диалекты.
В число людей, начавших свою профессиональную карьеру с использования BASIC, входил Билл Гейтс, который в возрасте 13 лет написал на нем свою первую программу. В 20 лет он вместе с Полом Алленом получал свои дивиденды от реализации версии Altair BASIC.
В 80-х годах популярность BASIC стала постепенно снижаться. Разрабатываемые в то время языки уже не имели столь сложного синтаксиса, а их спектр возможностей становился все шире. Лишь Microsoft продолжал выпускать разновидности BASIC, сначала создав QBasic, а затем и Visual Basic.
На первых порах версии Microsoft Visual Basic не были столь популярны. Дело в том, что они практически не отличались от QBasic. Исключениями являлись разве что графический интерфейс и подсветка синтаксиса. Но Microsoft внесли существенные коррективы в версию 3.0.
Комплектация Professional позволяла разработчикам взаимодействовать с базой данных Access, а благодаря графическим возможностям с языком смогли работать даже те люди, которые не имели навыков программирования. Плюс ко всему, увеличилась скорость работы, а установка ПО стала значительно проще.
В 1995 году появилась Windows 95, что позволило Visual Basic 4.0. выйти в лидеры. Был создан полноценный компилятор, появилась возможность разрабатывать 16 и 32-ядерные приложения, и повысилось быстродействие.
Последняя версия традиционного Visual Basic вышла в свет в 1998 году. С этого момента Microsoft поменял стратегию, обеспечив два вектора развития языка: VB на платформе .NET и адаптированные версии для решения локальных задач (VBA, VBScript, eVB).
Основные разновидности Visual Basic
Классический Visual Basic (Visual Basic Classic)
Данный язык в значительной степени привязан к своей среде разработки и к OS Windows, из-за чего он может использоваться лишь в качестве инструмента создания приложений для этой операционной системы. Привязка к среде означает наличие множества средств, помогающих и упрощающих процесс программирования.
Скачать файл
В список таких средств можно отнести: просмотр переменных и структур данных на лету, встроенный отладчик, окно отладки, всплывающая подсказка при наборе текста программы (IntelliSense). Вследствие этого применение Visual Basic вне среды разработки, скажем, в стандартном текстовом редакторе, не только неоправданно, но и невозможно.
Visual Basic for Applications (VBA)
Эта разновидность Visual Basic почти не отличается от обычного варианта и разрабатывалась в целях написания макросов и прочих прикладных программ для конкретных приложений. Широкое распространение данный язык получил за счет применения в пакете Microsoft Office. Стоит отметить, что из-за большой популярности Visual Basic for Applications и отсутствия должного контроля безопасности появилось множество макровирусов.
Читайте также
Visual Basic Scripting Edition (VBScript)
Можно сказать, что это немного урезанная версия стандартного Visual Basic. Данный скриптовый язык, как правило, применяется в целях автоматизации администрирования систем на базе Windows, при создании страниц ASP и сценариев для Internet Explorer.
Visual Basic .NET
После выпуска Visual Basic 6.0. был смещен вектор развития технологии. При использовании Visual Basic .NET уже нельзя работать с помощью старых методов, поэтому его можно смело назвать отдельным языком. Это относится и ко всем остальным языкам для платформы .NET.
Индивидуальность языка, как и его основные достоинства (простота, скорость создания программ, лёгкость использования готовых компонентов), уже не столь значимы, ведь акцент смещен в сторону возможностей самой платформы .NET, на ее библиотеки классов.
Специфика VB.NET заключается в его объектной ориентированности. Иными словами, это отдельный объектно-ориентированный язык, который поддерживает наследование, перегрузку операторов, полиморфизм, статическую типизацию. Такое решение дает возможность выполнять задачи по построению крупногабаритных приложений, которые одновременно с этим могут являться гибкими, масштабируемыми и расширяемыми. Такие приложения можно создавать и с использованием обычного Visual Basic 6.0, но это будет гораздо труднее.
Топ-30 самых востребованных и высокооплачиваемых профессий 2023
Поможет разобраться в актуальной ситуации на рынке труда
Подборка 50+ ресурсов об IT-сфере
Только лучшие телеграм-каналы, каналы Youtube, подкасты, форумы и многое другое для того, чтобы узнавать новое про IT
ТОП 50+ сервисов и приложений от Geekbrains
Безопасные и надежные программы для работы в наши дни
Уже скачали 20414
Да, Visual Basic.NET не столь распространен как C++, C# и Java, но вместе с тем он имеет довольно большой потенциал и широкий спектр возможностей. При использовании VB.NET разработчики могут создавать различные типы приложений, включая простые консольные утилиты, графические программы, игровые приложения и сложные нагруженные веб-сервисы
При этом осваивать язык лучше всего с VBA. Дело в том, что он более прост, подразумевает разработку всем известных продуктов и ограничен в области применения, что смещает акцент в обучении именно на язык. Работа с Visual Basic .NET труднее, но интереснее. Для программирования будет необходимо больше времени и справочных ресурсов, однако у данного языка гораздо больше возможностей.
Особенности Visual Basic
Работа с Visual Basic предполагает использование визуальных компонентов и контролов, определение атрибутов и действий для компонентов, создание дополнительного кода для расширения функциональных возможностей.
Благодаря определенным по умолчанию значениям и действиям для компонентов появляется возможность разработать простую программу без написания кода специалистом. В более ранних версиях были некоторые проблемы связанные с производительностью программ, однако нынешние компьютеры и компиляция собственного кода позволяют снизить негативное влияние этого фактора.
Компиляция программ появилась в VB 5, однако исполняемые программы даже на сегодняшний день предполагают наличие определенных библиотек для запуска. Такие библиотеки имеются в Windows 2000 и выше. В более ранних версиях OS они должны поставляться вместе с программой.
Создание форм осуществляется способом drag and drop, что в переводе означает «перетащи и брось». Элементы управления располагаются на форме (к примеру, поля ввода, кнопки и др.). У этих элементов управления имеются собственные атрибуты и обработчики событий. Множество атрибутов предполагают возможность изменения в процессе выполнения программы, поэтому можно разрабатывать программы, которые будут динамически реагировать на действия пользователя.
VB может создать исполняемые программы (EXE файлы), элементы управления ActiveX, библиотеки DLL. Но все же предназначением данного языка является создание программ под OS Windows.
Есть возможность применения диалоговых окон с ограниченными функциональными возможностями для обеспечения подсказок. Управленческие элементы обеспечивают основополагающие возможности функционала программы, при этом специалист может осуществить расширение логики приложения с помощью обработчиков событий.
Скажем, выпадающий список в автоматическом режиме показывает список и дает возможность выбора элемента пользователем. Обработчик событий вызывается в целях выполнения дополнительного кода в зависимости от подобранного элемента.
Язык применяет справочные данные для того чтобы собрать мусор. У него есть обширная библиотека сервисных объектов и объектно-ориентированная разработка. При этом VB не привязан к регистру, что и отличает его от множества других языков. Сравнение строк с одной стороны зависит от регистра, но с другой – может выполняться и без его учета.
Компилятор VB идет совместно с другими языками Visual Studio, такими как C, C++. Вместе с тем из-за ограничений в интегрированной среде разработки у программиста нет возможности разрабатывать определенные типы приложений.
Только до 20.04
Скачай подборку тестов, чтобы определить свои самые конкурентные скиллы
Список документов:
Тест на определение компетенций
Чек-лист «Как избежать обмана при трудоустройстве»
Инструкция по выходу из выгорания
Чтобы получить файл, укажите e-mail:
Подтвердите, что вы не робот,
указав номер телефона:
Уже скачали 7503
Более того, VB имеет еще несколько особенностей:
- Объединены логические и битовые операторы. Это отличает его от всех C подобных языков, например, Java и Perl.
- Так называемая булевская постоянная «истина» имеет числовое значение −1, а «ложь» − 0. Это обусловлено тем, что тип Boolean хранится как 16-разрядное целое число со знаком. Между ними имеется взаимосвязь, осуществляемая посредством логической операции Not. Иными словами, Истина = Не Ложь.
- Целые числа в автоматическом режиме конвертируются в вещественные после применения деления (/). Оператор () осуществляет деление с усечением дробной части.
- Массивы объявляются с определением верхней и нижней границ, точно также как и в Pascal и Fortran. Используя оператор Option Basе, можно определить нижнюю границу по умолчанию, однако такое действие может привести к путанице между программами. Нижняя граница массивов не ограничивается 0 или 1. Есть возможность установки более низких границ, тогда как в VB.NET и VBScript нижняя граница зафиксирована.
- VB объединен с OS Windows и COM.
- Для переменных, объявленных без указания типа, применяется по умолчанию тип variant. Однако после применения оператора Deftype есть возможность выставить и другой тип по умолчанию, например, DefInt, DefBool, DefVar, DefObj, DefStr и т.д. При этом тип по умолчанию можно отменить для переменной после применения специализированного символа-суффикса в имени переменной.
Плюсы и минусы Visual Basic
Ключевым преимуществом этого языка является крайне простой синтаксис. Иными словами, Visual Basic подходит для начинающих программистов. Вместе с тем это не является преградой для применения современных способов создания программных приложений (визуального проектирования и использования объектно-ориентированного подхода).
Имеются и некоторые другие преимущества:
- Можно осуществлять высокоскоростную разработку приложений с графическим интерфейсом для MS Windows.
- Есть защита от ошибок, которые связаны с использованием указателей и доступом к памяти, за счет чего VB приложения являются более стабильными. Однако данный нюанс подвергается критике.
- Можно применять большинство WinAPI функций в целях увеличения функционала приложений. В книге «Visual Basic Programmer’s Guide to the Win32 API» Дэн Эпплман подробно рассматривает эту тему.
- Программист может выбрать компиляцию в машинный код, но и в P-код. Находясь в режиме отладки, программа постоянно компилируется в P-код, причем это не зависит от выбора. Это дает возможность делать паузу в исполнении программы для внесения существенных корректировок в исходный код, после чего продолжать исполнение. Таким образом, нет необходимости в полной перекомпиляции и перезапуске программы.
Но у языка программирования Visual Basic есть и ряд недостатков:
- Поддерживаются операционные системы Windows и Mac OS X и никакие другие (исключением является VB1 for DOS).
- Низкая скорость работы. Это объясняется тем, что почти весь список имеющихся функций языка реализован посредством библиотеки времени исполнения (runtime library). Данная библиотека осуществляет большое количество «излишних» действий в целях проверки и/или преобразования типов.
- Нет механизма наследования реализации объектов. При помощи имеющегося в VB наследования можно наследовать лишь интерфейсы (отсутствует возможность наследования их реализации).
- Необходимо иметь установленную msvbvmXX.dll для использования программы.
Читайте также
При этом все вышеназванные недостатки появляются из-за наличия его ключевого преимущества – легкости разработки графического интерфейса. По этой причине множество разработчиков применяют VB в целях создания интерфейса пользователя, тогда как функциональность программы реализуется в виде динамически подключаемых библиотек (DLL), которые пишутся на другом языке (в большинстве случаев это C++).
На данный момент VB не очень похож на тот язык, что был разработан около полувека назад. Он все еще очень прост, однако имеет множество функций и возможностей, которых не было раньше. Плюс ко всему, Microsoft все еще работает над платформой .NET, поэтому в ближайшее десятилетие он точно будет иметь статус полезнейшего инструмента для любого разработчика.