| 
    
     |  | >結果、思いもしなかった原因が判明し、新たに頭を悩ませる事になりました。 >原因は「コピー元のファイル」のバージョン違いでした。
 >開発は'97で行っているのですが、サンプルで貰った元ファイルが2000で
 >作成されたものだったようです。
 >今後、これを事前に判別するのが課題となります。
 
 dim bkA as Excel.Workbook
 dim strC as string
 
 If bkA.FileFormat = xlExcel9795 Then
 bkA.SaveAs Filename:=strC, fileFormat:=xlExcel9795
 ElseIf
 
 って感じで保存してみれば、どうでしょう?(97で保存する場合)
 詳しくは、SaveAsメソッドのヘルプをご覧ください。
 
 
 >>たとえば、"データ操作"中に、開いているブックのオブジェクトを取得しているのに、
 >>きちんと、参照解放せぬままCLOSEしようとしていませんか?
 >
 >変種処理は処理毎にFunctionを作成しているのですが、
 >解放ロジックは必要なのでしょうか?
 Function内だけで使用する変数なら、特に参照解放する必要もないのですが、
 クラスや、モジュールの内部変数の場合は、必要です(と思います)
 
 
 >>#ブックのシートを参照設定しておいて、その解放がきちんとされていない。
 >
 >この参照設定の解放というのは、何をすれば良いのでしょうか。
 
 set Sh =Nothing
 だけでOKです。
 
 >以下、検証詳細です。
 >
 >コピー元のファイルにはマクロ(コマンドボタン/処理は軽いもの)や
 >セル式が埋め込まれたものですが、サイズは240kb程度です。
 >シンプルにOpen→SaveAs→Closeとした場合にも処理ができなかったので、
 >コピー元ファイルを適当な新規ブックで実行してみたところ、処理が成功しました。
 >
 >次に、問題のファイルを使用して、Saveの直前に
 >Application.DisplayAlerts = True
 >と記述し、システムのメッセージを表示させたところ、
 >「このエクセルは最新版のExcelで作成されました」のメッセージが・・・。
 >このメッセージに対して、手動で「はい」を押下すれば正常に保存され、
 >「いいえ」を押下するとCloseされずに開いたままです。
 >処理の最初に
 >Application.DisplayAlerts = False
 >を記述したので、「いいえ」を押下したのと同じ状態で処理が中断されたようです。
 
 まさに、fileFormatによるもののようですね。
 ご確認ください。
 これで解決したらいいですね。
 
 
 |  |