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講座が表示されます。
-
【初心者向け】パワークエリ入門:ETLツールを使ってエクセルデータを簡単に整形・統合しよう!(1/11)
-
【実践ガイド】パワークエリでデータ収集:Excel、CSV、PDF、Webデータを簡単に取り込む方法をマスターしよう!(2/11)
-
【総力特集】パワークエリで列操作をマスター:選択、変更、移動、削除、結合、分割の詳細解説&実践テクニック!(3/11)
-
【徹底解説】パワークエリで行操作をマスター!フィルター・保持・削除テクニックと練習用エクセルで実践学習(4/11)
-
パワークエリでデータクレンジング: 文字列結合、0埋め、テキスト関数をマスター(5/11)
-
パワークエリで四捨五入、切り捨て、切り上げをマスターする方法(6/11)
-
パワークエリで効率的なデータグループ化を実現する方法(7/11)
-
パワークエリで時間と日付の計算をマスター!便利な関数を使って効率アップ(8/11)
-
パワークエリで条件別集計をマスターする方法(9/11)
-
Excelパワークエリでクロス集計表とデータベース形式を瞬時に変換する方法(10/11)
-
Excelパワークエリ入門: 効率的なデータ整理をマスターしよう!(11/11)
パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください
コメント