Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1460 / 13646 ツリー ←次へ | 前へ→

【74313】Word-xml形式⇔Word変換VBA PPNNOOPP 13/5/20(月) 23:27 質問[未読]
【74315】Re:Word-xml形式⇔Word変換VBA UO3 13/5/21(火) 10:02 発言[未読]
【74316】Re:Word-xml形式⇔Word変換VBA PPNNOOPP 13/5/21(火) 12:22 発言[未読]
【74317】Re:Word-xml形式⇔Word変換VBA PPNNOOPP 13/5/21(火) 13:13 発言[未読]
【74319】Re:Word-xml形式⇔Word変換VBA UO3 13/5/21(火) 21:01 発言[未読]

【74313】Word-xml形式⇔Word変換VBA
質問  PPNNOOPP  - 13/5/20(月) 23:27 -

引用なし
パスワード
   お世話になっております。

Word-xml形式(2003)⇔Word(2003)変換の自動置換ツールを探しておりますが、なかなか見つからないので、VBAで自動処理できないかと思い投稿させていただきました。

やりたいことは下記のとおりです。

1.特定のフォルダ内(サブフォルダを含む)のWord-xml形式(2003)ファイルを開き、Word2003形式に変換する。


上記とは逆に
2.特定のフォルダ内(サブフォルダを含む)のWord2003形式ファイルを開き、Word-xml形式(2003)に変換する。


※イメージ的にはファイルを開き、「名前を付けて保存」にて形式変更して保存する。

1.、2.それぞれ別々に処理したいので、ご検討の程よろしくお願いいたします。

【74315】Re:Word-xml形式⇔Word変換VBA
発言  UO3  - 13/5/21(火) 10:02 -

引用なし
パスワード
   ▼PPNNOOPP さん:

おはようございます。
Word文書は、ほとんど扱ったことはないのですが、この処理を ExcelVBA で実行したいということですか?
たとえば、Word内で、この操作をマクロ記録しますと、Wordのマクロブックができると思いますが
それではだめなんでしょうか?

【74316】Re:Word-xml形式⇔Word変換VBA
発言  PPNNOOPP  - 13/5/21(火) 12:22 -

引用なし
パスワード
   ▼UO3 様:
Word文書は、ほとんど扱ったことはないのですが、この処理を ExcelVBA で実行したいということですか?
たとえば、Word内で、この操作をマクロ記録しますと、Wordのマクロブックができると思いますがそれではだめなんでしょうか?

→Word VBAでも問題ございません。可能であればご教示頂きたくよろしくお願い申し上げます。

【74317】Re:Word-xml形式⇔Word変換VBA
発言  PPNNOOPP  - 13/5/21(火) 13:13 -

引用なし
パスワード
   ▼UO3 様:

お世話になっております。
補足説明しますと、特定のフォルダ内(サブフォルダ含む)に複数のファイルが存在(2000〜4000ファイル)しているので、自動処理をしたいと考えております。

以上よろしくお願いいたします。

【74319】Re:Word-xml形式⇔Word変換VBA
発言  UO3  - 13/5/21(火) 21:01 -

引用なし
パスワード
   ▼PPNNOOPP さん:

こんばんは

やはり、本来なら、WordVBA で Wordの世界で処理すべきものなんでしょうね。
ただ、私自身、WordVBAも経験がありませんし、ここは ExcelVBAの板ですので
おっかなびっくり、ExcelVBAでコードを書いてみました。
結構処理時間はかかるかもしれませんしロジックの自信度も60%ぐらいですが・・・・

こちらで、10ファイルぐらいで動かしても結構長くかかります。
ましてや 2000〜4000ファイル となると、う〜ん・・・・ですねぇ。
まずは、10個ぐらいで試してみてもらえますか?

Sub Sample()
  Dim docapp As Object
  Dim fso As Object
  Dim myPath As String
  
  myPath = "c:\TEST"   '★フォルダパスは実際のものに
  
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set docapp = CreateObject("Word.Application")
  
  Retrieve fso, fso.getfolder(myPath), docapp
  
  docapp.Quit
  
  MsgBox "処理が完了しました"
  
End Sub

Sub Retrieve(fso As Object, folder As Object, docapp As Object)
  Dim subfolder As Object
  Dim file As Object
  Dim doc As Object
  Dim nName As String
  
  'カレントフォルダ内のファイルを列挙
  For Each file In folder.Files
    Set doc = docapp.Documents.Open(Filename:=file.Path)
    Application.DisplayAlerts = False
    nName = fso.getparentfoldername(file.Path) & "\" & fso.getbasename(file.Path) & ".doc"
    doc.SaveAs2 Filename:=nName, FileFormat:=0  'wdFormatDocument
    Application.DisplayAlerts = True
    doc.Close
  Next
  
  For Each subfolder In folder.SubFolders
    '再帰的呼び出し
    Retrieve fso, subfolder, docapp
  Next
  

End Sub

1460 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free