
保存されているWordのフォルダ名:”A”の階層化に、"01.出力先"というフォルダを作成しました。
フォルダ名:”A”に保存されているWordを立ち上げ、マクロ実行後、"01.出力先"フォルダにファイルを格納したいのですが、以下マクロで
”ファイル名 = myParentFolderPath & "\01.出力先\" & "ファイル名" & ".docx"”
がエラーになってしまいます。
どのようにマクロを書けば良いのか?教えてください。
--------------------------マクロ--------------------------------------------------
Sub ファイル出力()
'
' ファイル出力 Macro
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
.LastRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
End With
.Execute Pause:=False
End With
Dim ファイル名 As String
ファイル名 = ActiveDocument.Paragraphs(1).Range.Text
ファイル名 = Left(ファイル名, Len(ファイル名) - 1) & ".docx"
ActiveDocument.SaveAs _
ファイル名 = myParentFolderPath & "\01.出力先\" & "ファイル名" & ".docx", FileFormat:= _
wdFormatXMLDocument, Password:="ddddd1001"
End Sub
No.7ベストアンサー
- 回答日時:
Sub ファイル出力()
'
' ファイル出力 Macro
'
Dim myParentFolderPath As String
myParentFolderPath = ActiveDocument.Path
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
.LastRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
End With
.Execute Pause:=False
End With
Dim ファイル名 As String
ファイル名 = ActiveDocument.Paragraphs(1).Range.Text
ファイル名 = Left(ファイル名, Len(ファイル名) - 1) & ".docx"
ファイル名 = myParentFolderPath & "\01.出力先\" & ファイル名
ActiveDocument.SaveAs ファイル名
Close
End Sub
No.8
- 回答日時:
No.7の回答者です。
いきなり、修正したマクロだけを回答してしまいました。
以下は、修正部分の説明です。
ActiveDocumentの使い方が、実行ファイルと出力先の新規文書への
二つになっているために、保存するパスがおかしくなるのです。
実行ファイルのパスを事前にmyParentFolderPath として取得して、
差し込み印刷実行後に、出力先のファイルにmyParentFolderPathと
追加したフォルダ名+ファイルの先頭にある文字列のファイル名へと
なるように、変数"ファイル名"を書き換えます。
あとは、ActiveDocument.SaveAs又はActiveDocument.SaveAs2
としてファイル名の変数として取得したもので保存します。
Closeを追加していますが、不要なら削除してください。
No.6
- 回答日時:
>01.出力先とマクロ実行Documentはともに
一応、もう一度下記のコードで確認してみてください
Sub getPath()
Dim ファイル名 As String
ファイル名 = ActiveDocument.Paragraphs(1).Range.Text
ファイル名 = Left(ファイル名, Len(ファイル名) - 1)
MsgBox ActiveDocument.Path & "\01.出力先"
MsgBox ActiveDocument.Path & "\01.出力先" & "\" & ファイル名 & ".docx"
End Sub
No.5
- 回答日時:
>保存されているWordのフォルダ名:”A”の階層化に、"01.出力先"というフォルダを作成しました。
>myParentFolderPathが、Cドライブのフォルダーになっていて、意図したパスが取得できず
意図するパスとはどのようなパスですか?
親フォルダパスを取得したりしていませんか?
ThisDocument.Parent.Path
マクロ実行Documentはどこに保存していますか?
未保存でしたら 01.出力先フォルダのある同じ階層に保存してください
検証
myParentFolderPath = ThisDocument.Path を
myParentFolderPath = ActiveDocument.Path で
No.4
- 回答日時:
Dim myParentFolderPath
myParentFolderPath = ThisDocument.Path
Dim ファイル名 As String
ファイル名 = ActiveDocument.Paragraphs(1).Range.Text
ファイル名 = Left(ファイル名, Len(ファイル名) - 1) '& ".docx"
ActiveDocument.SaveAs2 FileName:=myParentFolderPath _
& "\01.出力先\" & ファイル名 & ".docx", FileFormat:= _
wdFormatXMLDocument, Password:="ddddd1001"
ActiveDocument.Close SaveChanges:= False
ActiveDocumentを閉じています 保存したばかりなので
SaveChanges:= False は不要ですが保存しないで閉じるコードです
Wordアプリケーション自体を終了する場合は
ActiveDocument.Close SaveChanges:= Falseの 上に
Application.Quit SaveChanges:=wdPromptToSaveChanges を加えます
コピペで使えると思いますよ
ActiveDocument.SaveAs2 FileName:=myParentFolderPath _
& "\01.出力先\" & ファイル名 & ".docx", FileFormat:= _
wdFormatXMLDocument, Password:="ddddd1001"
Application.Quit SaveChanges:=wdPromptToSaveChanges
ActiveDocument.Close
End Sub
諄いようですがApplication.Quit を加えるとWordアプリケーション自体が終了します
保存先はマクロ有効Documentではないので 編集済みコードが消えますので 実行前に作業しているDocumentを 必ず保存 してください
Document.countなどでDocumentの数でApplication.Quitを実行するなんて方法もありますので自身で調べてみてください
ファイル名に使えない文字については参考例 Functionを記します
使えない文字をアンダーバーに変換しています
Public Function character_change(ByVal strName As String, _
Optional ByVal repChar As String = "_") As String
Dim buf As String, ngChar
buf = strName
For Each ngChar In Array("\", "/", ":", "*", "?", """", "<", ">", "|", "[", "]")
buf = Replace(buf, ngChar, repChar)
Next
character_change = buf
End Function
使い方はファイル名の作成最後に
ファイル名 = character_change(ファイル名)
No.3
- 回答日時:
myParentFolderPath_& よく見て
myParentFolderPath _
& "\01.出力先\"・・・
あと、取敢えず テスト段階なので
, Password:="ddddd1001" は 削除しておいた方が確認が早いかな
保存した後の開かれているファイル名の確認もしてください
Close が無いですね・・以下の意味がわかると思います
No.2
- 回答日時:
よく見たら
ActiveDocument.SaveAs _
ファイル名 = myPa・・・
書き方間違ってます
myParentFolderPath = ThisDocument.Path
ファイル名 = Left(ファイル名, Len(ファイル名) - 1)
ActiveDocument.SaveAs2 FileName:=myParentFolderPath _
& "\01.出力先\" & ファイル名 & ".docx", FileFormat:= _
wdFormatXMLDocument, Password:="ddddd1001"
こんな感じだと思いますが Close が無いですね・・
1回実行すると開いているドキュメントは保存先のドキュメントとなりますので、そのままもう一度実行するとThisDocument.Pathは保存先のパスになります(\01.出力先が含まれる)よってエラーになると思います
名前を変更して何度も出力する場合は新規Documentを作りそれを保存するようにすれば繰り返しの処理が可能になると思います
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
word VBA ファイル名 保存
その他(Microsoft Office)
-
(実行時エラー5852)ExcelデータをWordに差し込んだ後、Wordファイルを分割するマクロ
Word(ワード)
-
WORDマクロで特定文字から別文字までを範囲選択したい
Word(ワード)
-
-
4
ワードで画像を自動で挿入する方法
Word(ワード)
-
5
wordで10ページのものを1ページずつ分けたファイルにするには?
Word(ワード)
-
6
エクセルVBAで一つ上の階層を指定して保存したい
Excel(エクセル)
-
7
ExcelVBAで既に開いてるwordを閉じる
Excel(エクセル)
-
8
【VBA】エクセルの指定セルの値を、Wordの指定場所に貼る方法
Excel(エクセル)
-
9
エクセルマクロでワードの一ページ目をコピーして新たに二ページを追加して、一ページ目の内容を貼り付ける
Visual Basic(VBA)
-
10
【VBA】マクロの入ったファイルと同じフォルダに,出力したファイルを保存するコードについて
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Acccess レポートをグループ別...
-
シェルコマンドの 2>&1 とはど...
-
c言語の質問です。 ランダムに4...
-
C++/CLIにて、System.String^型...
-
CreateProcess関数と実行後の戻...
-
Wordマクロで指定したフォルダ...
-
AccessVBA複数レポート条件毎に...
-
構造体のファイル出力
-
Accessでのレポート印刷待機方法
-
FORTRANの出力データの左寄せが...
-
コマンド(例えばls)の出力結果...
-
C++ BuilderでPDF出力
-
(VBA)書式が変更されてしまい...
-
どんなプログラムを書いても指...
-
Access クエリ実行が急に非常に...
-
C言語初心者の質問失礼します。
-
FTPでputすると空ファイルが出...
-
バッファとは何ですか
-
フルパスから最後のディレクト...
-
OLE又はDDEを使うVISUAL BESIC...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Acccess レポートをグループ別...
-
コマンド(例えばls)の出力結果...
-
【ExcelVBA】UTF-8(BOM無)でC...
-
VC++でUTF-8のファイルを出力し...
-
ファイル形式またはファイル拡...
-
ファイルの文字コードをUTF-8に...
-
ファイル出力の場所を指定
-
ファイルI/O完了待ち
-
大量のHTMLデータのテキスト、...
-
シェルコマンドの 2>&1 とはど...
-
Wordマクロで指定したフォルダ...
-
gccによって、BOM付きのUTF-8で...
-
外国語とCSVについて
-
AccessVBA複数レポート条件毎に...
-
pcap形式データをテキストへ抽出
-
重複チェックプログラム
-
テキストファイルに改行コード...
-
BitBltについて。
-
C++ fprintf_sの使い方がわからん
-
半年以上前のファイルの時刻表示
おすすめ情報
Dim ファイル名 As String
ファイル名 = ActiveDocument.Paragraphs(1).Range.Text
myParentFolderPath = ThisDocument.Path
ファイル名 = Left(ファイル名, Len(ファイル名) - 1)
「ActiveDocument.SaveAs2 FileName:=myParentFolderPath_& \"01.出力先"\ & ファイル名 & ".docx", FileFormat:= _
wdFormatXMLDocument , Password:="dddddd1001"」
「」の部分が、コンパイルエラー:修正候補:式と出ました。どうしたら良いでしょうか。
ActiveDocument.SaveAs2 FileName:=myParentFolderPath_& \"01.出力先"\ & ファイル名 & ".docx", FileFormat:= _wdFormatXMLDocument
Close
としましたが、& ファイル名の&に赤く色がつきます。
ちなみにファイル名は、01【印刷:2】契約書(AA立川).docxです。
ご丁寧にありがとうございます。
ただ、myParentFolderPathが、Cドライブのフォルダーになっていて、意図したパスが取得できず
ActiveDocument.SaveAs2 FileName:=myParentFolderPath _
& "\01.出力先\" & ファイル名 & ".docx", FileFormat:= _
wdFormatXMLDocument, Password:="ddddd1001"、
が黄色くなってしまいします。絶対パスでやらないと無理なのでしょうか。
ご丁寧な、ご回答いつもありがとうございます。
意図するパスは、
サーバー>会社名>個人フォルダー>簡易稟議書作成ツール
>00.入力データ>解約・新規>01.出力先
01.出力先とマクロ実行Documentはともに>解約・新規>配下に保存」しています。