
保存されている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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【VBAファイル移動】2つのマクロを順に実行。1つ目のマクロが実行不可⇒2つ目が実行不可となる件 2 2022/07/29 12:17
- Excel(エクセル) Excelのマクロコードについて教えてください。 1 2022/03/27 10:47
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/02/21 11:19
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Excel(エクセル) 【マクロ】エラーが発生⇒実行時エラー58既に同名のファイルが存在 5 2022/08/31 10:03
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/11 11:05
このQ&Aを見た人はこんなQ&Aも見ています
-
word VBA ファイル名 保存
その他(Microsoft Office)
-
(実行時エラー5852)ExcelデータをWordに差し込んだ後、Wordファイルを分割するマクロ
Word(ワード)
-
ExcelVBAで既に開いてるwordを閉じる
Excel(エクセル)
-
-
4
WORDマクロで特定文字から別文字までを範囲選択したい
Word(ワード)
-
5
ワードで画像を自動で挿入する方法
Word(ワード)
-
6
Word VBA。各マクロの間に待ち時間を指定するには?
Word(ワード)
-
7
VBAで文字を反映させると255文字の制限になってしまいます。
Visual Basic(VBA)
-
8
【VBA】エクセルの指定セルの値を、Wordの指定場所に貼る方法
Excel(エクセル)
-
9
エクセルマクロでワードの一ページ目をコピーして新たに二ページを追加して、一ページ目の内容を貼り付ける
Visual Basic(VBA)
-
10
複数のマクロボタンをまとめて一つのマクロボタンにするということ。
Excel(エクセル)
-
11
実行時エラー´5854´ 文字列型パラメーターが長すぎます。
Visual Basic(VBA)
-
12
【VBA】マクロの入ったファイルと同じフォルダに,出力したファイルを保存するコードについて
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンド(例えばls)の出力結果...
-
ファイル出力の場所を指定
-
ファイルの文字コードをUTF-8に...
-
Visual Basic 6.0で 1行 読...
-
C++/CLIにて、System.String^型...
-
VB.NETでExcelファイルを出力す...
-
C++ fprintf_sの使い方がわからん
-
シェルコマンドの 2>&1 とはど...
-
FORTRANの出力データの左寄せが...
-
【ExcelVBA】UTF-8(BOM無)でC...
-
Wordマクロで指定したフォルダ...
-
Accessでのレポート印刷待機方法
-
CBool関数について VB6とVB.net...
-
VBA でメモ帳へ保存する際の保...
-
エクセルVBA→シート名でCSV出力...
-
C言語でプログラムを作成しなさ...
-
BitBltについて。
-
特定の列・行をテキストファイ...
-
CSV形式に変換
-
PDFファイルを指定の名前でプロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【ExcelVBA】UTF-8(BOM無)でC...
-
テキストファイルに改行コード...
-
コマンド(例えばls)の出力結果...
-
VC++でUTF-8のファイルを出力し...
-
シェルコマンドの 2>&1 とはど...
-
Acccess レポートをグループ別...
-
ファイル形式またはファイル拡...
-
pcap形式データをテキストへ抽出
-
ファイル出力の場所を指定
-
AccessVBA複数レポート条件毎に...
-
外国語とCSVについて
-
VBA でメモ帳へ保存する際の保...
-
サウンド出力のデバイスを選択...
-
C++ fprintf_sの使い方がわからん
-
アプリを実行すると、作成者を...
-
ファイルの文字コードをUTF-8に...
-
1行ずつではなくまとめてファイ...
-
Wordマクロで指定したフォルダ...
-
SendKeys "^V", True(貼り付け...
-
CSVファイルを任意の場所に出力...
おすすめ情報
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はともに>解約・新規>配下に保存」しています。