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

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

A 回答 (5件)

こんにちは。

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

'------------------------------------------------

もしかしたら、余計な部分を入れてしまったかもしれません。その時はおっしゃってください。

この回答への補足

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

よろしければ、解説お願いします。

補足日時:2006/08/25 15:15
    • good
    • 0

こんにちは。

Wendy02です。

こちらでは、一太郎ファイルがありませんので、txt ファイルで試しています。それで誤解を与えてしまいました。

同じ一太郎ファイルを開ける可能性がなければよいのですが、先ほどやってみて、同じファイルを開けて行うと、ダイアログが出てきて、「既にそのファイルはある・・・」なんていうメッセージが出てきます。

Application.DisplayAlerts = False なんていう技もありますが、それで、前のものを消すのも問題かなって思って、枝番をつけて保存することにしました。



Wordで 以下のファイルを開けました。

 8114301.jtd (一太郎ファイル)
   ↓
 8114301.doc (Wordファイルで保存)


 8114301.jtd (もう一度同じ 一太郎ファイルを知らずに開けて実行してしまった)
   ↓
 8114301_1.doc (枝番をつけて、Wordファイルとして保存)

ということをします。

8114301.doc
8114301_1.doc

と同じものですが、上書きせずに、枝番で別のファイルになっています。
余計なことかとは思いましたが、上書きしてなくなってしまう、安全を考えました。お分かりになりますでしょうか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/08/25 16:35

こんにちは。

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

この回答への補足

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

補足日時:2006/08/25 12:26
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/08/25 12:33

こんばんは。



たぶん、ファイルフォーマットを変えてあげないといけないのだと思います。

拡張子は、以下の
& ".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

この回答への補足

ありがとうございました。出来ました。大変助かります。

>保存先がカスタマー設定のデフォルトフォルダー・・・

こちらは変更できるでしょうか?もしくは、特定のフォルダーに保存するように出来るでしょうか?
例えば、デスクトップ上のワードというフォルダーに保存する。と言う感じです。
よろしくお願いします。

補足日時:2006/08/25 07:42
    • good
    • 0

Sub test()'保存してファイルを閉じる


ThisDocument.Save
ThisDocument.Close
End Sub

Sub test2()'保存してwordを終了する
ThisDocument.Save
Application.Quit
End Sub
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/08/25 07:42

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