Excel VBAを用いた特定アカウント専用のバックアップ設定方法

Excelのデータを安全に保存するため、特定のアカウントからのみアクセス可能なバックアップを設定する方法を探していますか? VBAを利用すれば、このような独自の設定が可能です。この記事では、VBAで特定アカウント専用のバックアップ先を設定する手順やコードについて詳しく説明します。

目次

Excel VBAの基本

Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。

そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。

基本的な手法

Excel VBAを使って特定のアカウントからのみアクセス可能なバックアップ先を設定する方法について考えます。この手法には、ファイルの保存先を指定し、特定のアカウントでしかアクセスできないようにする設定を組み合わせることで実現します。


Sub SetBackupLocation()

Dim backupPath As String
Dim myAccount As String

' バックアップの保存先を設定
backupPath = "C:\Backup\"
' 特定のアカウント名を設定
myAccount = Environ("USERNAME")

If myAccount = "YourSpecificAccount" Then
    ThisWorkbook.SaveCopyAs backupPath & "Backup_" & Format(Now, "YYYYMMDD") & ".xlsx"
Else
    MsgBox "このアカウントではバックアップを取得できません。"
End If

End Sub

上記コードの解説

1. **backupPath**: バックアップの保存先として、ここでは “C:\Backup\” を指定しています。
2. **myAccount**: 実行中のコンピュータのログインアカウント名を取得します。
3. **If文**: ログインアカウントが指定したアカウント名と一致する場合のみ、バックアップを取得します。それ以外の場合は、メッセージボックスで警告を表示します。

応用例

応用例1: 複数アカウント対応

特定のアカウントだけでなく、複数のアカウントからバックアップを取得する場合のコードです。


Sub MultiAccountBackup()

Dim backupPath As String
Dim myAccount As String
Dim allowedAccounts() As Variant

backupPath = "C:\Backup\"
myAccount = Environ("USERNAME")

' 許可されたアカウントのリスト
allowedAccounts = Array("Account1", "Account2", "Account3")

If IsInArray(myAccount, allowedAccounts) Then
    ThisWorkbook.SaveCopyAs backupPath & "Backup_" & Format(Now, "YYYYMMDD") & ".xlsx"
Else
    MsgBox "このアカウントではバックアップを取得できません。"
End If

End Sub

' アカウントが許可されたリストに存在するか確認する関数
Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean
    IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1)
End Function

応用例2: バックアップ先の変更

ユーザーがバックアップ先を自分で指定できるようにするコードです。


Sub UserSpecifiedBackupLocation()
Dim backupPath As String
Dim myAccount As String
myAccount = Environ("USERNAME")
' ユーザーにバックアップ先を入力させる
backupPath = InputBox("バックアップの保存先を指定してください。", "バックアップ先指定")
If myAccount = "YourSpecificAccount" And backupPath <> "" Then
    ThisWorkbook.SaveCopyAs backupPath & "Backup_" & Format(Now, "YYYYMMDD") & ".xlsx"
Else
    MsgBox "このアカウントではバックアップを取得できません、または保存先が無効です。"
End If
End Sub

応用例3: 最後のバックアップ日時の表示

前回のバックアップ日時をメッセージボックスで表示するコードです。


Sub LastBackupDate()

Dim backupPath As String
Dim myAccount As String
Dim lastBackup As Date

backupPath = "C:\Backup\"
myAccount = Environ("USERNAME")

If myAccount = "YourSpecificAccount" Then
    lastBackup = FileDateTime(backupPath & "Backup_" & Format(Now, "YYYYMMDD") & ".xlsx")
    MsgBox "最後のバックアップは " & lastBackup & " に取得されました。"
Else
    MsgBox "このアカウントではバックアップの情報を取得できません。"
End If

End Sub

まとめ

Excel VBAを利用することで、特定のアカウントからのみアクセス可能なバックアップ先を簡単に設定できます。今回紹介した基本的なコードと応用例を参考に、ご自身の環境に合わせてカスタマイズしてみてください。

VBAも良いけどパワークエリも良い

VBAの解説をしてきましたが、VBAは正直煩雑でメンテナンス性が悪いです。最近はモダンExcelと呼ばれるパワークエリやパワーピボットへのシフトが進んできています。本サイトでもパワークエリの特集をしており、サンプルデータを含む全11回の学習コンテンツでパワークエリを習得することができます。

クリックするとパワークエリの全11講座が表示されます。

パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください

コメント

コメントする

目次