Anna Leaは、自分が作成する日次レポートのテンプレートとして使用する読み取り専用のワークブックを持っています。ファイル名はかなり長く、20507xxで終わります。彼女がワークブックをダブルクリックすると、ワークブックが開き、読み取り専用であることが示されます。彼女は変更を加えてから、[名前を付けて保存]を使用します。 Excelはファイルが読み取り専用であることを認識するため、プレフィックスとして「Copyof」という単語が付いた古いファイル名で構成される新しいファイル名を提案します。アンナは「のコピー」を削除したいので、ファイル名の「xx」部分を変更してその日のレポートを作成するだけです。

「コピー」の言い回しは、Excelによって自動的に追加されます。 [名前を付けて保存]を使用している場合、保存プロセスを制御するマクロを使用せずにこれを変更する方法はありません。 ThisWorkbookオブジェクトの一部として保存された次のマクロは、これを行う方法を示しています。

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

Dim sTemp As String     Dim sCheck As String     sCheck = "xx.xls"



If SaveAsUI Then         sTemp = ThisWorkbook.Name         If Right(sTemp, Len(sCheck)) = sCheck Then             sTemp = Left(sTemp, Len(sTemp) - Len(sCheck))

sTemp = sTemp & Format(Now, "dd") & ".xls"

sTemp = ThisWorkbook.Path & "/" & sTemp             ThisWorkbook.SaveAs Filename:=sTemp, _               FileFormat:=xlNormal             Cancel = True         End If     End If End Sub

マクロは最初に、[名前を付けて保存]ダイアログボックスが表示されようとしているかどうかを確認します。そうである場合、ワークブックの名前がsTemp変数に割り当てられます。この名前は、最後の6文字が(sCheck変数からの)「xx.xls」であるかどうかを確認するためにチェックされます。そうである場合、ワークブックは名前を変更する必要があるものであると見なされます。

最初に「xx.xls」文字(またはsCheckに割り当てたもの)

ブック名の末尾から削除されます。次に、今日の日付(2桁、月の日)がファイル名に追加され、その後に「.xls」サフィックスが続きます。最後に、この新しく作成されたファイル名を使用してブックが保存されます。 [キャンセル]フラグがTrueに設定されているため、[名前を付けて保存]ダイアログボックスは表示されません。

「のコピー」という言い回しの名前はチェックされないことに注意してください。この理由は単純です。実際の[名前を付けて保存]ダイアログボックスが表示されるまで、ファイル名の先頭に文言が追加されません。その時点より前(このイベントハンドラーが実行されているとき)は、ブック名は変更されません。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(3064)は、Microsoft Excel 97、2000、2002、および2003に適用されます。