Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10 Home : Excel 2016)
同じフォルダの中のすべてのファイルに同じ操作をするためには
投稿日時: 19/10/10 15:51:23
投稿者: 雲取山

いつも、お世話になってます。
一つのフォルダの中に、100近くの個人ファイルがあります。
それぞれ、各月のシートを作り、月ごとのデータを入力するファイルになってます。
月初にシートのボタンを押して、@先月のシートをコピー Aコピーしたシートのデータをクリア Bシート名を201910というように変更して、新たなシートを作るようにしてあります。
コードは、下記のようなコードになってます。
 
Sub Active_Sheet_Copy()
'2019-4-11変更
  Dim sh_name As String
  Dim Nengetu As Date
  Dim n As Long
   
  Application.ScreenUpdating = True
 
  sh_name = Format(Date, "yyyymm")
  ActiveSheet.Copy After:=ActiveSheet
  Nengetu = Now
   
    ActiveSheet.Range("D2").Select
    ActiveCell.FormulaR1C1 = Format(Nengetu, "yyyy/mm/01")
     
    Range("B13:D36").Select '範囲指定
    Range("B13:D36,H13:BK36").Select
    Range("B13:D36,H13:BK36,V39:AH39,AP39:BB39").Select
    Selection.ClearContents
     
 
  On Error Resume Next
 
  ActiveSheet.Name = sh_name
  n = 1
  Do Until Err.Number = 0
    Err.Clear
    n = n + 1
    ActiveSheet.Name = sh_name & "(" & n & ")"
  Loop
   
  Call ActiveSheet_Close
  
 Application.ScreenUpdating = False
 
End Sub
 
ところが、数が多くなって、全てのファイルを開いて更新するのが、大変になってきたので、
すべてのファイルに更新するようにしたいのですが、どうしても、できなくて、困ってます。
どうか、教えて下さい。よろしくおねがいします。

回答
投稿日時: 19/10/10 17:38:24
投稿者: WinArrow
投稿者のウェブサイトに移動

>どうしても、できなくて、困ってます。
どこで行き詰っていますか?
 
処理速度を向上させるために、掲示のコードで修正したほうがよい箇所があります。
 
(1)ブック、シートで修飾すること
 Selectが何か所も存在しますが、Selectしなくても処理できますので
 セルのSelect、シートのSelectを止めましょう
(2)範囲の選択は1つで充分
 但し、Selectは不要
(3)エラートラップのかけ方
 おそらく、同名のシートが存在することのチェックだと思いますが、
 いろんな処理をする前にチェックして、処理をしゅうりょうすること。
 
(4)前月のシート名について
 コードはいきなり、Actvessheetから始まっているが、
 前月のシート名を用いること。
 もちろん、Select不要
 
 
 

回答
投稿日時: 19/10/10 18:04:39
投稿者: sk

引用:
一つのフォルダの中に、100近くの個人ファイルがあります。
それぞれ、各月のシートを作り、月ごとのデータを入力するファイルになってます。

引用:
月初にシートのボタンを押して、
@先月のシートをコピー
Aコピーしたシートのデータをクリア
Bシート名を201910というように変更して、新たなシートを作るようにしてあります。

引用:
ところが、数が多くなって、全てのファイルを開いて更新するのが、
大変になってきた

具体的にどのような業務に関わるファイルであるかが不明ですが、
根本的にその運用方式自体を変えた方がよいのではないかという印象。
 
恐らく「従業員ごとの勤怠履歴」とか「顧客ごとの商品購入履歴」のような記録を
1 人につき 1 つのブックで管理するようなことをされているのだと
推測しますが、それらのデータを統合して一元管理できる形に業務改善しないと
そのうち破綻しそうな気がします。

トピックに返信