[[20140224152929]] 『フォルダ内のファイルをワードで開く』(初心者です) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『フォルダ内のファイルをワードで開く』(初心者です)

初心者です。どなたかお願い致します。

複数のRTFファイルが入っているフォルダがあり、
その中のファイルを1つ1つ読み込み、
ファイル内の情報をエクセルのシートに抽出したいです。
(エクセルVBAからワードを開いています。)

'RTFファイルが入っているフォルダを選択する。

    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")

    Dim FolderPath As String
    FolderPath = "C:\test\test2"
'   ↑ファイルが入っているフォルダ名を入れる。'
'
    Dim myFile As Object
    Dim i As Long
    i = 1
    For Each myFile In fso.GetFolder(FolderPath).Files
'
'フォルダ内のファイルをワードで開く。
    objWord = CreateObject("Word.Application")
    Set objDoc = objWord.documents.Open(myFile)
    objWord.Visible = True
'
(処理のコマンドは省略)

  i = i + 1

    Next
'
End Sub

以上のようなコマンドを入力したのですが、
「Set objDoc = objWord.documents.Open(myFile)」
のところがうまくいかないようです。

ご教示お願いします。

< 使用 Excel:Excel2007、使用 OS:unknown >


 >    objWord = CreateObject("Word.Application")
    ↓
      set objword・・・・
 また、開く前にワードファイルなのか拡張子でも見たらいいと思います。
 BJ

ご回答ありがとうございます。
その通りにやってみたら、「型が一致しません。」というエラーが出て、
前回と同じところでひっかかってしまいました。

ファイル拡張子は「.rtf」のリッチテキストファイルです。
ちなみに「Set objDoc = objWord.documents.Open(myFile)」のmyFileの部分に直接パス名+ファイル名を入れた場合はうまくいきます。

(初心者です) 2014/02/24(月) 16:49


 だから、拡張子を見て開くかの判断が必要なんです。
 たとえば、エクセルファイルとかだとエラーになるんじゃないかと。

 If right(myFile,3) = "doc"
 とかの。

 おまけ、
 Dim myFile As Object
                 ↓
 Dim myFile As string
 BJ 


 今回の場合は Object でよいのでは?
 入るのは File オブジェクトですから。

 拡張子を見るのであれば、こんな感じでしょうか。
    Const FolderPath = "C:\test\test2"
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")

    Set objWord = CreateObject("Word.Application")
    objWord.Visible = True
    For Each myFile In fso.GetFolder(FolderPath).Files
        If fso.GetExtensionName(myFile.Path) = "rtf" Then
            Set objDoc = objWord.documents.Open(myFile.Path)
            処理
            objDoc.Close
        End If
    Next
(Mook) 2014/02/24(月) 17:03

ものわかりが悪くてすみませんでした。
無事解決しました。
お二人ともご丁寧にありがとうございました。
(初心者です) 2014/02/25(火) 11:40

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.