- 締切済み
Word、Excelのファイル名に自動的に名前を付加する方法教えてください!
こんにちは。 タイトルの通りなのですが他の人が作成したWord文書を自分のパソコンで表示、修正、上書き保存した際に、ファイル名に特定の文字列(ユーザー名等)を付加させることは可能でしょうか? イメージとしては tasklist_Suzuki1025.docといった感じで元のファイル名+特定文字列となるようにできないかと考えております。 よろしくお願いいたします!
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
#2です。 このマクロが難しいのは、自ブックでは、BeforeSave イベントが使えても、任意のブックではイベントが使えないということなのですね。だから、クラス・インスタンスを設けなくてはならないのです。
- imogasi
- ベストアンサー率27% (4737/17069)
VBAの知識が無いと実現は難しいでしょう。 下記で言っていることが、何を言っているか判らない段階だと 無理でしょう。 エクセルで Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) MsgBox "AAA" End Sub でテストすると、上書き保存でも、このイベントで捉えられるようなのでこれが使えそう。Msgboxの行に下記コードを組む。 現在開いている自分のファイル名を採る。 自分の名前の文字列をファイル名の中に入れて、継ぎ接ぎする。 その名前でsaveAsする。 ワードも似たコードになろうが、2通りで別に考えないといけない。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 Word側は、こちらは、Office 2003 ですが、初期起動では、直接働きません。 新規をクリックしていただくか、既存のファイルを開かないと、設定されません。 Excel側では、そのまま初期起動で、設定が働きます。 本来は、保存ボタン側につけると確実ですが、内容的に、複雑になりすぎます。掲示板では不向きです。私の試した感じでは、Word側は、どこかに無理があるという感じが否めないです。 本来は、コマンドボタンにして取り付けたほうがよいかもしれませんね。 イメージはこのようにしました。 tasklist_Suzuki1025.doc ---------------------------------------------------------------- Word 編 (Normal.Dot ) VBEditor 画面-挿入-クラスモジュール Class1 Public WithEvents objApp As Application Private Sub objApp_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean) Dim Fname As String Cancel = True If Not Doc.Name Like "*.???*" Then Fname = objApp.UserName & Format$(Date, "mmdd") Fname = Replace(Fname, Space(1), "_", , , vbTextCompare) With Dialogs(wdDialogFileSaveAs) .Name = Fname .Show End With End If End Sub 'ThisDocument モジュール Dim myClass As Class1 Private Sub Document_New() Set myClass = New Class1 Set myClass.objApp = Application End Sub Private Sub Document_Open() Set myClass = New Class1 Set myClass.objApp = Application End Sub =========================================================== Excel 編 (Personal.xls) Class 1 Private Sub NewApp_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim Fname As String If Not Wb.Name Like "*.???*" Then Fname = NewApp.UserName & Format$(Date, "mmdd") Fname = Replace(Fname, Space(1), "_", , , vbTextCompare) Application.EnableEvents = False With Application.Dialogs(xlDialogSaveAs) .Show (Fname) End With End If Application.EnableEvents = True If Wb.Name <> ThisWorkbook.Name Then Cancel = True End If End Sub '---------------------------------- 'ThisWorkbook モジュール Dim myClass As Class1 Private Sub Workbook_Open() Set myClass = New Class1 Set myClass.NewApp = Application End Sub
- maoo2022
- ベストアンサー率59% (110/185)
Wordなどの、テキストのトップに[タイトル名]を書き込めば 作業終了時に[上書き保存]を選択で先ほどの[タイトル名]がファイル名になる筈ですが。 この様に成りませんか?
補足
はい、Wordだとファイル名が自動的にテキストの最初の何文字かになると思いますが求めているものは例えば以下のような例です 1.斉藤さんが「●●契約書.doc」というファイルを作成しました 2.鈴木さんはそのファイルを受け取り内容を確認、訂正箇所があったのでファイルに上書きする形で修正を加え上書き保存。 3.そこで保存されたファイルが「●●契約書_Suzuki.doc」といった様に自動的に保存される といった具合です。