Share to: share facebook share twitter share wa share telegram print page

Visual Basic for Applications

Visual Basic for Applications (VBA)
登場時期 1993
設計者 マイクロソフト
開発者 マイクロソフト
最新リリース 7.1 (Office 2021)
型付け 型システム
影響を受けた言語 QuickBASIC, Microsoft Visual Basic
プラットフォーム Microsoft Windows, macOS
ライセンス プロプライエタリ EULA
テンプレートを表示

Visual Basic for Applications(ビジュアルベーシック・フォー・アプリケーションズ、VBA)は、主にマイクロソフト製のMicrosoft Officeシリーズに搭載されているプログラミング言語である。

概要

マイクロソフトが1990年代に開発していた汎用プログラミング言語・Microsoft Visual Basicを、同社製品のMicrosoft Officeに搭載したものがVBAである。VBAを使用することで、ExcelAccessWordOutlookPowerPointなど、Officeのアプリケーション・ソフトウェアの機能をカスタマイズしたり、拡張したりすることができる。

Microsoft OfficeシリーズにはVBAのソースコード作成・編集ソフトウェアおよびプログラム実行環境が最初から付属しているため、使用を始めるにあたり、Office以外の特別なソフトウェアの用意やセッティングを必要としない。文献やネット情報も多く、最低限の学習で誰でも手軽にプログラミングを始められる。また、プログラムの実行が容易なことも特徴である。C言語などではソースコードを書き上げてからコンピュータに実行させる前に機械語に変換して実行プログラム形式として出力するためのコンパイルおよびリンク(ビルド)作業が必要だが、VBAは疑似コード (Pコード) ベースのコンパイラ型およびインタプリタ型両方の性質を持っており[1]、ユーザーが記述したソースコードを1アクションで自動的に疑似コードにコンパイルして直接コンピュータに実行させることができる。手軽に利用できる一方で、汎用プログラミング言語に共通の機能は一通り備えており、高度な機能まで修得しようとすると相応の学習が必要である。

機能・用途

  • 定型業務の自動化、省力化。例えば、毎日更新されるデータを出社してからいちいち手入力し、手順を入力して計算させていた業務を、夜の間に自動でソフトウェアを起動し、データを読み込ませ、朝までに処理させておける。またOfficeアプリケーションではマクロ記録/再生という操作手順の記録/再生機能を使って、プログラムに関する知識が少ないユーザーでも、ある程度の定型業務の自動化を行なえる。マクロはVBAコードの自動生成により実現されている。
  • 特定の使用目的への最適化。例えばある会社で、社員の一覧名簿を作成し、自社独自の給与体系に従い、各自の給与を自動で計算できる。またその場合、考慮する数字を自動で参照して集計するなど、目的に応じた特殊な関数を作成することもできる(ユーザー定義関数という)。また、ユーザー独自のフォームを作成でき、様々なプラグインを組み込むことなども可能である。
  • Officeの使用に特化しMicrosoft Office専用という印象が強いが、限定的ながらInternet ExplorerなどOffice以外のソフトウェアを制御する機能が与えられているほか、フォルダを作成する、ファイル名を変更するといったOS上の操作も行うことができる。またマイクロソフト社からしかるべきライセンスを取得することで他のアプリケーションに組み込むことも可能である。実際、マイクロソフト社に買収される前のVisioにも搭載されていた。CADソフトのAutoCADMicroStation V8等にも搭載されている。

VBAの歴史

  • VBA は 1993年 (日本では1994年) に MS Excel 5.0 で初めて発売された。それは瞬く間に開発者の間で、Excel を使用して企業ソリューションを作成するツールとして成功を収めた。AccessBASIC とWordBASIC を置き換え、Microsoft Project、Access と Word に VBA が搭載されたことで、VBA はより一般的になった。
  • VBA 4.0は、以前のものと比較して完全にアップグレードされたメジャーリリースとなった。1996年にリリースされ、C++で書かれ、オブジェクト指向言語となった。
  • VBA 5.0 は、1997年に MS Office 97 に含まれるすべての製品と共に発売された。ただし、VBScript を実装した Outlook 97 は例外。
  • VBA 6.0 および VBA 6.1 は 1999年に発売され、特に Office 2000 の COM アドインをサポートした。 VBA 6.2 は Office 2000 SR-1 と共にリリースされた。
  • VBA 6.3 は Office XP と一緒にリリースされ、VBA 6.4 では Office 2003、VBA 6.5 は Office 2007 でリリースされた。
  • Office 2010 には VBA 7.0 が搭載された。VBA 7 には、64 ビットサポート以外に、VBA 6.5 と比べて開発者向けの新機能はない。ただし、VBA 6.5/Office 2007 以降、マイクロソフトは他のアプリケーション向けの VBA のライセンスを停止した。
  • Office 2013、Office 2016、Office 2019、及び Office 2021には VBA 7.1 が搭載されている。

近年の動向

2007 年 7 月 1 日以降、マイクロソフトは新規顧客への VBA 再配布ライセンス提供を停止した。マイクロソフトは、.NET Framework のリリース以降、ずっと VBA に .NET ベースの言語を追加しようとしてきた。[2].NET Frameworkバージョン1.0 および 1.1 には Script for the .NET Framework というスクリプト ランタイム テクノロジが搭載されていた。[3]また、Visual Studio .NET 2002 および 2003 SDK には、VB.NETをサポートする Visual Studio for Applications (VSA)という別のスクリプト IDEが含まれていた。[4][5][6] VSAの重要な特徴の一つは、Active Scripting (VBScript および JScript)を通して利用が可能であり、.NETが使えないアプリケーションを.NET 言語を使用してスクリプト化することができたことだった。しかし、VSA は、Active Scriptingのサポートを望むアプリケーションの明確なアップグレード パスがないまま.NET Framework のバージョン 2.0 でサポート対象外となった[6]。 (C#VBScript、他の.NET言語で「スクリプト」の作成は引き続き可能で、ランタイムの一部としてインストールされたライブラリを介して実行時にコンパイルおよび実行することはできる。)

マイクロソフトは、Microsoft Office 2008 for Mac でVBA サポートを一度廃止した。[7][8]しかしMicrosoft Office for Mac 2011 でVBA は復活することとなった。マイクロソフトは、Windows バージョンの Office から VBA を削除する計画はないと述べている。[9][10]

Office 2010 では、マイクロソフトは真のポインター データ型 LongPtr をサポートする VBA7 を導入した。これにより、64 ビットのアドレス空間を参照できるようになった。Office 2010 の 64 ビット インストールでは、MSComCtl (TabStrip, Toolbar, StatusBar, ProgressBar, TreeView, ListViews, ImageList, Slider, ImageComboBox) および MSComCt2 (Animation, UpDown, MonthView, DateTimePicker, FlatScrollBar)といったコモンコントロールに依存するレガシーな32ビットコードは64ビットVBAコードに移植しても機能しない。これは、32 ビット バージョンの Office 2010 では発生しない。[11] VBA7 には 64 ビットバージョンのコモンコントロールが含まれていないため、開発者は VBA アプリケーションを 64 ビットに移行する手段がないことになる。マイクロソフトでは、64 ビット バージョンの VBA コントロールについてソフトウェア ベンダに問い合わせるように誘導している。

資格検定試験

いずれも、パソコンスクール運営の株式会社オデッセイ コミュニケーションズが実施する民間資格である。全国のパソコン教室などを会場に随時予約可能。受験料は1万数千円程度。

※また、日本の国家試験である基本情報技術者試験表計算ソフトの問題にも、VBA風の擬似言語を用いたマクロ定義の内容が出題されている。

コード例

以下は、Excelにおいて、「Alpha」という名前のワークシートを削除するVBAの例である。

Application.DisplayAlerts = False
Worksheets("Alpha").Delete
Application.DisplayAlerts = True

また、Excelで以下のコードを実行すると、セルA1からI9の範囲に掛け算九九の表を作成することができる。

For i = 1 To 9
    For j = 1 To 9
        Cells(i, j).Value = i * j
    Next
Next

下記のように配列を用いて、全ての値を配列に格納した上で一度に出力するように上記のコードを書き換えると、高速に動作するコードになる。

Dim KukuArray(8, 8) As Integer

For i = 1 To 9
    For j = 1 To 9
        KukuArray(i - 1, j - 1) = i * j
    Next
Next

Range("A1:I9").Value = KukuArray

条件によって4色以上に色を塗り分けるときも、VBAを利用する(3色以下のときは一般機能の「条件付き書式」を使用するのが望ましい)。以下のコードを実行するとセルB2からE15までの範囲内のセルを5以下→水色、6以上10以下→明るい緑、11以上15以下→黄色、16以上→赤と塗り分けることができる。

Dim myCell As Range

For Each myCell In Range("B2:E15")
    Select Case myCell.Value
    Case Is <= 5
        myCell.Interior.Color = RGB(0, 255, 255)
    Case 6 To 10
        myCell.Interior.Color = RGB(0, 255, 0)
    Case 11 To 15
        myCell.Interior.Color = RGB(255, 255, 0)
    Case Is > 15
        myCell.Interior.Color = RGB(255, 0, 0)
    End Select
Next

以下は、VBAと共にExcelごとプログラムを終了するVBAの例である。

Application.Quit

ユーザー定義関数

VBAを用いて、ユーザーが新たに関数を作成することもできる。ユーザー定義関数を作成するにはFunctionプロシージャを用いる。以下はHERONという名でヘロンの公式を用いるユーザー定義関数のコードである。実用には、負の値や三角条件を満たさない値が入力されることを想定して、下記のコードにエラー処理ルーチンを追加しておくことが望ましい。

定義したユーザー定義関数は通常の(組み込みの)ワークシート関数同様、数式の中で用いることで呼び出す。この例で言えば、=HERON(3,4,5)とセルに入力すると、数式を入力したセルに演算結果として6と出力される。

Function HERON(1, 2, 3) As Variant
    
    s = (1 + 2 + 3) / 2
    HERON = Sqr(s * (s - 1) * (s - 2) * (s - 3))

End Function

VBAのセキュリティ問題

他の一般的なプログラミング言語と同様に、VBA では悪意のあるマクロウイルスを作成できてしまう。VBA では、セキュリティ機能のほとんどは作成者ではなくユーザーの手に委ねられる。VBA のホストアプリケーションでは、ユーザーはオプションを事前に設定でき、マクロをアプリケーションで実行できないようにしたり、ドキュメントのソースが信頼できる場合にのみ VBA コードを実行するアクセス許可を付与したりして、攻撃から身を守ることができる。

Office 2000 SP3以降はセキュリティが強化され、初期設定ではVBAマクロは無効化されている[12]。そのため、マクロを含むファイルを開いただけでプログラムが実行されることはないが、設定次第でセキュリティレベルを下げることもできてしまう[13]。また、Office 2007 以降に一般的となった新しいファイル形式 (.xlsx など) ではマクロを含むことができないので、安全性がより高まった。

関連項目

脚注

  1. ^ ACC2000: Visual Basic for Applications Is Both a Compiler and an Interpreter / Internet Archive
  2. ^ Visual Studio for Applications”. 2007年12月17日時点のオリジナルよりアーカイブ。2007年12月17日閲覧。
  3. ^ Introducing Visual Studio for Applications”. msdn.microsoft.com. 2007年12月17日閲覧。
  4. ^ Script Happens .NET”. msdn.microsoft.com. 2007年12月17日閲覧。
  5. ^ Microsoft Takes Wraps Off VSA Development Technology”. 2007年12月17日時点のオリジナルよりアーカイブ。2007年12月17日閲覧。
  6. ^ a b VSA scripting in .NET”. 2007年2月11日時点のオリジナルよりアーカイブ。2007年12月17日閲覧。
  7. ^ WWDC: Microsoft updates Universal status of Mac apps”. Macworld (2006年8月7日). 2007年5月25日閲覧。
  8. ^ What is Microsoft Office and Office 365 – FAQs”. 2017年12月17日閲覧。
  9. ^ The Reports of VBA’s Demise Have Been Greatly Exaggerated”. 2008年12月17日閲覧。
  10. ^ Clarification on VBA Support”. 2008年12月17日閲覧。
  11. ^ Compatibility Between the 32-bit and 64-bit Versions of Office 2010”. msdn.microsoft.com. 2010年12月17日閲覧。
  12. ^ Excelの「マクロのセキュリティ」とは? | 日経 xTECH(クロステック)
  13. ^ Excel のマクロのセキュリティ設定を変更する - Excel

外部リンク

Read other articles:

1999 studio album by Mouse on MarsNiun NiggungStudio album by Mouse on MarsReleased1999 (1999)GenreIDMglitchdrill 'n' bassLength62:04LabelRough Trade Records, Thrill Jockey, Domino Recording Company, SonigProducerJan St. Werner, Andi TomaMouse on Mars chronology Glam(1998) Niun Niggung(1999) Idiology(2001) Alternative coverThrill Jockey edition Professional ratingsReview scoresSourceRatingAllMusic[1]Exclaim!favorable[2]Pitchfork7.9/10[3]PopMattersfavorable …

NtrepidCompany typeSoftware, hardware, and cyber security companyFoundedOctober 25, 2010 (2010-10-25)HeadquartersHerndon, Virginia, U.S.ProductsPassagesIONNfusionTimestreamTartanVirtusELUSIVSubsidiariesAnonymizerWebsitentrepidcorp.com Ntrepid is an American software, hardware, and cyber security company, registered in Florida and based in Herndon, Virginia.[1][2][3] History In 2008, the Anonymizer company was acquired by the Abraxas Corporation, which was p…

العلاقات الجزائرية اللوكسمبورغية الجزائر لوكسمبورغ   الجزائر   لوكسمبورغ تعديل مصدري - تعديل   العلاقات الجزائرية اللوكسمبورغية هي العلاقات الثنائية التي تجمع بين الجزائر ولوكسمبورغ.[1][2][3][4][5] مقارنة بين البلدين هذه مقارنة عامة ومرجعية لل…

نظام الحكممعلومات عامةصنف فرعي من أشكال الدولةadministrative type (en) نظام سياسي لديه جزء أو أجزاء نظام مؤسسيحقوق مدنيةإدارة عامة صنف بنيوي لـ حكومة تعديل - تعديل مصدري - تعديل ويكي بيانات نظام الحكم هو مجموعة من المؤسسات السياسية التي تكون الحكومة وتنظم عملها.[1][2] انواعه يوج…

Pour les articles homonymes, voir Cvijić. Jovan CvijićBuste de Jovan Cvijić.FonctionsRecteur de l'université de Belgrade1919-1920Đorđe Stanojević (en)Slobodan JovanovićRecteur de l'université de Belgrade1906-1907Sima LozanićAndra StevanovićBiographieNaissance 11 octobre 1865Loznica (Principauté de Serbie)Décès 16 janvier 1927 (à 61 ans)Belgrade (royaume des Serbes, Croates et Slovènes)Sépulture Nouveau cimetière de BelgradeNom dans la langue maternelle Јован Цвиј…

Hymn for the WeekendLagu oleh Coldplaydari album A Head Full of DreamsDirilis25 Januari 2016FormatUnduhan digitalGenreR&B Pop dansaDurasi4:18LabelParlophonePenciptaGuy Berryman Jonny Buckland Will Champion Chris MartinProduserRik Simpson Stargate Digital Divide AviciiVideo musikHymn for the Weekend di YouTube Hymn for the Weekend (Indonesia: Himne untuk Akhir Pekancode: id is deprecated ) adalah sebuah lagu oleh band rock asal Britania Raya, Coldplay dan dilengkapi dengan vokal tanpa kredit …

رودأب روداب city الاسم الرسمي Rud Ab الإحداثيات 35°36′59″N 57°18′10″E / 35.61639°N 57.30278°E / 35.61639; 57.30278 تقسيم إداري  الدولة  إيران  المحافظة خراسان رضوي  المقاطعة مقاطعة سبزوار  الناحية Rud Ab خصائص جغرافية ارتفاع 891 متر  عدد السكان (2006)  المجموع 3٬470 معلومات أخرى م…

French football manager (born 1962) Pascal Dupraz Dupraz as Evian manager in 2013Personal informationFull name Pascal Fernand Dupraz[1]Date of birth (1962-09-19) 19 September 1962 (age 61)[2]Place of birth Annemasse, FranceHeight 1.72 m (5 ft 8 in)[3]Position(s) StrikerSenior career*Years Team Apps (Gls)1980–1981 Sochaux 4 (0)1980–1982 Thonon 27 (5)1982–1986 Brest 70 (13)1986–1987 Mulhouse 31 (3)1987–1989 Toulon 28 (1)1989–1991 Gueugnon 37 …

Синелобый амазон Научная классификация Домен:ЭукариотыЦарство:ЖивотныеПодцарство:ЭуметазоиБез ранга:Двусторонне-симметричныеБез ранга:ВторичноротыеТип:ХордовыеПодтип:ПозвоночныеИнфратип:ЧелюстноротыеНадкласс:ЧетвероногиеКлада:АмниотыКлада:ЗавропсидыКласс:Птиц…

Links between different language versions of Wikipedia For style guidelines about links, see MOS:LINK. For linking between Wikimedia sister projects (e.g. from Wikipedia to Wiktionary), see Help:Interwiki linking. For a list of Wikipedias in other languages with their language codes, see List of Wikipedias § Details table. For a list of interlanguage codes, see list of ISO 639-1 codes and meta:List of Wikipedias. This help page is a how-to guide.It details processes or procedures of some aspec…

Pour les articles homonymes, voir López, Juan Pérez et Pérez. López Pérez est un nom espagnol. Le premier nom de famille, paternel, est López ; le second, maternel, souvent omis, est Pérez. Juan Pedro LópezJuan Pedro López lors du Tour d'Italie 2022InformationsNoms courts Хуан Педро Лопес, Juan Pedro LópezNaissance 31 juillet 1997 (26 ans)LebrijaNationalité espagnoleÉquipe actuelle Lidl-TrekSpécialité GrimpeurÉquipes amateurs 2010-2014PC Trebujena2015Specia…

Fungus capable of radiosynthesis This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Radiotrophic fungus – news · newspapers · books · scholar · JSTOR (February 2014) (Learn how and when to remove this message) Cryptococcus neoformans stained with light India ink Radiotrophic fungi are fungi that can perform the hy…

Former borough of Wrocław in Lower Silesian Voivodeship, PolandKrzyki German: KrieternFormer borough of WrocławLocation of Krzyki within WrocławCountry PolandVoivodeshipLower SilesianCounty/CityWrocławEstablished1952Dissolved1990Population (2022) • Total170,877 [1]Time zoneUTC+1 (CET) • Summer (DST)UTC+2 (CEST)Area code+48 71 Former borough in Wrocław, Poland Krzyki (Polish pronunciation: [ˈkʂɨki], German: Krietern, [ˈkʁiːtɛ…

Member of a religious group sent into an area to promote their faith For other uses, see Missionary (disambiguation). Mission partner redirects here. For other uses, see Mission (disambiguation) and Partner (disambiguation). This article may lend undue weight to certain ideas, incidents, or controversies. Please help improve it by rewriting it in a balanced fashion that contextualizes different points of view. (July 2021) (Learn how and when to remove this message) Catholic missionaries in Papua…

この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)出典検索?: コルク – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL(2017年4月) コルクを打ち抜いて作った瓶の栓 コルク(木栓、蘭&…

Um Lugar ao SolGenreTelenovelaPembuatLícia ManzoDitulis oleh Carla Madeira Cecília Giannetti Leonardo Moreira Marta Góes Sutradara Maurício Farias André Câmara Pemeran Cauã Reymond Alinne Moraes Andreia Horta Penggubah lagu tema Manu Chao Russo Passapusso Marcelo Seko Roberto Barreto Lagu pembukaSulamericanooleh BaianaSystem menampilkan Manu ChaoNegara asalBrasilBahasa asliPortugisJmlh. musim1Jmlh. episode119 (70 versi internasional)ProduksiProduser Andrea Kelly Juliana Castro Penyunting …

泰国陆军元帅他侬·吉滴卡宗ถนอม กิตติขจรPChW SR MPCh MWM第10任泰國總理任期1963年12月9日—1973年10月14日君主拉玛九世前任沙立·他那叻元帥继任訕耶·探瑪塞任期1958年1月1日—1958年10月20日君主拉玛九世前任乃朴·沙拉信继任沙立·他那叻元帥第32任泰國國防部長任期1957年9月23日—1973年10月14日前任鑾披汶·頌堪继任他威·尊拉塞(英语:Dawee Chullasapya) 个人资料出生(…

拉吉夫·甘地राजीव गांधीRajiv Gandhi1987年10月21日,拉吉夫·甘地在阿姆斯特丹斯希普霍尔机场 第6任印度总理任期1984年10月31日—1989年12月2日总统吉亞尼·宰爾·辛格拉马斯瓦米·文卡塔拉曼前任英迪拉·甘地继任維什瓦納特·普拉塔普·辛格印度對外事務部部長任期1987年7月25日—1988年6月25日前任Narayan Dutt Tiwari(英语:Narayan Dutt Tiwari)继任納拉辛哈·拉奥任期1984年10月31…

2016年美國總統選舉 ← 2012 2016年11月8日 2020 → 538個選舉人團席位獲勝需270票民意調查投票率55.7%[1][2] ▲ 0.8 %   获提名人 唐納·川普 希拉莉·克林頓 政党 共和黨 民主党 家鄉州 紐約州 紐約州 竞选搭档 迈克·彭斯 蒂姆·凱恩 选举人票 304[3][4][註 1] 227[5] 胜出州/省 30 + 緬-2 20 + DC 民選得票 62,984,828[6] 65,853,514[6] 得…

2020年夏季奥林匹克运动会波兰代表團波兰国旗IOC編碼POLNOC波蘭奧林匹克委員會網站olimpijski.pl(英文)(波兰文)2020年夏季奥林匹克运动会(東京)2021年7月23日至8月8日(受2019冠状病毒病疫情影响推迟,但仍保留原定名称)運動員206參賽項目24个大项旗手开幕式:帕维尔·科热尼奥夫斯基(游泳)和马娅·沃什乔夫斯卡(自行车)[1]闭幕式:卡罗利娜·纳亚(皮划艇)[2…

Kembali kehalaman sebelumnya