プロが教えるわが家の防犯対策術!

 ワードで文書を作成し保存する際、<ドキュメント>フォルダ内に<文書>フォルダーを作って保存しているのでが、文書が未完成のまま保存する場合、文書フォルダーに保存と同時にデスクトップの特定のフォルダー(例えば <やりかけ>フォルダー)にも、その文書ファイルのショートカットを保存したいのです。そうすれば、いつもデスクトップの<やりかけ>フォルダーを覗けば、やりかけの文書ファイルをすぐに開くことができるし、完成すれば、そのショートカットを削除すれだけで済むからです。
 ワードのマクロでできるのかな?と思っているのですが、マクロの初心者でやり方がわからずにいます。マクロだけでは出来ないような気もするのですが…。よろしくお願いします。

A 回答 (6件)

こちら↓の過去ログにあるExcelのマクロを応用してはいかが。



エクセルのマクロを使ってショートカットアイコンを作成
http://oshiete1.goo.ne.jp/qa2317683.html

WorkbookをDocumentに変えるだけで利用できると思います。

例:
'-------------------------ここから-------------------------
Sub FileSave()
'
' FileSave Macro
' 作業中の文書またはテンプレートを保存します。
'このとき、デスクトップ上にショートカットを作成します。
'
 Dim WSHShell As Object
 Dim objSc As Object
 Dim Fmei As Variant
 Dim fol As String
 Dim wd As Document

Set wd = ActiveDocument
Set WSHShell = CreateObject("WScript.Shell")
Fmei = wd.FullName
fol = CreateObject("WScript.Shell").SpecialFolders("Desktop")

'デスクトップの特定フォルダなら、()内の「fol」の次""で囲って追加
Set objSc = WSHShell.CreateShortcut(fol & "\" & Dir(Fmei) & ".lnk")

 With objSc
  .TargetPath = Fmei
  .Save
 End With

End Sub
'-------------------------ここまで-------------------------

このマクロは、[ Save ](上書き)のショートカットキーなどで上書きを
すると特定の場所にショートカットを用意します。
[名前をつけて保存]では、保存をしたいフォルダに保存するだけなので、
最初に[名前をつけて保存]で保存用フォルダへと保存しておきます。
きちんと保存されていれば、上書きをするときにショートカットを作成
して、文書の上書きもします。
上書きを繰り返せばショートカットと文書の両方を上書きします。
(マクロのフォルダ名を変更すれば、変更した先にショートカット作成)
「文書ファイルのショートカットをWORDの」の回答画像3

この回答への補足

一部書き換えただけで希望の物ができあがりました。
ありがとうございます。
マクロの初心者なので各行の働きは充分には理解できないでいます。
もしお時間があれば、
各行の解説をしていただければありがたいです。

補足日時:2009/03/15 15:26
    • good
    • 0

No.3&4です。


私が紹介したマクロでの各行の解説しなくても、質問者さんのほうが私
よりも理解しているのでは?
Wordのマクロ初心者という意味なのか、マクロ全般の初心者なのかで、
初心者の意味が全然違うので。たぶん前者のほうだと思う。

基本的な解説は、No.5の回答者さんが説明していることで理解できると
思いますし、オブジェクトとしての" WSHShell "のことが解ることで、
マクロの内容はほとんど理解できると思います。
No.5の回答内で紹介している、[ WSH ]の[ WshShell ]オブジェクトでの
[ CreateShortcut ]メソッドのことのようですね。
http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh1 …
http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh1 …

ちなみにWord独自のマクロの特徴である、マクロ名にコマンド名がつく
場合にコマンド命令がユーザー設定したマクロのほうを優先にする仕様
があるために、[ FileSave ]コマンドをユーザが指定したマクロで実行
することができるため、マクロ名を" FileSave "にしてあります。

例:既定のコマンドマクロ[ FileSave ]の場合
Sub FileSave()
'
' FileSave Macro
' 作業中の文書またはテンプレートを保存します。
'
 ActiveDocument.Save
End Sub
このコマンドマクロに指定条件を追加すれば、コマンドの実行時に他の
処理もしてくれるのです。
「 ActiveDocument.Save 」を最初にするかどうかはわかりやすいほうで
よいと思います。私の場合はDimで宣言している処理を先にしてから、
本来の処理をさせているだけですので。

今回はWordでのマクロについて回答しましたが、マクロはWordに限らず
未だに苦手ですので、他でも質問が新規にあっても私が回答することは
ほとんどありません。Wordの一般機能については、わかる範囲で回答を
続けていますが、どの回答も[自信なし]に近いものですね。回答をする
ことで私自身がスキルアップさせることができるので、いまだに回答を
続けているだけですので、今回はこれぐらいしか追加補足はできません。
では(^^)/~~~
    • good
    • 0
この回答へのお礼

丁寧な説明ありがとうございます。
enunokokoroさんのような親切な方がいらっしゃるので
とても助かります。

お礼日時:2009/03/16 08:14

>回答番号:No.2 この回答への補足


enunokokoroさんのコメントで問題は解決されたにも係わらず、
当方の提案内容も、無視せずに確認していただけるとは嬉しいことです。
お礼を申し上げます。

>十分調べずに質問するのも気が引けるのですが、まず次の行のAs以下がわかりません。
>>Dim myWSH As New IWshRuntimeLibrary.WshShell
>>Dim myShortcut As IWshRuntimeLibrary.WshShortcut
私もここら辺のことは勉強不足(していない)で解りません。
多分下記のページで解説されていることだと思います。

事前バインディングと実行時バインディングの違い
http://chaichan.web.infoseek.co.jp/vbtips/VBMemo …

>まず、最初に
>ActiveDocument.Save
>を挿入して編集中のファイルを保存する。
後先はどちらでも構わないと思います。

>> myPath = myWSH.SpecialFolders("Desktop") & "\" & "ペイント.lnk"
>("Desktop")のあとを & "\やりかけ\編集中のファイル名.ink"
>にすればいいのでしょうか。
そうですね。
ショートカットとショートカットを作成する場所を指定しているようです。

>>.TargetPath = "c:\windows\system32\mspaint.exe"
>を編集中のファイル名に替えてフルパスで表記すればいいのでしょうか。
ファイル本体の保存場所をフルパスで指定しているようです。
つまりリンク先ですね。

.IconLocation = "c:\windows\system32\mspaint.exe"
はアイコンのある場所でしょうね。
無くても、勝手にWordのアイコンを使って作成されます。
.Description = "ショートカット作成テスト"
はコメントです。
.Hotkey = "Ctrl+Alt+P"
はショートカットキーを設定しているようです。

WSHを始めよう - @IT
http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh0 …
    • good
    • 0
この回答へのお礼

丁寧なご説明ありがとうございます。
もっと勉強します。
マクロが楽しくなりました。

お礼日時:2009/03/16 08:12

No.3です。


前の回答で紹介したマクロだと上書きにならないので一部訂正。
フォルダ指定もしておきます。

Sub FileSave()
'
' 作業中の文書を上書き保存し、デスクトップ上にショートカットを作成。
'
 Dim WSHShell As Object
 Dim objSc As Object
 Dim Fmei As Variant
 Dim fol As String
 Dim wd As Document

'デスクトップの<やりかけ>フォルダにショートカット
Set wd = ActiveDocument
Set WSHShell = CreateObject("WScript.Shell")
Fmei = wd.FullName
fol = CreateObject("WScript.Shell").SpecialFolders("Desktop")
Set objSc = WSHShell.CreateShortcut(fol & "\やりかけ" & "\" & Dir(Fmei) & ".lnk")
 With objSc
  .TargetPath = Fmei
  .Save
 End With

'使用中の文書の上書き
 ActiveDocument.Save
End Sub
    • good
    • 0
この回答へのお礼

補足していただきありがとうございます。
私は前回の回答を参考に
>'使用中の文書の上書き
> ActiveDocument.Save
を、最初の行にいれました。
これから、教えていただいたマクロと、選択文字列をファイル名にするマクロをつなげて、さらに保存するときにショートカットを作成するかどうか尋ねるマクロを付け足そうと考えています。
本当にありがとうございました。これで仕事もはかどると思います。

お礼日時:2009/03/15 15:45

解らないところを具体的に補足質問してください。

この回答への補足

落ち着いて見直してきたら少しですがわかってきました。
>[ツール]→[参照設定]で「Windows Script Host Object Model」をチェック
このツールがどこになるのかわからなかったり…初歩的なミスですね。はずかしいです。VBAのツールですよね。
十分調べずに質問するのも気が引けるのですが、まず次の行のAs以下がわかりません。
>Dim myWSH As New IWshRuntimeLibrary.WshShell
>Dim myShortcut As IWshRuntimeLibrary.WshShortcut
後の行もよくわからないですが…

教えていただいたサンプルマクロを次のようにすればよいのでしょうか。
まず、最初に
ActiveDocument.Save
を挿入して編集中のファイルを保存する。

> myPath = myWSH.SpecialFolders("Desktop") & "\" & "ペイント.lnk"
("Desktop")のあとを & "\やりかけ\編集中のファイル名.ink"
にすればいいのでしょうか。
>.TargetPath = "c:\windows\system32\mspaint.exe"
を編集中のファイル名に替えてフルパスで表記すればいいのでしょうか。
もう少しがんばってみます。

補足日時:2009/03/15 21:04
    • good
    • 0

下記ページが参考になります。


Accessの例ですがWordでも同じです。

デスクトップにショートカットを作成する
http://www.moug.net/tech/acvba/0020025.htm
    • good
    • 0
この回答へのお礼

早々にご返事ありがとうございます。
マクロ初心者には敷居が高くて理解できないでいます。ごめんなさいm(__)m
大事なことを忘れていたのでここに追記します。
OS:WinXP
Wordは2003です

お礼日時:2009/03/15 08:42

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