プロが教える店舗&オフィスのセキュリティ対策術

\00.入力先ディレクトリ上でWORDを開いた状態から始まり、
"txt"で、ファイル名の設定。

\01.出力先上で、名前を付けて保存をしたいのですが、
「名前付き引数が見つかりません」とコンパイルエラーになってしまいます。

\01.出力先\" & txt & ".docx" がおかしいのでしょうか?
素人ですいません、ご教授お願いします。

以下、コードになります。よろしくお願いします、

Selection.WholeStory
Selection.Copy


ChangeFileOpenDirectory _
ThisWorkbook.Path & "\01.出力先\"
Workbooks.Open FileName:= _
ThisWorkbook.Path & "\01.出力先\01【印刷:2】ああああああああああ(案).docx"


txt = Selection.Text

With Application.FileDialog(msoFileDialogSaveAs)

.InitialFileName = txt 'ファイル名の設定


End With

ChangeFileOpenDirectory _
ThisWorkbook.Path & "\01.出力先\"
ActiveDocument.SaveAs FileName:= _
ThisWorkbook.Path & "\01.出力先\" & "txt" & ".docx" _
, FileFormat:=wdFormatXMLDocument, LockComments:=False, Password:= _
"docomo1001", AddToRecentFiles:=True, WritePassword:="", _

ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
False, CompatibilityMode:=15


Application.Quit
End Sub

A 回答 (2件)

他の回答が付かないようなので、未検証ですが私なりのアドバイス。



名前を付けて保存のファイル名にあたる
 ThisDocument.Path & "\01.出力先\" & "txt" & ".docx"
は、変数で処理しておくほうが良いと思います。
それと省略可な引数も、引数の内容を理解するまで省略しておいた
ほうが理解しやすいと思います。
https://docs.microsoft.com/ja-jp/office/vba/api/ …

ActiveDocument.SaveAs _
FileName:= ThisDocument.Path & "\01.出力先\" & "txt" & ".docx", _
FileFormat:=wdFormatXMLDocument, _
LockComments:=False, _ ' 省略可
Password:= "docomo1001", _
AddToRecentFiles:=True, _ ' 省略可(既定値)
WritePassword:="", _ ' 省略可
ReadOnlyRecommended:=False, _ ' 省略可(既定値)
EmbedTrueTypeFonts:=False, _ ' 省略可(既定値)
SaveNativePictureFormat:=False, _ ' 省略可(既定値)
SaveFormsData:=False, _ ' 省略可(既定値)
SaveAsAOCELetter:= False, _ ' 省略可(既定値)
CompatibilityMode:=15

これを書き換えると
 ActiveDocument.SaveAs2 _
 FileName:= Fname ,_ ' 変数で処理
 FileFormat:=wdFormatXMLDocument, _
 Password:= "docomo1001", _
 CompatibilityMode:=15
となり、シンプルで読みやすくなります。
変数Fnameは、
 Fname = ThisDocument.Path & "\01.出力先\" & "txt" & ".docx"
にするだけです。
気になるのは、ThisDocument.Pathでフォルダパスです。
例えば、
"C:\Users\ユーザー名\Documents\Word文書\\00.入力先"
のWord文書を開いた状態で、
"C:\Users\ユーザー名\Documents\Word文書\\01.出力先"
に名前を付けて保存するとしたら、ThisDocument.Path & ファイル名
での保存は保存先が違ってきます。
ChangeFileOpenDirectory で書き換えるとしても、
https://docs.microsoft.com/ja-jp/office/vba/api/ …
開いている文書のパスを書き換えるものではありません。

まずは、現在開いている文書の親フォルダのパスを取得することが
必要です。
https://www.wordvbalab.com/code/7292/
こちら↑のマクロ2にあるマクロで、 myParentFolderPath として取得
しているのがわかると思います。
最初の myFolderPath = "ファイル名" を
 myFolderPath = ThisDocument.Path
に書き換えれば、取得できているはずです。
あとは、
 FileName:= myFolderPath & "\01.出力先\" & "txt" & ".docx",
のように組み込むことで対応できると思います。
    • good
    • 0
この回答へのお礼

丁寧なご回答ありがとうございます。
トライしてみます!

お礼日時:2021/01/14 18:00

ThisWorkbook.Path ???


開いているExcelブックからのマクロ作業なの?
https://kosapi.com/post-3986/

Word文書を開いていて、その文書のマクロで実行するなら、
ThisDocument.Path & "\01.出力先\" & "txt" & ".docx" _
にしないと。
https://tonari-it.com/word-vba-document-open-clo …
それと、Wordのバージョンによっては、SaveAs2メソッドで
名前を付けて保存したほうが良い場合も。
https://tonari-it.com/word-vba-saveas2-getbasena …
    • good
    • 1
この回答へのお礼

ありがとうございます。
だいぶ先が見えてきました!

お礼日時:2021/01/13 15:40

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