| 
    
     |  | 以下状況にてエラーが発生してしまい苦戦しております。 他力本願で恐縮ですが、どうすれば改善出来るかご教示頂けると幸いです。
 
 <前提>
 ・社内規定によりエクセルファイルにパスワードを設定。
 ・内部管理の観点より週次でパスワード有無チェックを実施。
 ・点検の簡素化のために、退職した前任者がマクロを作成。
 ・今般、エクセル2003から2013にアップデートしたところ、
 マクロが正常に作動しなくなったので修正したい。
 
 <質問事項>
 WEBで調べた結果、Office2007以降FileSearchオブジェクトが
 使用不可となった為、作動しなくなったものと思われる為、
 以下URLを参考に、クラスモジュールへのインポート及び
 「With Application.FileSearch」を「With New FileSearchClass」へ
 変更したところ、「70:書き込みできません」とのエラーが出力されてしまう。
 d.hatena.ne.jp/xixiixiiixiv/20120806/1344258369
 
 <マクロ>
 Option Explicit
 
 Sub samples()
 Application.EnableEvents = False
 Application.DisplayAlerts = False
 ActiveWorkbook.UpdateLinks = xlUpdateLinksNever
 Application.ScreenUpdating = False
 
 
 Dim f, buf As String, cnt, rc As Long, FSO 'As Object
 Set FSO = CreateObject("Scripting.FileSystemObject")
 With Application.FileSearch
 .NewSearch
 buf = "*.xls"
 If buf = "" Or buf = "False" Then Exit Sub
 .FileName = buf
 buf = GetFolder("検索を開始するフォルダを指定してください")
 If buf = "" Then Exit Sub
 .LookIn = buf
 .SearchSubFolders = True
 If .Execute() > 0 Then
 For Each f In .FoundFiles
 cnt = cnt + 1
 
 rc = kensaku(f)
 Cells(cnt, 1) = f
 If rc = 1 Then
 Cells(cnt, 2) = "パスワード有り"
 Else
 Cells(cnt, 2) = "パスワード無し"
 End If
 
 Next f
 Else
 MsgBox "見つかりませんでした"
 End If
 End With
 Set FSO = Nothing
 Application.ScreenUpdating = True
 
 End Sub
 
 Function GetFolder(msg As String)
 Dim Shell, myPath
 Set Shell = CreateObject("Shell.Application")
 Set myPath = Shell.BrowseForFolder(&O0, msg, &H1 + &H10)
 If Not myPath Is Nothing Then
 GetFolder = myPath.Items.Item.Path
 Else
 GetFolder = ""
 End If
 Set Shell = Nothing
 Set myPath = Nothing
 End Function
 
 
 Function kensaku(ByVal f As String) As Integer
 
 
 Dim xlApp As Application
 Dim xlbook As Workbook
 
 Set xlApp = CreateObject("Excel.Application")
 Set xlbook = Nothing
 On Error Resume Next
 Set xlbook = xlApp.Workbooks.Open(f, Password:="", UpdateLinks:=0, ReadOnly:=True, _
 IgnoreReadOnlyRecommended:=True, Notify:=False)
 If Err.Number <> 0 Then
 If Err.Number = 1004 Then
 kensaku = 1
 Else
 kensaku = 0
 Application.DisplayAlerts = False
 xlbook.Close savechanges:=False
 Application.DisplayAlerts = True
 End If
 Else
 End If
 On Error GoTo 0
 Application.DisplayAlerts = False
 'xlbook.saved =true
 xlApp.Quit
 Application.DisplayAlerts = True
 Set xlApp = Nothing
 Set xlbook = Nothing
 End Function
 
 Private Sub commanbutton1_click()
 Application.Run "点検ツール.xls!sheet1.samples"
 End Sub
 
 |  |