[[20180711113124]] 『VBA パスワードの解除と読み取り推奨の解除』(Kid) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBA パスワードの解除と読み取り推奨の解除』(Kid)

同じパスワードのかかったファイルが100以上入ったフォルダがあります。
パスワードを解除して保存するまでのVBAはいろいろなサイトを参考に組めたのですが、最近、担当者の変更とともにファイル形式が変更されてしまいました。読み取り推奨で開くように聞いてきます。いちいち「いいえ」を選んで、保存する際に読み取り推奨のチェックを外すのが大変なので、自動的に、パスワード入力、読み取り専用「いいえ」、パスワード解除、読み取り推奨のチェックを外して保存。
という流れにしたいのですが、どこに何を足したらよいのかわかりません。
どなたかぜひご教授をおねがいします。

Sub 複数パスワード解除()

    Dim myfolder, myfn, myword, pwopen, pwclose
    Dim pattern
    '操作を選択
    pattern = MsgBox("パスワード解除「はい」、セットならば「いいえ」", vbYesNo)
    If pattern = vbCancel Then
        Exit Sub
    End If
    'パスワードをセット
    myword = InputBox("パスワード")
    If pattern = vbYes Then
        pwopen = myword
        pwclose = ""
    ElseIf pattern = vbNo Then
        pwopen = ""
        pwclose = myword
    End If
    'フォルダを選択
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "解除したいファイルのあるフォルダを選択"
        .AllowMultiSelect = False
        If .Show = -1 Then
            myfolder = .SelectedItems(1)
        Else
            Exit Sub
        End If
    End With
    'ファイルを操作
    myfn = Dir(myfolder & "\*.xls", vbNormal)
    Do Until myfn = ""
        Call ファイル開閉(myfolder & "\" & myfn, pwopen, pwclose)
        myfn = Dir
    Loop
End Sub

Function ファイル開閉(myfn, pwopen, pwclose)

    Workbooks.Open Filename:=myfn, passWord:=pwopen

    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:=myfn, passWord:=pwclose, WriteResPassword:=""
    Application.DisplayAlerts = True
    ActiveWorkbook.Close
End Function

以上です。

< 使用 Excel:Excel2010、使用 OS:Windows10 >


Excel2010のようですが、拡張子を見ると、使いたいファイル名は .xls なのですね?

それなら、デフォルトのファイル形式が変わっているので、旧型式で保存したいなら、SaveAsメソッド実行時に FileFormat:=xlExcel8 のオプション指定を追加してみてください。(判らなければ、「Workbook.SaveAs メソッド」のヘルプを参照)
(???) 2018/07/11(水) 11:52


読み取り推奨で開くように聞いてくるので「いいえ」で変更可能でファイルを開いて、保存する際に読み取り推奨のチェックを外すためのスクリプトを追加したいということです。
(Kid) 2018/07/11(水) 16:09

ファイル形式が変わって開けなくなる、とかで困っているのではないのですね? ヘルプを見てもらえば解決しそうですが、以下で参考になりますか?
 Sub test()
    Const myfn = "c:\tmp\test.xls"

    Application.DisplayAlerts = False
    With Workbooks.Open(myfn, False, False, , , , True)
        .SaveAs myfn, FileFormat:=xlExcel8, ReadOnlyRecommended:=False
        .Close False
    End With
    Application.DisplayAlerts = True
 End Sub
(???) 2018/07/11(水) 16:37

ちゃんとヘルプを参照されていないようですからヘルプを貼っておきましょう。

Workbooks.Open メソッド (Excel)
https://msdn.microsoft.com/ja-jp/vba/excel-vba/articles/workbooks-open-method-excel

Workbook.SaveAs メソッド (Excel)
https://msdn.microsoft.com/ja-jp/vba/excel-vba/articles/workbook-saveas-method-excel
(???) 2018/07/11(水) 17:08


情報補足ありがとうございます。が、別名を名乗っていただいた方が良いかと…。
(???) 2018/07/11(水) 17:10

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.