PowerPoint (一般・VBA)

PowerPoint 一般・VBAに関する話題を扱うフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : PowerPoint 2016)
Powerpointファイルの全文字列をテキストファイルに出力したい
投稿日時: 20/02/23 13:53:15
投稿者: gorby

Powerpointファイルの全文字列をテキストファイルに出力するために下記のコードを作成してPowerpointで実行しましたが、
 
上から9行目の
 
Set objFile = objFSO.OpenTextFile(writeFilePath, 8, True)
 
でオブジェクト変数またはWithブロック変数が設定されていません。
というエラーになりました。
原因は何でしょうか?
 
--<start of code>----
Sub Powerpointファイルの全文字列をテキストファイルに出力する()
  
Dim objFSO As Object
Dim objFile As Object
Dim writeFilePath As String
Dim writeData As String
  
  
writeFilePath = "\\2019\201903\result.ini"
writeData = shp_txt
  
  
'Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(writeFilePath, 8, True)
  
  Dim sld As Slide
  Dim shp As Shape
  'Dim shp_txt As String
      
   
  For Each sld In ActivePresentation.Slides ' アクティブPPTMファイルの全スライドをループ
    For Each shp In sld.Shapes ' スライド内の全Shapeオブジェクトをループ
      If shp.TextFrame.HasText Then
        shp_txt = shp.TextFrame.TextRange.Text
        objFile.Write (shp_txt)
        objFile.Write (vbCrLf)
        ' MsgBox "テキストの内容は" & vbCrLf & shp_txt
      End If
    Next shp
  Next sld
  
       
    
objFile.Close
Set objFile = Nothing
Set objFSO = Nothing
  
End Sub
--<end of code>--

回答
投稿日時: 20/03/16 17:10:48
投稿者: WinArrow
投稿者のウェブサイトに移動

ここに掲示したコードをそのまま実行したんですか?
 
 
エラーになっているコードの、すぐ上の行nコード
>'Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
がコメントアウトされています。
このままでエラーになるのは当たりまえです。

投稿日時: 20/03/17 10:16:26
投稿者: gorby

回答ありがとうございます。早速
'Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
の最初の'を除いて実行してみたら、同じ行で
オブジェクトが必要です。
というエラーが出ました。これについて、対処法はご存じないでしょうか?

回答
投稿日時: 20/03/17 10:40:35
投稿者: WinArrow
投稿者のウェブサイトに移動

gorby さんの引用:
回答ありがとうございます。早速
'Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
の最初の'を除いて実行してみたら、同じ行で
オブジェクトが必要です。
というエラーが出ました。これについて、対処法はご存じないでしょうか?

 
そうですか・・・・最初に状況説明が日宇町ですね・・・
 
もしかしたら
>Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
の「WScript.」を取ってみましょう。
 
私は、指定したことがないので、違いが判りませんが・・・

投稿日時: 20/03/17 10:51:54
投稿者: gorby

WinArrow さんの引用:
gorby さんの引用:
回答ありがとうございます。早速
'Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
の最初の'を除いて実行してみたら、同じ行で
オブジェクトが必要です。
というエラーが出ました。これについて、対処法はご存じないでしょうか?

 
そうですか・・・・最初に状況説明が日宇町ですね・・・
 
もしかしたら
>Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
の「WScript.」を取ってみましょう。
 
私は、指定したことがないので、違いが判りませんが・・・

 
ご指示のとおりやってみたら次の
 Set objFile = objFSO.OpenTextFile(writeFilePath, 8, True)
で、パスがみつかりません。というエラーになりました。「WScript.」を取ると良くないようです。

回答
投稿日時: 20/03/17 12:18:50
投稿者: WinArrow
投稿者のウェブサイトに移動

>「WScript.」を取ると良くないようです。
 
「WScript.」を取ったら、エラーが変わったということは、
取って正解ということです。
 
パスが見つからないということは
>"\\2019\201903\result.ini"
が、間違っているということです。
 
なぜ、先頭が「\\」なの?
ドライブからのフルパスではないの?

投稿日時: 20/03/17 13:17:01
投稿者: gorby

WinArrow さんの引用:
>「WScript.」を取ると良くないようです。
 
「WScript.」を取ったら、エラーが変わったということは、
取って正解ということです。
 
パスが見つからないということは
>"\\2019\201903\result.ini"
が、間違っているということです。
 
なぜ、先頭が「\\」なの?
ドライブからのフルパスではないの?

 
アドバイスありがとうございます。
ご指摘の点を修正して実行したら、
 
objFile.Write (shp_txt)

プロシージャの呼び出しまたは引数が不正です
となりました。どこをどう修正すれば良いでしょうか?

回答
投稿日時: 20/03/17 14:17:15
投稿者: WinArrow
投稿者のウェブサイトに移動

>objFile.Write (shp_txt)
おそらく
「()」で囲っているからでは?

投稿日時: 20/03/17 14:22:07
投稿者: gorby

WinArrow さんの引用:
>objFile.Write (shp_txt)
おそらく
「()」で囲っているからでは?

ご指示の通りにしたら、やはり、同じ個所で
 
プロシージャの呼び出しまたは引数が不正です
 
エラーが出ました。他に気になる箇所はありますでしょうか?

回答
投稿日時: 20/03/17 15:57:49
投稿者: WinArrow
投稿者のウェブサイトに移動

> 'Dim shp_txt As String
 
↑のコメントアウトは?

投稿日時: 20/03/17 16:06:14
投稿者: gorby

すみません。修正続きでソースがぐじゃぐじゃになってきたため、別案件で質問をさせてください。
いったんこの質問は締めます。