このキーワード
友達に教える
URLをコピー

Visual_Basic_for_Applicationsとは?

この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。
出典を追加して記事の信頼性向上にご協力ください。(2016年12月)
Visual Basic for Applications (VBA)
【登場時期】
1993
【設計者】
マイクロソフト
【開発者】
マイクロソフト
【最新リリース】
7.1 (Office 2019)
型付け
型システム
【影響を受けた言語】
QuickBASIC, Microsoft Visual Basic
プラットフォーム
Microsoft Windows, macOS
ライセンス
Proprietary 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アクションで自動的に疑似コードにコンパイルして直接コンピュータに実行させることができる。手軽に利用できる一方で、汎用プログラミング言語に共通の機能は一通り備えており、高度な機能まで修得しようとすると相応の学習が必要である。

機能・用途

VBAの歴史

近年の動向

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

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

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 では発生しない。 VBA7 には 64 ビットバージョンのコモンコントロールが含まれていないため、開発者は VBA アプリケーションを 64 ビットに移行する手段がないことになる。マイクロソフトでは、64 ビット バージョンの VBA コントロールについてソフトウェア ベンダに問い合わせるように誘導している。

資格検定試験

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

コード例

以下は、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マクロは無効化されている。そのため、マクロを含むファイルを開いただけでプログラムが実行されることはないが、設定次第でセキュリティレベルを下げることもできてしまう。また、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. ^ 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

外部リンク

Microsoft Office
【アプリケーション】
【デスクトップ】

【サーバー】

【モバイル】

【ウェブ】

【過去】

【関連】

 | 
【技術】

カテゴリ ブック

BASIC
【古典的BASIC】

【現代化BASIC】

オブジェクト拡張

マイクロソフト

【その他】



・・・・・・・・・・・・・・・・・・
出典:wikipedia
2020/06/05 14:54

HAPPY Wikipedia

あなたの考える「Visual_Basic_for_…」の意味を投稿しよう
「Visual_Basic_for_Applications」のコンテンツはまだ投稿されていません。
全部読む・投稿 

Visual_Basic_for_Applicationsスレッド一覧

・・・・・・・・・・・・・・・・・・
「Visual_Basic_for_Applications」のスレッドを作成する
Visual_Basic_for_Applicationsの」
友達を探す
掲示板を探す
このページ
友達に教える
URLをコピー

注目のキーワード

錦織圭/北島康介/2014_FIFAワールドカップ・アジア予選/サッカー日本女子代表/消費税/東京スカイツリー/ダルビッシュ有/イチロー/香川真司/野田内閣/復興庁/石川遼/HKT48/AKB48/ワールド・ベースボール・クラシック日本代表/黒田博樹/尖閣諸島/バレンタインデー/ONE_PIECE

キーワードで探す

 
友達を探す
掲示板を探す
ハッピーWiki
ハッピーメール
ハッピーランド
HAPPY NEWS
2010Happy Mail