質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Word

Microsoft WordはMicrosoftが開発した業務用の文書生成用のソフトウェアです。

ダイアログ

ユーザーにウィンドウやボックス等の形で個別で表示されるフォームであり、ユーザーに判断を促す目的で表示される。ユーザーが見逃す事のないよう、操作中のフォーム上にポップアップして表示される。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Q&A

解決済

4回答

2140閲覧

word2013 vba 新規保存時に「名前を付けて保存」ダイアログを表示しない方法

poko_poko

総合スコア168

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Word

Microsoft WordはMicrosoftが開発した業務用の文書生成用のソフトウェアです。

ダイアログ

ユーザーにウィンドウやボックス等の形で個別で表示されるフォームであり、ユーザーに判断を促す目的で表示される。ユーザーが見逃す事のないよう、操作中のフォーム上にポップアップして表示される。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

0グッド

0クリップ

投稿2018/01/19 06:09

編集2018/01/19 06:23

###前提・実現したいこと
word(office2013)でpdfを開き、ワードファイル(docx)として保存する処理を作成しています。
wordのvbaでファイルを作成し、名前を付けて保存する際、
必ず「名前を付けて保存」ダイアログが表示されてしまいます。
ループ処理で何度も保存したいのですが、ダイアログを表示せずに
保存する方法を教えてください。

file = Dir(path & "*.pdf") Do While (file <> "") Documents.Open FileName:=path & file With ActiveDocument .SaveAs2 FileName:=Replace(path & file, ".pdf", ".docx"), _ FileFormat:=wdFormatXMLDocument .Close End With file = Dir Loop

###試したこと
Application.DisplayAlerts = False を追加
.Close → .Close False に変更

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

unz.hori

2018/01/19 06:20

使用しているMicrosoft Wordのバージョンは何でしょうか?
poko_poko

2018/01/19 06:21

書いてませんでした。すみません。2013です。本文修正しておきます。
guest

回答4

0

ベストアンサー

こういう情報がありました。
http://azemichi2000.blogspot.jp/2015/01/saveas.html
参考まで。

投稿2018/01/19 07:33

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

poko_poko

2018/01/19 08:04

ありがとうございます。 ファイル→オプション→セキュリティセンター→セキュリティセンターの設定→アドイン 「全てのアプリケーションアドインを無効にする(機能が使えなくなる場合があります)(D)」にチェック しましたが、「名前を付けて保存」ダイアログが出てきます。 どこかの何かの設定……色々探して見ます。
ttyp03

2018/01/19 08:08

もしかして、と思いましたが、外れでしたか。申し訳ない。 ちなみに私もWord2013ですが、ダイアログは出ないですねぇ。 ダイアログが出るPCと出ないPCで設定周りを見比べてみるとか? もっとも設定が原因かもわからないですが・・・。
poko_poko

2018/01/19 08:25

いえいえ、少なくとも環境周りは確実と分かったのでありがたいです。 知り合いにファイル送ったらダイアログが出ませんでした(Win10) (Acrobatが入っていないから? 文字化け状態ですが) ちなみに私はWindows7です。 ひょっとしてWindowsのバージョン? 色々探し回って見ます。
ttyp03

2018/01/19 08:28

残念ながら私もWindows7(64bit)です。
poko_poko

2018/01/19 08:32

私はWin7(64bit)proです。 OSのバージョンの確率は低そうですね…
poko_poko

2018/01/22 00:10

パッチは適応されていました。 IEも(WordとIEで依存関係って意味が分かりませんが)見てみましたが やはりダイアログが表示されてしまいます。 何か意図しない場所で何かが起きているようなので一旦終了にさせて頂きます。 望みは薄いですが他にも色々試しながら、上手くいったら追記するかも知れません。 ありがとうございました。
ttyp03

2018/01/22 00:14

原因不明ですか。 お役に立てずにすみません。 原因が判明したら追記していただけると助かる人もいるかもしれません。
guest

0

それ、Replaceの方ですね。
デフォルトでは大文字小文字を区別する仕様で、
[Compare]にvbTextCompareを指定すると区別せず処理されます。

Replaceの結果を変数に入れるようにすると、
デバッグしやすいですね。

投稿2018/01/24 00:23

ExcelVBAer

総合スコア1175

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

poko_poko

2018/01/24 00:30

なるほどです。 色々環境周りもいじっていたので、ひょっとしたら複合技でのダイアログだったかも知れませんが、なんとか動いて良かったです。
guest

0

.SaveAs2 となっていますが、.SaveAs ではだめでしょうか?

こちらの環境では、Office2010、2013で保存できてます。

投稿2018/01/19 06:30

ExcelVBAer

総合スコア1175

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

poko_poko

2018/01/19 06:53

.SaveAs もダイアログが表示されてしまいました。
ExcelVBAer

2018/01/19 07:08

こちらの環境(Win7 32bit x Office2010 32bit) ではダイアログ出ずに保存できました。 ただ、Wordから作ったPDFを、上記コードで保存した結果、 よく分からない内容になっていますが。。。
poko_poko

2018/01/19 07:14

wordそのものの設定に何かあるのかも知れませんね……
ExcelVBAer

2018/01/19 07:19

そうなのかもしれませんね。。。 あ、自分で少し変えていた部分がありました。 Dim Doc As Document Set Doc = Documents.Open (FileName:=path & file) With Doc ・・・ 上記に変えても、変わらないでしょうか??
poko_poko

2018/01/19 07:30 編集

Dim Doc As Document file = Dir(path & "*.pdf") Do While (file <> "") Set Doc = Documents.Open(FileName:=path & file) With Doc .SaveAs FileName:=Replace(path & file, ".pdf", ".docx"), _ FileFormat:=wdFormatXMLDocument .Close End With file = Dir Loop でも、はやりダイアログが出てしまいます。
ExcelVBAer

2018/01/19 07:35

お力になれず残念です。。。
poko_poko

2018/01/19 08:27

ありがとうございます。 知り合いにword送って実行して貰ったらダイアログが出ませんでした。 SaveAsとSaveAs2試しながら環境周り色々探って見ます。
ExcelVBAer

2018/01/19 08:37

場合によっては、WindowsUpdate等で不具合が出ている可能性もあります。 ひょっとしたらですが、ttyp03 の件で、アドインを実際に外す(オプション→アドイン→ Comアドイン、Wordアドイン)というパターンも試してみてもいいかもしれません。
poko_poko

2018/01/22 00:12

COMアドインも色々いじってみましたが、どうも他の場所で起きているっぽいです。 目処がつかないので一旦終了とさせて頂きます。 ありがとうございました。
guest

0

原因が分かったため追記

PGにも問題?がありました。

元のPG

file = Dir(path & "*.pdf") Do While (file <> "") Documents.Open FileName:=path & file With ActiveDocument .SaveAs2 FileName:=Replace(path & file, ".pdf", ".docx"), _ FileFormat:=wdFormatXMLDocument .Close End With loop

1.読み込み元と書き込み先が同じだと「名前を付けて保存」ダイアログが表示
→ path と path2を作成
読み込みはpathを使用し、書き込みはpath2を使用
SaveAs2の命令文
× (Path & file, ".pdf", ".docx")
○ (Path2 & file, ".pdf", ".docx")に修正

2.SaveAs2で拡張子の大文字・小文字判断が行われている(windowsなのに何故でしょうね)
拡張子の大文字・小文字が合っている場合は「名前を付けて保存」が表示され
大文字・小文字が合っていない場合は拡張子PDFで保存される
※ 小文字で判定しているため大文字.PDFはそのまま大文字.PDFで保存先に保存される
しかも何故か「名前を付けて保存」は表示されない。

  対処:読み込んだPDFの拡張子が大文字か小文字か判断し、SaveAs2を分岐

完成系

file = Dir(path & "*.pdf") Do While (file <> "") Documents.Open FileName:=path & file If Right(file, 3) = "pdf" Then With ActiveDocument .SaveAs2 FileName:=Replace(path2 & file, ".pdf", ".docx"), _ FileFormat:=wdFormatXMLDocument .Close End With End If If Right(file, 3) = "PDF" Then With ActiveDocument .SaveAs2 FileName:=Replace(path2 & file, ".PDF", ".docx"), _ FileFormat:=wdFormatXMLDocument .Close End With End If file = Dir Loop

とりあえずこれで上手くいきました。
同じようなことで引っかかる人は参考までに。
WORD VBAは良くわかんないです。

投稿2018/01/24 00:14

poko_poko

総合スコア168

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問