VB6とVBAの違いとは?改修・移行前の確認ポイント
VB6とVBAは名前が似ているため、既存システムの改修や移行を検討する場面で混同されることがあります。
「古いVBで作られたシステムを直したい」
「Accessで動いているのでVBAだと思う」
「Excelマクロのようなものだが、実行ファイルもある」
「VB6なのかVBAなのか分からないが、古い業務システムを移行したい」
このようなご相談では、最初に「そのシステムが何で作られているか」を確認することが重要です。
VB6とVBAは、どちらもVisual Basic系の技術ですが、使われる場所やシステムの形は異なります。文法が似ている部分はありますが、改修方法、移行先、必要な開発環境、確認すべきファイル、保守の難しさは同じではありません。
この記事では、VB6とVBAの違いを整理しながら、既存システムを改修・移行する前に確認しておきたいポイントを解説します。
VB6とVBAの違いとは
VB6は、Visual Basic 6.0の略称です。Windows上で動く業務アプリケーションを作るために使われてきた開発環境です。
一方、VBAはVisual Basic for Applicationsの略称で、ExcelやAccessなどのMicrosoft Office製品の中で処理を自動化するために使われるプログラムです。
大きな違いは、単独のアプリケーションとして動くか、Office製品の中で動くかです。
VB6で作られたシステムは、通常は「.exe」の実行ファイルとして起動します。販売管理、在庫管理、請求管理、生産管理、顧客管理など、Windows上で専用ソフトのように動く業務システムに使われてきました。
VBAは、ExcelファイルやAccessファイルの中に組み込まれて動くことが多いです。Excelマクロ、Accessのフォーム、帳票作成、CSV取込、データ加工、集計処理などに使われます。
つまり、どちらもVisual Basic系ではありますが、実際のシステムとして見ると、運用方法も保守方法も違います。
VB6で作られたシステムに多いもの
VB6で作られたシステムは、社内専用のWindowsアプリケーションとして使われていることが多くあります。
たとえば、次のような業務システムです。
販売管理、仕入管理、在庫管理、顧客管理、請求管理、入金管理、生産管理、工程管理、受発注管理、見積作成、送り状発行、ラベル印刷、帳票出力などです。
VB6システムは、画面を開いてデータを入力し、検索・登録・印刷を行うような構成が多く見られます。裏側では、Access、SQL Server、Oracleなどのデータベースと接続していることもあります。
また、プリンタやバーコードリーダー、ハンディターミナル、外部システムとのCSV連携など、周辺機器や他システムとつながっているケースもあります。
このようなシステムでは、画面だけを見ても仕組みを判断しにくいことがあります。実行ファイル、データベース、帳票ファイル、OCX、DLL、設定ファイルなどが組み合わさって動いているためです。
VB6の改修や移行では、単に「画面を作り直す」という話ではなく、データの流れ、帳票、印刷、外部連携まで確認する必要があります。
VBAで作られた仕組みに多いもの
VBAは、ExcelやAccessの中で動くプログラムとして使われることが多いです。
Excelであれば、集計表の自動作成、請求データの整形、CSVの取り込み、帳票への転記、複数ファイルの統合、売上表の加工などで使われます。
Accessであれば、テーブル、クエリ、フォーム、レポートを使って、簡易的な業務システムとして使われていることがあります。小規模な販売管理、顧客管理、案件管理、請求管理、在庫管理などで使われるケースがあります。
VBAの特徴は、比較的少人数の部署単位で作られ、そのまま長く使われていることが多い点です。
最初は一担当者が作ったExcelマクロだったものが、いつの間にか部署全体の業務に欠かせない仕組みになっていることもあります。
この場合、作った本人が退職している、仕様書がない、ファイルが複数に分かれている、処理の意味が分からない、Officeのバージョン変更で動かなくなった、といった問題が起きやすくなります。
VBAは便利ですが、業務の中心に入り込んでいる場合は、属人化しやすい点に注意が必要です。
VB6とVBAが混同されやすい理由
VB6とVBAが混同されやすい理由は、文法が似ていることだけではありません。
社内では、どちらもまとめて「VB」「マクロ」「Access」「古いシステム」と呼ばれていることがあります。
たとえば、実際にはVB6で作られたWindowsアプリケーションなのに、担当者が「AccessとつながっているからAccessのシステム」と認識している場合があります。
逆に、Accessで作られたVBAの業務システムなのに、画面がしっかり作り込まれているため、「VB6で作ったソフト」と思われている場合もあります。
また、VB6システムとAccessデータベースが連携しているケースもあります。この場合、画面はVB6、データはAccessという構成になります。
Excel VBAでデータを加工し、その後にVB6システムへ取り込むような運用もあります。
このように、実際の業務ではVB6、VBA、Access、Excel、データベース、CSVが混在していることがあります。そのため、改修や移行を進める前には、名称だけで判断せず、実際に起動しているファイルやデータの流れを確認することが重要です。
まず確認したいファイルの種類
VB6かVBAかを見分けるときは、まず普段どのファイルを開いて業務をしているかを確認します。
「.exe」ファイルを起動している場合は、VB6などで作られたWindowsアプリケーションの可能性があります。
「.xlsm」「.xls」「.xlsx」などのExcelファイルを開き、ボタンやマクロで処理している場合は、Excel VBAの可能性が高くなります。
「.accdb」「.mdb」などのAccessファイルを開いて、フォームやレポートを使っている場合は、Access VBAが使われている可能性があります。
ただし、拡張子だけで完全に判断できるわけではありません。
VB6の実行ファイルがAccessデータベースに接続していることもあります。ExcelファイルがVB6システムへの取込データとして使われていることもあります。Accessが単なるデータ保管場所として使われている場合もあります。
そのため、ファイルの種類を確認したうえで、実際にどのファイルが処理の中心なのかを見る必要があります。
改修前に確認すべきポイント
VB6やVBAの改修を考える場合、最初に確認したいのは「何を直したいのか」だけではありません。
現在のシステムがどのように動いているかを確認することが重要です。
まず、普段起動しているファイルを確認します。EXEなのか、Excelなのか、Accessなのかによって、調査方法が変わります。
次に、ソースコードが残っているかを確認します。
VB6の場合、実行ファイルだけでは改修できません。ソースコード、プロジェクトファイル、フォーム、モジュール、参照設定、関連DLLやOCXなどが必要になります。
VBAの場合、ExcelやAccessのファイル内にコードが残っていることが多いですが、パスワードがかかっている、複数ファイルに分かれている、参照設定が壊れているといったことがあります。
データベースの確認も必要です。
データがExcel内にあるのか、Accessのテーブルにあるのか、SQL Serverなどの外部データベースにあるのかによって、移行方法が変わります。
帳票や印刷の確認も重要です。
業務システムでは、画面よりも帳票の方が実務上重要なことがあります。請求書、納品書、見積書、作業指示書、ラベル、一覧表などがどのように出力されているかを確認する必要があります。
さらに、複数人で同時に使っているかも確認します。
1人で使うExcelマクロと、複数人で同時に使うAccessやVB6システムでは、必要な設計が変わります。同時利用がある場合は、データの整合性やロックの扱いも考える必要があります。
VB6の改修で注意すべきこと
VB6システムの改修では、開発環境と周辺部品の確認が重要です。
VB6は古い開発環境のため、現在のWindows環境で簡単に開発環境を整えられるとは限りません。また、当時使われていたOCX、ActiveX、外部DLL、帳票ツールなどが必要になる場合があります。
画面の項目を少し追加するだけのように見えても、その画面がデータベース、帳票、CSV出力、他システム連携とつながっていれば、影響範囲は広がります。
また、ソースコードが残っていても、そのままビルドできるとは限りません。
参照している部品が不足している、古い帳票ツールが見つからない、開発時の設定が残っていない、データベース接続先が分からない、といったことがあります。
VB6システムでは、長年の改修で処理が複雑になっていることもあります。特定の担当者しか使わない機能、今は使っていない画面、過去の業務ルールが残った処理などが含まれている場合もあります。
そのため、VB6の改修では、いきなり修正作業に入るのではなく、ソースコード、実行環境、データベース、帳票、利用状況を確認したうえで進める必要があります。
VBAの改修で注意すべきこと
VBAの改修では、ExcelやAccessのファイルを開けば中身を確認できることが多いため、VB6より簡単に見える場合があります。
しかし、実際にはVBAにも注意点があります。
Excel VBAの場合、作成者本人のPCでは動くが、他のPCでは動かないというケースがあります。参照設定、ファイルパス、共有フォルダ、プリンタ、Officeのバージョン、セキュリティ設定などに依存しているためです。
また、処理の途中で別のExcelファイルを開く、CSVを読み込む、Accessに接続する、外部システムから出力したファイルを加工する、といった流れになっている場合、全体の処理を把握しないと改修できません。
Access VBAの場合は、テーブル、クエリ、フォーム、レポート、VBAコードが組み合わさっています。画面だけを直せばよい場合もありますが、テーブル構成やクエリの作り方によっては、影響範囲が広くなることがあります。
Accessは小規模な業務システムとして便利ですが、データ量が増えている、複数人で同時利用している、ネットワーク越しに使っている、処理が遅い、ファイル破損が心配、といった状況では、今後の運用方法も含めて検討した方がよい場合があります。
VBAの改修では、単にマクロを直すだけでなく、そのファイルが業務の中でどの位置にあるのかを確認することが大切です。
VB6とVBAでは移行先の考え方も変わる
VB6とVBAでは、移行先の考え方も変わります。
VB6で作られた業務システムの場合、移行先としてはVB.NET、C#、Webシステムなどが候補になります。
既存の画面や操作感をある程度残したい場合、Windowsアプリケーションとして再構築する選択肢があります。一方、複数拠点で使いたい、ブラウザで使いたい、サーバー側でデータを一元管理したい場合は、Webシステム化を検討することもあります。
VBAの場合は、現在の使い方によって選択肢が分かれます。
Excelマクロで十分な場合は、VBAを整理して継続する方法もあります。属人化しているExcelを整理し、入力ルールやフォルダ構成を見直すだけで運用しやすくなることもあります。
Accessで作られた業務システムの場合は、Accessのまま改善する方法、SQL Serverなどのデータベースと組み合わせる方法、Webシステムへ移行する方法などがあります。
重要なのは、VB6だから必ずこの移行先、VBAだから必ずこの移行先、と決めつけないことです。
現在の利用人数、データ量、帳票数、改修頻度、同時利用の有無、今後の業務変更の予定によって、適した方法は変わります。
どちらか分からない場合に用意しておきたい情報
既存システムがVB6なのかVBAなのか分からない場合でも、相談前にいくつかの情報を整理しておくと、調査が進めやすくなります。
まず、普段起動しているファイル名を確認します。EXEなのか、Excelなのか、Accessなのかを確認するだけでも、大まかな方向性が見えます。
次に、画面のスクリーンショットを用意します。ログイン画面、メインメニュー、入力画面、エラー画面などがあると、どのようなシステムか把握しやすくなります。
エラーが出ている場合は、エラーメッセージをそのまま控えておくことが大切です。「エラーが出る」だけでは原因を絞り込めません。エラー番号、ファイル名、表示されるタイミングが分かると、調査しやすくなります。
また、利用人数や利用場所も確認します。1人だけで使っているのか、部署内で共有しているのか、複数拠点で使っているのかによって、対応方法は変わります。
データの保存場所も重要です。ローカルPCに保存しているのか、共有フォルダに置いているのか、サーバー上のデータベースを使っているのかを確認します。
帳票や外部連携がある場合は、それも整理しておきます。請求書、納品書、ラベル、CSV出力、会計ソフト連携、販売管理ソフト連携などがある場合、移行時に見落とすと業務に影響します。
改修で済むか、移行すべきかの判断
VB6やVBAのシステムは、すべてをすぐに移行すべきとは限りません。
現在も安定して動いており、利用人数が少なく、今後大きな変更予定がない場合は、必要な部分だけを改修して使い続ける選択肢もあります。
一方で、次のような場合は、移行や再構築を検討した方がよいことがあります。
担当者が退職して中身が分からない、ソースコードが残っていない、Windows 11への移行で不具合が出ている、Officeのバージョン変更でマクロが動かない、データ量が増えて処理が遅い、複数人利用で不安定になる、帳票や計算ロジックを今後も変更する予定がある、といった場合です。
特に、日常業務の中心になっているシステムは、動いているうちに状態を確認しておくことが大切です。
完全に動かなくなってから調査すると、旧PCが残っていない、作成者がいない、仕様書がない、バックアップがないという状態になり、対応の選択肢が狭くなります。
改修で済むのか、移行すべきなのかは、技術だけでなく業務上の重要度も含めて判断する必要があります。
まとめ
VB6とVBAは、どちらもVisual Basic系の技術ですが、同じものではありません。
VB6は、Windows上で動く業務アプリケーションの開発に使われてきた開発環境です。VBAは、ExcelやAccessなどのOffice製品の中で処理を自動化するために使われます。
文法が似ている部分はありますが、動く場所、必要なファイル、改修方法、移行先は異なります。
既存システムの改修や移行を考える場合は、まずそのシステムがVB6なのか、VBAなのか、Accessなのか、Excelなのか、あるいは複数が組み合わさっているのかを確認することが重要です。
特に、古くから使われている業務システムでは、VB6の実行ファイル、Accessデータベース、Excel VBA、CSV、帳票、プリンタ、共有フォルダなどが混在している場合があります。
そのため、単純に「VBを直したい」「マクロを移行したい」と考えるのではなく、ファイル構成、データの流れ、帳票、利用人数、改修予定、今後の運用まで含めて整理する必要があります。
VB6とVBAの違いを理解しておくことで、改修すべきか、移行すべきか、どの範囲から調査すべきかを判断しやすくなります。