• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBAを用いた一括ファイル処理方法)

Excel VBAを用いた一括ファイル処理方法

このQ&Aのポイント
  • Excel VBAを使って、特定のフォルダ内に格納されたExcelファイルを一括処理する方法を解説します。
  • 一括処理内容は、A列以外のセルをロックする処理になります。
  • また、可能であればパスワード設定も付加したいと思います。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

あれあれ、ごめんなさい、誤記がありましたね。 sub macro1()  dim myPath as string  dim myFile as string  mypath = "c:\test\"  myfile = dir(mypath & "*.xls*")  do until myfile = "" ’ブックを開く  workbooks.open mypath & myfile ’ロックを設定し,保護する  cells.locked = true  range("A:A").locked = false  activesheet.protect password:= "abc", allowfiltering:=true ’保存して閉じる  activeworkbook.close savechanges:=true ’次のブック  myfile = dir()  loop end sub 失礼しました。 >オートフィルタリングは可能にしたい 上述のようにして可能です。 念のため補足しておきますが、シートを保護する「前に」オートフィルタを設置しておいて、ブックを保存しておかないと意味が無い事はご存知ですね。 >保護の解除 unprotectするだけです。VBAのヘルプも参考にしてください。 所定のフォルダのブックを逐一開いて設定する等は、全く同じマクロなのは判りますね。

candle1
質問者

お礼

わざわざご指導いただきありがとうございました。 少し前にNo1のお礼欄に記載させていただきましたが、No1で回答いただきましたコードを参考に、いろいろ調べたら、解消しました。 このたびは、本当にありがとうございました。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

まず。 >Excelコマンドボタンを用いて 失敗の元なので,今回はこれをやめます。(後述参考参照) 代わりに次のように準備します 準備: 白紙ブックを用意する ALT+F11を押してVBE画面を出す 挿入メニューから標準モジュールを挿入する 下記のマクロをコピー貼り付ける 終了してエクセルに戻る オートシェイプの図形等を用いてマクロボタンを設置する 右クリックしてマクロの登録からマクロを登録する 実際のマクロとしては,対象ブックの開いたシートを対象に実施します(若しくは,各対象ブックには1枚しかシートが無い) sub macro1()  dim myPath as string  dim myFile as string  mypath = "c:\test\"  myfile = dir(mypath & "*.xls*")  do until myfile = "" ’ブックを開く  workbooks.open mypath & myfile ’ロックを設定し,保護する  cells.locked = true  range("A:A").locked = false  activesheet.protect password = "abc" ’保存して閉じる  activeworkbook.close savechanges:=true ’次のブック  myfile = dir()  loop end sub 参考: 失敗する理由は下記参照してみてください http://okwave.jp/qa/q7692730.html

candle1
質問者

お礼

たびたびすいません。 回答いただきましたコードを参考に、いろいろ調べたら、解消しました。 このたびはありがとうございました。 -------------------------------------------------------------------- Sub セルロック一括処理() Dim myPath As String Dim myFile As String myPath = "C:\TEST\" myFile = Dir(myPath & "*.xls*") Do Until myFile = "" 'ブックを開く Workbooks.Open myPath & myFile '現在のワークシートに A1セルから始まるオートフィルタを設定・解除 'オートフィルタが設定済みでは解除し、無ければ設定する。 With ActiveSheet.Range("A1") If Not .AutoFilter Then .AutoFilter End With 'ロックを設定し,保護する Cells.Locked = True Range("A:A").Locked = False ActiveSheet.Protect Password:="abc", _ AllowFiltering:=True '保存して閉じる ActiveWorkbook.Close savechanges:=True '次のブック myFile = Dir() Loop End Sub -------------------------------------------------------------------- Sub セルロック解除一括処理() Dim myPath As String Dim myFile As String myPath = "C:\TEST\" myFile = Dir(myPath & "*.xls*") Do Until myFile = "" 'ブックを開く Workbooks.Open myPath & myFile 'ロックを解除 ActiveSheet.Unprotect Password:="abc" '保存して閉じる ActiveWorkbook.Close savechanges:=True '次のブック myFile = Dir() Loop End Sub --------------------------------------------------------------------

candle1
質問者

補足

ご教授頂きありがとうございます。 上記、コードで試したところ、一括ロック処理はできましたが ロックの解除(シートの保護の解除)ができませんでした。(PWが違うと表示される。) 原因は何かわかるでしょうか?? また、シートのロック設定で、オートフィルタリングは可能にしたいのですが、何か方法はないでしょうか? また、指定ファイル内のセルロック解除の一括処理は可能でしょうか? (上記コードで、セルロック(PWあり)をしたものを、今度は一括解除したい。) いくつも問い合わせしてしまい、大変恐縮ですが、どうぞよろしくお願いいたします。

関連するQ&A