| 
    
     |  | ▼ケメ子 さん: 
 こんにちは
 
 いろいろ試行錯誤した結果、GetAttrあるいはSetAttrで相手にしている読み取り専用属性は
 エクセルブックとしての属性とは異なるものだということがわかりました。
 
 で、またもや思いつきですが、ご提示したファイルコピーロジックを以下のように。
 1回だけ、エクセルとしてのI/Oが発生しますが、まぁ無視できるレベルではないかと。
 
 ★ただし、まだ課題があります。
 SendKeysを用いたyukiさんのアドバイス、ならびに、試行錯誤の結果、なぜか?
 うまくいったケメ子さんの報告のコードをこちらで試しても、うまくいきません。
 SendKeysは、きわめて不安定な機能で、インターラクティブな処理では効果があるけれど
 一連のVBAの処理の中で使った場合、それが効いたり効かなかったりすることも多いようですので
 今回のコードでは細工をしていません。ですからメッセージは最初に1回でますが、これに
 操作者がレスポンスすることが必要になります。
 
 Dim tempName As String    '追加
 Dim wkName As Variant    '追加
 Dim myPool As Collection   '追加
 '
 '
 '
 '事前処理開始
 tempName = cPath & "\temp_" & tplName
 If Len(Dir(tempName)) > 0 Then Kill tempName
 
 'ここで雛形ブックを開いて、temp_雛形を保存
 Workbooks.Open cPath & "\" & tplName    '★ 課題
 ActiveWorkbook.SaveAs tempName
 ActiveWorkbook.Close
 
 Set myPool = New Collection
 
 'aPathにあるaファイルの名前をcファイル用に加工してmyPoolに取り込む
 wkName = Dir(aPath & "\*.xls")
 Do While wkName <> ""
 myPool.Add cPath & "\" & myPre & wkName
 wkName = Dir()
 Loop
 '雛形ブックをmyPoolに取り込んだcファイル名として【コピー】
 For Each wkName In myPool
 If Len(Dir(wkName)) > 0 Then Kill wkName
 FileCopy tempName, wkName
 Next
 
 Kill tempName
 Set myPool = Nothing
 '事前処理終了
 
 
 |  |