• ベストアンサー

文書ファイルのショートカットをWORDのマクロで作るには

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

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

こちら↓の過去ログにある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 ](上書き)のショートカットキーなどで上書きを すると特定の場所にショートカットを用意します。 [名前をつけて保存]では、保存をしたいフォルダに保存するだけなので、 最初に[名前をつけて保存]で保存用フォルダへと保存しておきます。 きちんと保存されていれば、上書きをするときにショートカットを作成 して、文書の上書きもします。 上書きを繰り返せばショートカットと文書の両方を上書きします。 (マクロのフォルダ名を変更すれば、変更した先にショートカット作成)

r-inarin
質問者

補足

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

その他の回答 (5)

回答No.6

No.3&4です。 私が紹介したマクロでの各行の解説しなくても、質問者さんのほうが私 よりも理解しているのでは? Wordのマクロ初心者という意味なのか、マクロ全般の初心者なのかで、 初心者の意味が全然違うので。たぶん前者のほうだと思う。 基本的な解説は、No.5の回答者さんが説明していることで理解できると 思いますし、オブジェクトとしての" WSHShell "のことが解ることで、 マクロの内容はほとんど理解できると思います。 No.5の回答内で紹介している、[ WSH ]の[ WshShell ]オブジェクトでの [ CreateShortcut ]メソッドのことのようですね。 http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh14/cformwsh14_02.html http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh14/cformwsh14_03.html ちなみにWord独自のマクロの特徴である、マクロ名にコマンド名がつく 場合にコマンド命令がユーザー設定したマクロのほうを優先にする仕様 があるために、[ FileSave ]コマンドをユーザが指定したマクロで実行 することができるため、マクロ名を" FileSave "にしてあります。 例:既定のコマンドマクロ[ FileSave ]の場合 Sub FileSave() ' ' FileSave Macro ' 作業中の文書またはテンプレートを保存します。 '  ActiveDocument.Save End Sub このコマンドマクロに指定条件を追加すれば、コマンドの実行時に他の 処理もしてくれるのです。 「 ActiveDocument.Save 」を最初にするかどうかはわかりやすいほうで よいと思います。私の場合はDimで宣言している処理を先にしてから、 本来の処理をさせているだけですので。 今回はWordでのマクロについて回答しましたが、マクロはWordに限らず 未だに苦手ですので、他でも質問が新規にあっても私が回答することは ほとんどありません。Wordの一般機能については、わかる範囲で回答を 続けていますが、どの回答も[自信なし]に近いものですね。回答をする ことで私自身がスキルアップさせることができるので、いまだに回答を 続けているだけですので、今回はこれぐらいしか追加補足はできません。 では(^^)/~~~

r-inarin
質問者

お礼

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

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.5

>回答番号:No.2 この回答への補足 enunokokoroさんのコメントで問題は解決されたにも係わらず、 当方の提案内容も、無視せずに確認していただけるとは嬉しいことです。 お礼を申し上げます。 >十分調べずに質問するのも気が引けるのですが、まず次の行のAs以下がわかりません。 >>Dim myWSH As New IWshRuntimeLibrary.WshShell >>Dim myShortcut As IWshRuntimeLibrary.WshShortcut 私もここら辺のことは勉強不足(していない)で解りません。 多分下記のページで解説されていることだと思います。 事前バインディングと実行時バインディングの違い http://chaichan.web.infoseek.co.jp/vbtips/VBMemo2006120904.htm >まず、最初に >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/cformwsh01/cformwsh01_01.html

r-inarin
質問者

お礼

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

回答No.4

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

r-inarin
質問者

お礼

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

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

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

r-inarin
質問者

補足

落ち着いて見直してきたら少しですがわかってきました。 >[ツール]→[参照設定]で「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" を編集中のファイル名に替えてフルパスで表記すればいいのでしょうか。 もう少しがんばってみます。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

下記ページが参考になります。 Accessの例ですがWordでも同じです。 デスクトップにショートカットを作成する http://www.moug.net/tech/acvba/0020025.htm

r-inarin
質問者

お礼

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

関連するQ&A