EXCEL 時刻起動で複数ブックを1つにまとめる 削除
Message#4 2015年2月5日(木)11時49分 From: BP者 |
東京支店集計.xlsに標準モジュールを作成し、以下のVBAコードを貼り付けて上書き保存してください。 No1のタスクスケジューラへの登録で該当ブックを指定時間に開くように設定してください。 (Excelのセキュリティ設定は「すべてのマクロを有効にする」にしてください) ↓ ▼「すべてのマクロを有効にする」を使用したくない場合▼▼▼ Excelのセキュリティレベルは以下選択してください。 ・「デジタル署名されたマクロを除き、すべてのマクロを無効にする」 そのあと、以下のサイトの各項目(2箇所)を参照して設定頂き、 ttp://office.microsoft.com/ja-jp/excel-help/HA001231781.aspx ・「独自のデジタル証明書を作成して、自己署名する」 ・「マクロ プロジェクトにデジタル署名を追加する」>「Excel の場合」 一度「東京支店集計.xls」を開いて添付画像のようにデジタル署名に対し許可を行ってください。 次回起動時から自動的にAuto_Openイベントが実行されます。 ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲ コードの内容は以下のようにしています。 ・ブックが開かれたら対象フォルダ以下の「*.xls」ファイルを順次開きながら 1つ目のシートを集計ブックへシートコピーして閉じます。 ・各ブックをコピーし終われば、上書き保存してエクセルを終了させます。 補足: ・シート名が重複する場合はエクセルが勝手に(1)、(2)など添え字を付けてくれると思います。 ・フィルタは削除しています。すべて表示させているわけではありません。 ・東京支店集計.xlsをマクロを実行しないで開くにはエクセル起動したのち、 「開く」より東京支店集計.xlsを選択後、Shftキーを押しながら「開く」を押してください。 ■VBAコード Sub Auto_Open() '型宣言 Dim MyPath As String Dim MyFile As String Dim Wb As Workbook Dim Tb As Workbook Dim myRange As AutoFilter 'パスの設定 MyPath = "C:\デスクトップのフォルダパス\テスト\個人用\" '準備 MyFile = Dir(MyPath & "*.xls") Set Tb = ThisWorkbook 'ファイル別に処理 Do While MyFile <> "" 'ファイルを開く Set Wb = Workbooks.Open(MyPath & MyFile) 'シートのコピー Wb.Sheets(1).Copy After:=Tb.Worksheets(Tb.Worksheets.Count) 'フィルタの解除 Set myRange = Tb.Worksheets(Tb.Worksheets.Count).AutoFilter If Not myRange Is Nothing Then Tb.Worksheets(Tb.Worksheets.Count).Range("A1").AutoFilter Set myRange = Nothing End If 'ファイルを閉じる Application.DisplayAlerts = False Wb.Close (False) Application.DisplayAlerts = True MyFile = Dir() Loop '上書き保存してエクセル終了 Tb.Save Application.Quit End Sub |
上のメッセージを削除します。
よければパスワードを入力し、削除ボタンをクリックしてください。