###前提・実現したいこと
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ページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/19 06:21
回答4件
0
ベストアンサー
こういう情報がありました。
http://azemichi2000.blogspot.jp/2015/01/saveas.html
参考まで。
投稿2018/01/19 07:33
総合スコア16998
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/19 08:04
2018/01/19 08:08
2018/01/19 08:25
2018/01/19 08:28
2018/01/19 08:32
2018/01/19 08:41
2018/01/22 00:10
2018/01/22 00:14
0
それ、Replaceの方ですね。
デフォルトでは大文字小文字を区別する仕様で、
[Compare]にvbTextCompareを指定すると区別せず処理されます。
Replaceの結果を変数に入れるようにすると、
デバッグしやすいですね。
投稿2018/01/24 00:23
総合スコア1175
0
.SaveAs2 となっていますが、.SaveAs ではだめでしょうか?
こちらの環境では、Office2010、2013で保存できてます。
投稿2018/01/19 06:30
総合スコア1175
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/19 06:53
2018/01/19 07:08
2018/01/19 07:14
2018/01/19 07:19
2018/01/19 07:30 編集
2018/01/19 07:35
2018/01/19 08:27
2018/01/19 08:37
2018/01/22 00:12
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
総合スコア168
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。