Excelのデータを安全に保存するため、特定のアカウントからのみアクセス可能なバックアップを設定する方法を探していますか? VBAを利用すれば、このような独自の設定が可能です。この記事では、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を利用することで、特定のアカウントからのみアクセス可能なバックアップ先を簡単に設定できます。今回紹介した基本的なコードと応用例を参考に、ご自身の環境に合わせてカスタマイズしてみてください。
コメント