|
>結果、思いもしなかった原因が判明し、新たに頭を悩ませる事になりました。
>原因は「コピー元のファイル」のバージョン違いでした。
>開発は'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によるもののようですね。
ご確認ください。
これで解決したらいいですね。
|
|