• 締切済み

vbsで複数pptxから文字列抽出したい

vbsで複数pptx内の文字列抽出してxls出力する処理で 1つめのpptxのopen~文字列抽出~closeはうまくいくのですが 2つめのpptxをうまくobject生成できません。 デバッグ用コメントで確認すると2つめpptxを瞬時にopen~close したあとにForNextの文字列抽出が動いているようで For文で"オブジェクトがありません"となってしまいます。 どなたか解決方法をご教授願えませんでしょうか。 Sub GrepPpt(objPptFile) Dim sld,shp,rng,find_rng,tbl,find_cell Set objPpt = CreateObject("PowerPoint.Application") objPpt.Visible = True Set filex = objPpt.Presentations.Open(objPptFile) For Each sld In objPpt.ActivePresentation.Slides ←ここで For Each shp In sld.Shapes If shp.HasTextFrame Then For columnx = 0 To keywordsx.Count - 1 Set rng = shp.TextFrame.TextRange Set find_rng = rng.Find(keywordsx(columnx)) If Not find_rng Is Nothing Then arraylstx.add rng & vbTAb & shp.Name & vbTab &~(割愛) Exit For End If Next Else ~(Table検索割愛) End If Next Next filex.Close objPpt.Quit Set objPpt = Nothing End Sub

みんなの回答

  • unokwave
  • ベストアンサー率58% (966/1654)
回答No.1

dim pOj と事前に宣言しておき、 For Each sld In objPpt.ActivePresentation.Slides の箇所を For Each pOj In ObjPpt.Presentations For Each sld In pOj.Slides として、filex.Closeの前にもう一つ Next を追加してみて下さい。

tomtom_24
質問者

お礼

unokwaveさんフォロー頂きありがとうございます。 改修したところ2つめpptx時のエラー発生はなくなりましたが やはり2つめpptxを瞬時にopen~closeしたあとに ForNextの文字列抽出が動いているようで For Each pOj In ObjPpt.Presentations文をそのまま抜けてしまい 2つめpptxに対する文字列抽出がされません。 2つのpptxファイル検索の間にtxtファイル検索があるとうまくいくので 現在sleep挿入を試みてもいますが根本原因ではなさそうなので解決には至っておりません。

関連するQ&A