4

私は、MS Office 製品の VBA に少し慣れていません。テンプレートとして使用する .xls ファイルをユーザーに「名前を付けて保存」させるコードを探していました (ただし、実際のテンプレート ファイルの種類ではありません)。

基本的に、私はこれを持っています:

  1. ユーザーは .xls を開き、フィールドにデータを入力してから、[ファイル] -> [名前を付けて保存] を自分の場所に保存します。
  2. ユーザーが代わりに保存をクリックする場合があるため、発生したくない.xlsを上書きします。

私はいくつかのアイデアを検討してきましたが、それを最適に実装する方法がわかりません。ユーザーが最初に .xls を開いて新しい場所に保存するときにプロンプ​​トを表示するのが最善の方法だと思いますが、ファイルを新しい場所に既に保存していて、新しい場所を編集することにした場合は、将来的に考えてください。元のファイルではなく、独自のファイルであるため、その時点で「保存」できます。

誰かが私を正しい方向に向けたり、私の論理の欠陥を見つけたりできるなら、ぜひ聞いてみたい.

ありがとう、マイク

4

2 に答える 2

6

テンプレートとして使用します (ただし、実際のテンプレート ファイルの種類ではありません)

最も簡単な方法は、Read-Only Recommendedtrue に設定してファイルを保存することです。スナップショットを見る

ここに画像の説明を入力

そうすれば、ユーザーが実行しようとしてもSave、Excel は自動的にSave As

ここに画像の説明を入力

HTH

于 2012-05-11T19:47:49.990 に答える
4

テンプレートと読み取り専用がより良いオプションであるという他の人たちの意見に同意しますが、独自のものを展開することに設定されている場合は、開始するための例を次に示します. ThisWorkbook モジュールに入ります

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    Dim sNewName As String

    Cancel = True 'Cancel the save operation

    sNewName = Application.GetSaveAsFilename(Replace(Me.Name, ".xls", "1.xls"))

    If sNewName <> Me.FullName And sNewName <> "False" Then
        Application.EnableEvents = False
            Me.SaveAs sNewName
        Application.EnableEvents = True
    End If

End Sub
于 2012-05-11T19:51:24.463 に答える