質問
Wordマクロを使った保存方法
- 投稿日時:2006/08/24 16:28

一太郎で作成したファイルをWindowsでWordで開くように設定しあります。Wordで開いた後に【名前をつけて保存】ファイル名はそのまま使用したいので【保存】【ファイルを閉じる】と言う操作をマクロを使ってやろうとしてるのですが、マクロを実行しようとするとファイルが閉じるだけで、保存されていません。
マクロの記録で上記の操作を一通り実行し記録の終了だけではダメでしょうか?
回答 (5件)
- 最新から表示
- 回答順に表示
- ベストアンサーのみ表示
No.5
- 回答日時:2006/08/25 15:56
こんにちは。Wendy02です。
こちらでは、一太郎ファイルがありませんので、txt ファイルで試しています。それで誤解を与えてしまいました。
同じ一太郎ファイルを開ける可能性がなければよいのですが、先ほどやってみて、同じファイルを開けて行うと、ダイアログが出てきて、「既にそのファイルはある・・・」なんていうメッセージが出てきます。
Application.DisplayAlerts = False なんていう技もありますが、それで、前のものを消すのも問題かなって思って、枝番をつけて保存することにしました。
Wordで 以下のファイルを開けました。
8114301.jtd (一太郎ファイル)
↓
8114301.doc (Wordファイルで保存)
8114301.jtd (もう一度同じ 一太郎ファイルを知らずに開けて実行してしまった)
↓
8114301_1.doc (枝番をつけて、Wordファイルとして保存)
ということをします。
8114301.doc
8114301_1.doc
と同じものですが、上書きせずに、枝番で別のファイルになっています。
余計なことかとは思いましたが、上書きしてなくなってしまう、安全を考えました。お分かりになりますでしょうか?
この回答へのお礼
ありがとうござます。理解できました。8114301と言うのはファイル名だったんですね。何かのコードかと思いました。(笑)
問題なく目的の作業が出来るようになり、感謝いたします。ありがとうございました。ホントに助かりました。
No.4ベストアンサー20pt
- 回答日時:2006/08/25 13:54
こんにちは。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 '間違って同じテキストファイルを開けて行った場合
よろしければ、解説お願いします。
- 質問者のみ
- この回答にお礼をつける
No.3
- 回答日時:2006/08/25 11:51
こんにちは。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
この回答へのお礼
自分なりに考えて、以下の行を削除したらうまく行きました。
Application.Quit
本当にありがとうございました。最後にもう一つ質問させてください。
Application.Quit
'Application.Quit
は何が違うんでしょうか?
この回答への補足
Wendy02さん
ありがとうございます!出来ました。感謝です。
しかし、ファイルを同時に10個開いて、一つ目のファイルで実行すると一つ目のファイルは保存できるんですが、その他のファイルも同時に閉じてしまいます。最初に教えていただいた方法だと一つずつマクロを実行することが出来たんですが・・・。よろしくお願いします。
No.2
- 回答日時:2006/08/24 21:04
こんばんは。
たぶん、ファイルフォーマットを変えてあげないといけないのだと思います。
拡張子は、以下の
& ".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
この回答への補足
ありがとうございました。出来ました。大変助かります。
>保存先がカスタマー設定のデフォルトフォルダー・・・
こちらは変更できるでしょうか?もしくは、特定のフォルダーに保存するように出来るでしょうか?
例えば、デスクトップ上のワードというフォルダーに保存する。と言う感じです。
よろしくお願いします。
- 質問者のみ
- この回答にお礼をつける
No.1ベストアンサー10pt
- 回答日時:2006/08/24 19:54
Sub test()'保存してファイルを閉じる
ThisDocument.Save
ThisDocument.Close
End Sub
Sub test2()'保存してwordを終了する
ThisDocument.Save
Application.Quit
End Sub
この回答へのお礼
回答ありがとうございました!
このQ&Aを見た人はこんなQ&Aも見ています
注目の記事
教えて!Firefox
より速く、より安全なウェブブラウザ「Firefox(ファイアーフォックス)」に関する疑問をみんなで解決。全くの初心者から上級者までFirefoxの魅力を十分に味わうために、教えて!gooのユーザーみんながお手伝いします。
このQ&Aを見た人がよく見るQ&A
このカテゴリで人気のQ&Aランキング
- 4エクセル STDEVとSTDEVPの違い
- 5Excel文書が読み取り専用になって解...
- 6エクセルのセルに入力した文字数
- 7excelからexcelへの差し込み印刷
- 8VLOOKUP関数で複数の検索値を設定し...
- 9エクセルに写真の貼り付けが出来ま...
- 10EXCELの日付データを文字列に変換し...
- 11エクセルで列の全ての項目に文字を...
- 12エクセルで条件に合うものを別シー...
- 13Excelで、エラーの #DIV/0! を表示...
- 14エクセルにおいて、シートの保護を...
- 15行間を詰めるには・・・
- 16エクセルで、条件に一致した行を別...
- 17エクセルで図形やオートシェイプの...
- 18ワードのチェックボックス
- 19エクセル 0や空白のセルをグラフに...
- 20Excelで入力したデータを他のシート...






