[リストへもどる]
一括表示

投稿時間:2004/01/16(Fri) 19:19
投稿者名:SIN
Eメール:sin1113jp@yahoo.cp.jp
URL :
タイトル:
自動で閉じたいのですが・・・
またまたすみませんが教えてください。
akさんに教えてもらったやり方でpower pointのマクロの自動起動はできたのですが、
今度は自動でpower point が閉じなくなってしまいました。
今まではend subのまえにApplication.Quitと入力していてうまくいっていました。
なぜなんでしょうか?

投稿時間:2004/01/19(Mon) 09:33
投稿者名:SIN
Eメール:sin1113jp@yahoo.cp.jp
URL :
タイトル:
Re: 自動で閉じたいのですが・・・
> またまたすみませんが教えてください。
> akさんに教えてもらったやり方でpower pointのマクロの自動起動はできたのですが、
> 今度は自動でpower point が閉じなくなってしまいました。
> 今まではend subのまえにApplication.Quitと入力していてうまくいっていました。
> なぜなんでしょうか?

週末考えてみたのですが、なかなかうまくいきませんでした。
そこでVBを操作してAPP名を指定して終了と言うコマンドを探したのですが
これも見つかりません。
誰かご存知でないでしょうか?

投稿時間:2004/01/19(Mon) 10:09
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^2: 自動で閉じたいのですが・・・
事象を再現できるコードを投稿して頂けると回答が早いかと思います。
又、アプリを終了するコードはここの逆引きヘルプにもありますし、掲示板にも投稿が
あったかと思います。

PowerPointに関するVBAのサンプルは、前回紹介されていたサイトに色々ありますので
それを参考にして下さい。

投稿時間:2004/01/19(Mon) 18:07
投稿者名:SIN
Eメール:sin1113jp@yahoo.cp.jp
URL :
タイトル:
Re^3: 自動で閉じたいのですが・・・
すみません。簡単に概要を書きます。
現在POWER POINTの*.PPTファイルをPDF変換するためのマクロを
作成しています。
まずVBのアプリケーションでPOWER POINTを起動させてマクロのある、”PsFileOut.ppt”と言うファイルを開きます。↓
Shell("""C:\Program Files\Microsoft Office\Office\POWERPNT.exe"" \\NMGSV003\candv\共有\ _
マクロ\PsFileOut.ppt", vbNormalFocus)

するとPPAUTO_OPEN()でPSファイル化実行するのですが、
最後にPOWER POINTを自動で閉じることができません。
醜いソースですみませんが以下のソースがマクロです。






Sub ppauto_open()
'
' マクロ記録日: 2004/1/16 ユーザー名: 富士通テン
'
Dim PpTmpFile As String
Dim PsFile As String
Dim OpenName As String
Dim Apprication As String


PpTmpFile = "\\NMGSV003\candv\共有\PpTmpFile.txt" 'PDF化するファイルの名前が書いてある。
If Dir(PpTmpFile) <> "" Then

On Error Resume Next
    Open PpTmpFile For Input As #1
        While Not EOF(1)
            Input #1, OpenName
            PsFile = Dir(OpenName)
            PsFile = "\\Nmgsv003\PDF\PDF変換\IN\" + Left(PsFile, Len(PsFile) - 4) + ".PS"
        Presentations.Open FileName:=OpenName, ReadOnly:=msoFalse
        With ActivePresentation.PrintOptions
            .RangeType = ppPrintAll
            .NumberOfCopies = 1
            .Collate = msoTrue
            .OutputType = ppPrintOutputSlides
            .PrintHiddenSlides = msoTrue
            .PrintColorType = ppPrintColor
            .FitToPage = msoFalse
            .FrameSlides = msoFalse
            .HandoutOrder = ppPrintHandoutHorizontalFirst
            .ActivePrinter = "Acrobat Distiller"
        End With
        ActivePresentation.PrintOut PrintToFile:=PsFile
        ActivePresentation.Close
        Kill OpenName
        Wend

    Close #1
Kill PpTmpFile

End If
Application.Quit  '←これを実行してもダメでした。
End Sub

投稿時間:2004/01/21(Wed) 12:37
投稿者名:ak
Eメール:
URL :
タイトル:
VBからPowerPointを制御
VBから起動するのであればわざわざPowerPoint側のマクロを使用しなく
てもVB側でPowerPointを制御すれば良いのではないでしょうか?

あと起動方法ですが、ShellではなくPowerPointオブジェクトを参照して
PowerPointオブジェクトを使用する方が楽に処理できます。
サンプルを記述しておきますので参考にしてください。
(Acrobatが無いので動作確認はしていません。)

サンプル
'(*.frm) フォームにCommandButtonを1個配置してください。
'※ 参照設定「Microsoft PowerPoint X.X Object Library」
'環境:Win2K,Vb6 Ppt2K
Option Explicit

Private Sub Command1_Click()
    Const sInitFilePath = "\\NMGSV003\candv\共有\PpTmpFile.tx"
    Const sSaveDir = "\\Nmgsv003\PDF\PDF変換\IN\"
    Call pfnConvPptToPdf(sInitFilePath, sSaveDir)
End Sub

'---------------------------------------------------------------------------
'概要      :PDFファイル変換
'パラメータ    :変数名          ,IO ,型         ,説明
'          :sInitFilePath   ,I  ,String     ,設定ファイル
'          :sSaveDir        ,I  ,String     ,保存先
'          :[戻り値]        ,0  ,Boolean    ,True:エラーなし False:エラーあり
'説明      :設定ファイル内からファイル名を取得し保存先にPDF形式で保存する
'---------------------------------------------------------------------------
Private Function pfnConvPptToPdf(ByVal sInitFilePath As String, ByVal sSaveDir As String) As Boolean
    Dim ii          As Integer
    Dim iFreeFile   As Integer                  'フリーファイル番号
    Dim sPptFile    As String                   'PPTファイル
    Dim sPsFile     As String                   'PSファイル
    Dim sTmp()      As String
    Dim oApp        As PowerPoint.Application   'PowerPoint Object
    
On Local Error GoTo Error_Handler
    
    pfnConvPptToPdf = False
    
    ReDim sTmp(0)
    
    'PowerPoint起動
    Set oApp = CreateObject("PowerPoint.Application")
    oApp.Visible = True
    '空きファイル番号を取得
    iFreeFile = FreeFile()
    
    Open sInitFilePath For Input As #iFreeFile
    
        Do While Not EOF(iFreeFile)
            
            Input #iFreeFile, sPptFile
            sPsFile = Dir(sPptFile, vbNormal)
            
            If sPsFile = "" Or sPptFile = "" Then
                'ファイルがない場合はバックアップ
                ReDim Preserve sTmp(UBound(sTmp) + 1)
                sTmp(UBound(sTmp)) = sPptFile
            Else
                'PDFファイルに変換
                '拡張子を「ppt」から「ps」に変換
                sPsFile = sSaveDir & Replace(UCase(sPsFile), ".PPT", ".PS")
                
                With oApp.Presentations.Open(sPptFile)
                    With .PrintOptions  'プリンタ設定
                        .RangeType = 1
                        .NumberOfCopies = 1
                        .Collate = True
                        .OutputType = 1
                        .PrintHiddenSlides = True
                        .PrintColorType = 1
                        .FitToPage = False
                        .FrameSlides = False
                        .HandoutOrder = 2
                        .ActivePrinter = "Acrobat Distiller"
                    End With
                    Call .PrintOut(, , sPsFile) 'ファイル出力
                    Call .Close 'Presentation終了
                End With
            End If
            
        Loop
        
    Close #iFreeFile
    
    Call oApp.Quit  'PowerPoint終了
        
    iFreeFile = FreeFile()
    
    Open sInitFilePath For Output As #iFreeFile
        For ii = 1 To UBound(sTmp)
            Print #iFreeFile, sTmp(ii)
        Next ii
    Close iFreeFile
    
    pfnConvPptToPdf = True
    
    Exit Function
'===== エラー処理 ==========================================================
Error_Handler:
    MsgBox "エラー番号:" & Err.Number & vbCrLf & vbCrLf & "エラー内容:" & _
           Err.Description, vbCritical
    Err.Clear
End Function

投稿時間:2004/01/21(Wed) 16:43
投稿者名:SIN
Eメール:sin1113jp@yahoo.cp.jp
URL :
タイトル:
できました!
花ちゃん、akさんどうもありがとうございました。
おかげでPPTのPDF変換、無事完了しました。

> VBから起動するのであればわざわざPowerPoint側のマクロを使用しなく
> てもVB側でPowerPointを制御すれば良いのではないでしょうか?

まさにその通りでした。
akさんのサンプルを使わせていただきました所、あっさり作動しました。
なぜかPOWER POINTのマクロにこだわっていた自分がおり、
今回のもっと柔軟な考えでプログラミングに望まなければならないと実感しました。
これで先に進むことができます。(次はVBで AUTO CAD を操作してPDF化です・・・(TT))