Excelスキルアップコレクション
           〜 Something U Want 〜


Google  

WWW を検索
Excelスキルアップコレクション内 を検索
 @     Top  >     Excelプロフェッショナルエンジニアテクニック Topics  >     (02) 複数のファイルに存在する個人情報を一度に削除する

 
(02) 複数のファイルに存在する個人情報を一度に削除する

 Excelファイルにはファイルの作成者に関する情報が残されます。この個人情報の削除方法については、「(13) ファイルを保存する際に個人情報を削除する」で紹介しました。しかし、複数のファイルの個人情報の削除を一つずつ手作業で実行するのは面倒臭い作業です。VBAにて、特定のフォルダ配下の全ファイルの個人情報を削除するコードを紹介します。

 次のサンプルコードは、最初に指定したフォルダ配下のすべてのExcelファイルの個人情報を削除するコードです。

 1行目:  Option Explicit
 2行目:  
 3行目:  Public Sub Sample_RefExcelFiles_01()
 4行目:  
 5行目:      ' 『フォルダ参照』ダイアログを利用して、フォルダを特定する。
 6行目:      Dim folderName As Variant
 7行目:      Set folderName = CreateObject("Shell.Application") _
 8行目:                          .BrowseForFolder( _
 9行目:                                  &O0 _
10行目:                                  , "フォルダ選択" _
11行目:                                  , &H1 + &H10 _
12行目:                                  , "デスクトップ")
13行目:      
14行目:      ' フォルダが選択されたか否か判別する。
15行目:      If folderName Is Nothing Then
16行目:          MsgBox "中止します"
17行目:          Exit Sub
18行目:      End If
19行目:  
20行目:      ' 単純なループカウンタ
21行目:      Dim lp1 As Long, lp2 As Long
22行目:  
23行目:      ' FileSystemObjectを作成する。
24行目:      Dim Obj As Object
25行目:      Set Obj = CreateObject("Scripting.FilesystemObject")
26行目:  
27行目:      ' 選択されたフォルダ配下に存在するファイル名を取出す為の変数
28行目:      Dim fileName As String
29行目:      Dim fileNames() As String
30行目:      ReDim fileNames(0) As String
31行目:  
32行目:      ' 選択されたフォルダ配下に存在するファイル名を取出す
33行目:      fileName = Dir(folderName.Self.Path & "\*.xls")
34行目:      Do While fileName <> vbNullString
35行目:          ' ファイル名を配列に取込む。
36行目:          ReDim Preserve fileNames(UBound(fileNames) + 1) As String
37行目:          fileNames(UBound(fileNames)) = _
38行目:              folderName.Self.Path & "\" & fileName
39行目:          fileName = Dir()
40行目:      Loop
41行目:  
42行目:      ' 全てのExcelファイルを順次開いて閉じる。
43行目:      For lp1 = 1 To UBound(fileNames)
44行目:      
45行目:          ' Excelファイルを書き込み可能で開く。
46行目:          Workbooks.Open _
47行目:              fileName:=fileNames(lp1) _
48行目:              , ReadOnly:=False
49行目:  
50行目:          ' 開いたファイルのブック名を取得する。
51行目:          Dim bookName As String
52行目:          bookName = Obj.GetFileName(fileNames(lp1))
53行目:          
54行目:          ' 開いたファイルの個人情報の削除を可能にする。
55行目:          Workbooks(bookName).RemovePersonalInformation = True
56行目:          
57行目:          ' 開いていたExcelファイルを保存して閉じる。
58行目:          Application.DisplayAlerts = False
59行目:          Workbooks(bookName).Close SaveChanges:=True
60行目:          Application.DisplayAlerts = True
61行目:  
62行目:      Next
63行目:      
64行目:      ' メモリを解放する。
65行目:      Erase fileNames
66行目:      
67行目:      ' オブジェクトを破棄する。
68行目:      Set Obj = Nothing
69行目:      Set folderName = Nothing
70行目:  
71行目:  End Sub
 このプログラムを実行すると、最初に以下のような『フォルダ参照』ダイアログが起動します。個人情報を削除したいExcelファイルを集めたフォルダをここで選択します。
 プログラム実行後、Excelファイルを見ると、個人情報は全て削除されています。
  
ページの先頭へ