|
▼ケメ子 さん:
こんにちは
いろいろ試行錯誤した結果、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
'事前処理終了
|
|