作業中のプロジェクトでは、プロジェクトごとにメインのワークブックを保存することはできないため、ユーザーがデータのエクスポートを作成して単一のプロジェクトに保存できるようにしたいと考えています。
データを別のワークブックにエクスポートする関数を作成しましたが、エクスポートされたデータをユーザーが直接変更しないようにしたいと思います (別のファイル形式を設定することで、ユーザーはワークブックを開くことについてもっと考え、したがって、「偶然」にそれをしないでください)
だから私の質問は: ユーザーにファイルを .clg ファイルとして保存するように強制できますか?
編集:
.SaveAs
ファイルを保存し、形式を「51」(.xlsx と同じ) として指定することで問題を解決しました。以前GetSaveAsFilename
は、ユーザーが場所 (つまり、プロジェクト フォルダー) を決定し、.clg ファイルのみを参照できるようにしていました。 .
Dim sFullName As String
sFullName = exportFile.Application.GetSaveAsFilename(thisFile.Sheets("Project information").Cells(1, 2).Value, "Export files (*.clg),*.clg", , "Choose export location", "Export")
If Not Len(sFullName) = 0 Or sFullName = "False" Then
exportFile.SaveAs Filename:=sFullName, FileFormat:=51
End If
exportFile.Close
誰かが Monshaw 氏のアプローチを使用したい場合、1 つの方法は、変数 withevents を持つクラス モジュールを作成することです。つまり、変数で発生するイベントはすべて、モジュールで発生します。
Public WithEvents wbk As Workbook
クラスのインスタンスをコレクションに追加するなどして、メモリ内に保持することを忘れないでください。
を使用するもう 1 つの方法BeforeSave
は、コードを動的に記述することです。http://www.ozgrid.com/forum/showthread.php?t=163903を参照してください。