• ベストアンサー

Wordマクロを使った保存方法

一太郎で作成したファイルをWindowsでWordで開くように設定しあります。Wordで開いた後に【名前をつけて保存】ファイル名はそのまま使用したいので【保存】【ファイルを閉じる】と言う操作をマクロを使ってやろうとしてるのですが、マクロを実行しようとするとファイルが閉じるだけで、保存されていません。 マクロの記録で上記の操作を一通り実行し記録の終了だけではダメでしょうか?

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。Wendy02です。 >Application.Quit >'Application.Quit >は何が違うんでしょうか? いえ、私の個人的な経験からです。どうも、アプリケーション(Word)をいきなり閉じてしまうということに抵抗があったから、コメントアウト(「'」を先頭につけること)していたのです。 すんなり終わってくれればよいのですが、何かが、プロセス上で残る可能性を心配して、問題なければ、そのコメントアウトを外してくれればよい、ということで書きました。 なお、テキストファイル全部をWord ドキュメントに変換して、閉じるのなら、以下のようにすればよいと思います。(Word .Doc は、そのままになります) 同じファイル名の場合は、枝番が付きます。 8114301a.txt   ↓ 8114301a.doc   ↓ 8114301a_1.doc '間違って同じテキストファイルを開けて行った場合 試してみてください。 '------------------------------------------------ Sub DocsSaves() Dim wd As Variant Dim FileName As String Dim SaveName As String Dim i As String Const Ext As String = ".doc" '拡張子 Const MYPATH As String = "C:\Documents and Settings\[ユーザー名]\デスクトップ\Word\" For Each wd In Application.Documents  If InStr(wd.Name, ".txt") > 0 Then  SaveName = Mid(wd.Name, 1, InStrRev(wd.Name, ".") - 1)    '同名がある時は枝番をつける  Do While Dir(MYPATH & SaveName & Ext) <> ""    i = "_" & CStr(Val(Mid(i, 2)) + 1)    SaveName = SaveName & i  Loop     wd.SaveAs MYPATH & SaveName, FileFormat:=wdFormatDocument   SaveName = ""   i = ""  End If   wd.Close False Next wd  Application.Quit End Sub '------------------------------------------------ もしかしたら、余計な部分を入れてしまったかもしれません。その時はおっしゃってください。

wasamon
質問者

補足

ありがとうございます。一度に開いているワード全てのファイルの拡張子をかえて、目的のフォルダーに保存することが出来ました。 以下について、良く理解できなかったのですがどういうことでしょうか? 8114301a.txt   ↓ 8114301a.doc   ↓ 8114301a_1.doc '間違って同じテキストファイルを開けて行った場合 よろしければ、解説お願いします。

その他の回答 (4)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんにちは。Wendy02です。 こちらでは、一太郎ファイルがありませんので、txt ファイルで試しています。それで誤解を与えてしまいました。 同じ一太郎ファイルを開ける可能性がなければよいのですが、先ほどやってみて、同じファイルを開けて行うと、ダイアログが出てきて、「既にそのファイルはある・・・」なんていうメッセージが出てきます。 Application.DisplayAlerts = False なんていう技もありますが、それで、前のものを消すのも問題かなって思って、枝番をつけて保存することにしました。 Wordで 以下のファイルを開けました。  8114301.jtd (一太郎ファイル)    ↓  8114301.doc (Wordファイルで保存)  8114301.jtd (もう一度同じ 一太郎ファイルを知らずに開けて実行してしまった)    ↓  8114301_1.doc (枝番をつけて、Wordファイルとして保存) ということをします。 8114301.doc 8114301_1.doc と同じものですが、上書きせずに、枝番で別のファイルになっています。 余計なことかとは思いましたが、上書きしてなくなってしまう、安全を考えました。お分かりになりますでしょうか?

wasamon
質問者

お礼

ありがとうござます。理解できました。8114301と言うのはファイル名だったんですね。何かのコードかと思いました。(笑) 問題なく目的の作業が出来るようになり、感謝いたします。ありがとうございました。ホントに助かりました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。Wendy02です。 >デスクトップ上のワードというフォルダーに保存する。 キメウチ(固有のPCのデスクトップ)でよろしいですか? キメウチでない(どのPCにも応用できるもの)と、少し考えなくてはなりません。。 例えばこんな風にして MY_PATH As String = "C:\Documents and Settings\[ユーザー名]\デスクトップ\Word\" [ユーザー名], Word の部分をそちらのPCに合うように書き換えてください。 Sub TestSaveR() Dim FileName As String Dim SaveName As String Const MYPATH As String = "C:\Documents and Settings\[ユーザー名]\デスクトップ\Word\"  FileName = ActiveDocument.Name  SaveName = Mid(FileName, 1, InStrRev(FileName, ".") - 1)    ActiveDocument.SaveAs MYPATH & SaveName, FileFormat:=wdFormatDocument  ActiveDocument.Close False  Application.Quit End Sub

wasamon
質問者

お礼

自分なりに考えて、以下の行を削除したらうまく行きました。 Application.Quit 本当にありがとうございました。最後にもう一つ質問させてください。 Application.Quit 'Application.Quit は何が違うんでしょうか?

wasamon
質問者

補足

Wendy02さん ありがとうございます!出来ました。感謝です。 しかし、ファイルを同時に10個開いて、一つ目のファイルで実行すると一つ目のファイルは保存できるんですが、その他のファイルも同時に閉じてしまいます。最初に教えていただいた方法だと一つずつマクロを実行することが出来たんですが・・・。よろしくお願いします。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 たぶん、ファイルフォーマットを変えてあげないといけないのだと思います。 拡張子は、以下の & ".doc" は、本来要りませんが、一応、拡張子は、Wordの標準で付けておきます。 また、保存先が、以下の場合、カスタマー設定のデフォルトフォルダになります。当たり前のことですが、一応、VBAのコードの保存先は、Normal.Dot 側がよろしいかと思います。 Sub TestSave() Dim FileName As String Dim SaveName As String  FileName = ActiveDocument.Name  SaveName = Mid(FileName, 1, InStrRev(FileName, ".") - 1) & ".doc"    ActiveDocument.SaveAs SaveName, FileFormat:=wdFormatDocument  ActiveDocument.Close  'Application.Quit End Sub

wasamon
質問者

補足

ありがとうございました。出来ました。大変助かります。 >保存先がカスタマー設定のデフォルトフォルダー・・・ こちらは変更できるでしょうか?もしくは、特定のフォルダーに保存するように出来るでしょうか? 例えば、デスクトップ上のワードというフォルダーに保存する。と言う感じです。 よろしくお願いします。

  • starsip
  • ベストアンサー率36% (22/60)
回答No.1

Sub test()'保存してファイルを閉じる ThisDocument.Save ThisDocument.Close End Sub Sub test2()'保存してwordを終了する ThisDocument.Save Application.Quit End Sub

wasamon
質問者

お礼

回答ありがとうございました!

関連するQ&A

  • Word2013でマクロが動かない

    Word2013のマクロが上手く動かない 【環境】 Windows8.1 + Office2013(Word2013) 【目的と操作】 1クリックでヘッダーにファイル名 と ページを表示できるようにする ファイル名が「あああ.doc]だとすると、ファイルのヘッダーに   あああ 1 page   とフォント:メイリオ、ポイント9 で 右寄せで表示させるようにしたい 操作は 1.マクロ記録 2.ヘッダーを選択し、ドキュメント情報のファイル名を選択 3.ページ番号の現在の位置を選択 4.ファイル名とページ番号、ページ番号とpage の間にスペースを入れる 5.入力したヘッダーに対してフォントの設定と右寄せをする 6.ヘッダーフッターの終了をクリック 7.マクロ記録終了 できたマクロを指定すると、 実行時エラー5941 指定されたコレクションのメンバは表示されません と表示されて、実行できません。 VBAについては全くわからないので、デバックの画面を見てもさっぱりわかりません。 2003の時には操作手順をマクロで記録して便利に使っていたので、 2013でも同様に使いたいと思っています。 どのように直したらよいか、教えていただけると助かります。 どうぞよろしくお願い致します。

  • Word 2007でのマクロ保存方法

    Word XPからWord 2007に乗り換えて、マクロの保存方法が分からず困っています。 XPでは、マクロを記録するだけで文書を閉じる時に自動的にNormal.dotテンプレートにマクロが保存されたようなのですが、Word 2007ではWordを終了する(あるいはPCの電源を落とす)と、記録したマクロが消えてしまいます。 Word 2007では、自動的にNormal.dotテンプレートにマクロを保存することはできないのでしょうか? なお、システムはWindows 7です。 よろしくお願いします。

  • Wordファイルから別Wordファイルのマクロを起動したい

    Word2003でマクロを作成しました。 WordファイルAにはマクロを保存したくないので、 WordファイルBに保存しています。 このマクロをWordファイルAから起動したいのですができません。 WordファイルAを開き「マクロの実行」ダイアログボックスから WordファイルB内のマクロを選択して 「実行」ボタンを押して実行したいのですが、 一覧にマクロ名が表示されないのです。 Excelの場合は、ExcelファイルAからExcelファイルBのマクロを 呼び出すことができるのですが、 (例えばブック名!モジュール名.マクロ名) Wordではできないのでしょうか? 何か設定が必要でしょうか? ご存知の方がいらっしゃいましたら、 よろしくお願いいたします。

  • エクセルのマクロの保存が出来ません。

    70歳の手習いでVBA関数の勉強を始めましたが、マクロの保存がどうしても出来ません。 「マクロの記録」→「一連の操作」→「記録終了」で作成、その後「Ctri+ショットキー」で動作はするので、喜んでファイルを閉じようとすると「次の機能はマクロなしのブックには保存できません」と注意され、そこから注意の内容通りするのですが、どうしても巧く行きません。仕方なく何とかファイルを閉じて、再立ち上げしたらマクロが消えているのです。 一応、ファイルはマクロ有効ファイルになっており、拡張子も.Xlsmで、アイコンに「ビックリマーク」もついています。宜しくお願い致します。

  • エクセル2007で、「マクロ」形式保存かつ「暗号化」状態で、マクロが実行できない

    エクセル2007を最近導入しました エクセル2003で作成したファイルを、2007形式に順次変換して、保存・使用しています そんなファイルの中に、「読み取りパスワード」をかけていて、 かつ、簡単なマクロ(自動記録機能を元に作成)を含むファイルがあります マクロの保存先は「作業中のブック」です このような種類のファイル(パスワード保護+マクロ実行)を2007に変換・保存しようとすると 「マクロ有効ブック形式」(*.xlsm)で保存するようにメッセージが出ます メッセージにしたがい、保存・終了し、改めて開こうとすると 「マクロを実行するためには…暗号化を解除する」ようにメッセージが表示されます (なお、ファイルにアクセス制限は設定していません) つまり、2007では、「パスワード保護+マクロ実行」というのは、混在できないようなのです 私の操作方法の誤りでしょうか? それとも、このような仕様になっていて、何か、回避する方法があるのでしょうか? 教えてください。お願いします。

  • ワードのマクロ

    いつもお世話になっております。 マクロ初心者の上に今回はワードで使いたく。 ワード(2016)の定型書式の特定の場所(行)をファイル名にして所定のフォルダーに保存まで、をマクロにしたいのですが。 少しいじってみたのですが自動記録ではファイル名(場所)のコピーが出来ないことや、出来れば2か所(2行)をファイル名にして指定のフォルダーに保存したいのです。

  • エクセルのマクロで保存して終了が出来ない

     あるエクセルファイルにて、VBAで Sub 保存して終了() ActiveWorkbook.Save ActiveWorkbook.close End Sub  というマクロを作成したのですが、1回目は正常に動いたのですが次からは、そのマクロを動かしても画面が一瞬点滅するだけで、上書き保存も終了もしません。  それで、ファイルを別の名前をつけて保存してその、別の名前で保存したファイルで、また上のマクロを動かすと1回目は正常に動くのですが、やはり次に開くと動かなくなります。  因みに他のマクロは正常に動作し、この保存して終了させるマクロだけが変なのです。  マクロの書き方を変えて以下のようにしてもだめでした。 Workbooks("ナントカ.xls").Close savechanges:=True  やはり、何回書き方を変えても保存して終了させることだけが出来ません。普通にマクロを使用せず手動ですることは出来るのですが…。  分かりにくい説明ですみませんが、よろしくお願いします。

  • Word2007でマクロの記録を利用しております。マクロの記録を登録し

    Word2007でマクロの記録を利用しております。マクロの記録を登録したファイルでは正しく実行されますが、別のファイルには適応されません。マクロの記録では、ファイルにパスワードを設定するマクロを登録しました。

  • マクロで「名前を付けて保存」を実行したいのですが

    エクセル2000でマクロを作成しています。 そのマクロを作成したファイルを、各ユーザーが使用しますが、作業途中のファイルを「名前を付けて保存」したいと考えています。 しかし、各ユーザーのPC環境がまちまちなので、保存ファイルのパス名の記述が画一的に出来ない状況となっています。 そこで、エクセルの名前を付けて保存のショートカットキー『F12』の押下動作をユーザーフォーム上のコマンドボタンで出来るようにしたいのです。 単純にF12キーを押せばいいのですが、ユーザーはショートカットキー操作は全く慣れていないので、ユーザーフォーム上のオブジェクトだけで操作が出来るようにしたいと考えています。 どなたか、この方法がお分かりの方がおられましたら、ご教示頂きたくお願い致します。

  • エクセルマクロでご教示ください

    エクセルで作られたデータファイルに対し、ある操作を施して上書き保存するというマクロを作りました。 そのマクロを走らせるとファイル名を聞いてきまして、そこでファイル名を入力してやれば、ある操作を施したあと 自動的に上書き保存までしてくれるのですが、対象ファイルが複数個あると、ひとつ実行したあとまたひとつ ファイル名を入れて、またそれが終ったら次のファイル名を・・・というように、ひとつひとつ実行しなければならない というのが現状です。 これを次のように改良したいのですが、どうすればいいのでしょうか? 1.マクロを立ち上げる。 2.処理する複数のファイルが入っている「フォルダ」を選ぶ。  (一覧表示のウィンドウが出てきて、その中で「フォルダ」を選ぶ) 3.そのフォルダの中に入っているエクセルファイル全てに対し、既に作成済みのマクロを順次実行する。 というものです。 よろしくお願いします。

専門家に質問してみよう