10代と話して驚いたこと

こんにちは。

タイトルの通りなのですが他の人が作成したWord文書を自分のパソコンで表示、修正、上書き保存した際に、ファイル名に特定の文字列(ユーザー名等)を付加させることは可能でしょうか?

イメージとしては
tasklist_Suzuki1025.docといった感じで元のファイル名+特定文字列となるようにできないかと考えております。

よろしくお願いいたします!

A 回答 (4件)

#2です。



このマクロが難しいのは、自ブックでは、BeforeSave イベントが使えても、任意のブックではイベントが使えないということなのですね。だから、クラス・インスタンスを設けなくてはならないのです。
    • good
    • 1

VBAの知識が無いと実現は難しいでしょう。


下記で言っていることが、何を言っているか判らない段階だと
無理でしょう。
エクセルで
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
MsgBox "AAA"
End Sub
でテストすると、上書き保存でも、このイベントで捉えられるようなのでこれが使えそう。Msgboxの行に下記コードを組む。
現在開いている自分のファイル名を採る。
自分の名前の文字列をファイル名の中に入れて、継ぎ接ぎする。
その名前でsaveAsする。
ワードも似たコードになろうが、2通りで別に考えないといけない。
    • good
    • 0

こんばんは。



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
    • good
    • 0

Wordなどの、テキストのトップに[タイトル名]を書き込めば


作業終了時に[上書き保存]を選択で先ほどの[タイトル名]がファイル名になる筈ですが。

この様に成りませんか?

この回答への補足

はい、Wordだとファイル名が自動的にテキストの最初の何文字かになると思いますが求めているものは例えば以下のような例です

1.斉藤さんが「●●契約書.doc」というファイルを作成しました

2.鈴木さんはそのファイルを受け取り内容を確認、訂正箇所があったのでファイルに上書きする形で修正を加え上書き保存。

3.そこで保存されたファイルが「●●契約書_Suzuki.doc」といった様に自動的に保存される

といった具合です。

補足日時:2007/10/26 14:56
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報