2016-11-30 13 views
0

ExcelのVBAからSaveAsFixedFormatを操作して、PowerPointファイルをPDFとして書き出すことができません。私は、プレゼンテーションをPowerPointから直接pdf形式でエクスポートするExcel VBAからプリセット・パワーポイントでマクロを開始することに頼ってきました。参照ファイル名のPowerPointマクロのExcelセル

ファイルを取得するために、PowerPointで実行されているこのマクロのExcelファイル内のセルを参照する方法はありますか?

Sub pppdf() 

ActivePresentation.ExportAsFixedFormat "M:\random\test.pdf", 32 

End Sub 

私はExcelから.PPTXとしてPowerPointファイルを保存して、様々なファイル名とパスを使用しますが、今、私はPDFファイルにエクスポートされたPowerPointのマクロでは、同じパスとファイル名を参照したいことができます。

最後に

私はこのようにやや検索するコードが欲しいが、これは明らかにパワーポイントから機能するためにいくつかの作業を必要とします:

Dim FName   As String 
Dim FPath   As String 

FPath = Range("SavingPath").Value 
FName = Sheets("randomworksheet").Range("A1").Text 

ActivePresentation.ExportAsFixedFormat FPath & FName & " Development" & ".pdf", 32 

このPowerPointのマクロはExcelから開始されるだろうとの両方のPowerPointファイルとこれが実行されると、Excelワークブックとシートが開きます。

答えて

0

やExcelからPDFとして保存しますとにかくコードの主な部分がExcelにあれば?

Sub SavePPTXasPDF() 

    Dim PPT As Object 
    Dim PP As Object 

    Set PPT = CreatePPT 
    Set PP = PPT.Presentations.Open("<FullPathToPresentation>") 

    PP.SaveAs ThisWorkbook.Path & Application.PathSeparator & "ABC", 32 'ppSaveAsPDF 

End Sub 


Public Function CreatePPT(Optional bVisible As Boolean = True) As Object 

    Dim oTmpPPT As Object 

    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
    'Defer error trapping in case Powerpoint is not running. ' 
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
    On Error Resume Next 
    Set oTmpPPT = GetObject(, "Powerpoint.Application") 

    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
    'If an error occurs then create an instance of Powerpoint. ' 
    'Reinstate error handling.         ' 
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
    If Err.Number <> 0 Then 
     Err.Clear 
     On Error GoTo ERROR_HANDLER 
     Set oTmpPPT = CreateObject("Powerpoint.Application") 
    End If 

    oTmpPPT.Visible = bVisible 
    Set CreatePPT = oTmpPPT 

    On Error GoTo 0 
    Exit Function 

ERROR_HANDLER: 
    Select Case Err.Number 

     Case Else 
      MsgBox "Error " & Err.Number & vbCr & _ 
       " (" & Err.Description & ") in procedure CreatePPT." 
      Err.Clear 
    End Select 

End Function 

か、PowerPointでコードを実行したい場合:

Public Sub Test() 

    Dim oXL As Object 
    Dim oWB As Object 
    Dim FName   As String 
    Dim FPath   As String 

    Set oXL = CreateXL 
    Set oWB = oXL.workbooks.Open("<Path&FileName>") 

    'Or if Workbook is already open: 
    'Set oWB = oXL.workbooks("<FileName>") 

    FPath = oWB.worksheets("Sheet1").Range("A1") 
    FName = oWB.worksheets("Sheet1").Range("A3") 

    ActivePresentation.ExportAsFixedFormat FPath & FName & " Development" & ".pdf", 32 

End Sub 

Public Function CreateXL(Optional bVisible As Boolean = True) As Object 

    Dim oTmpXL As Object 

    ''''''''''''''''''''''''''''''''''''''''''''''''''''' 
    'Defer error trapping in case Excel is not running. ' 
    ''''''''''''''''''''''''''''''''''''''''''''''''''''' 
    On Error Resume Next 
    Set oTmpXL = GetObject(, "Excel.Application") 

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
    'If an error occurs then create an instance of Excel. ' 
    'Reinstate error handling.       ' 
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
    If Err.Number <> 0 Then 
     Err.Clear 
     On Error GoTo ERROR_HANDLER 
     Set oTmpXL = CreateObject("Excel.Application") 
    End If 

    oTmpXL.Visible = bVisible 
    Set CreateXL = oTmpXL 

    On Error GoTo 0 
    Exit Function 

ERROR_HANDLER: 
    Select Case Err.Number 

     Case Else 
      MsgBox "Error " & Err.Number & vbCr & _ 
       " (" & Err.Description & ") in procedure CreateXL." 
      Err.Clear 
    End Select 

End Function 

それとも、要求されたとして、あなたは、エクセルの中からプレゼンテーションを開き、プレゼンテーションに保存されているコードを実行することができます:

Sub SavePPTXasPDF() 

    Dim PPT As Object 
    Dim PP As Object 

    Set PPT = CreatePPT 
    Set PP = PPT.Presentations.Open("<FullPath>") 
    PPT.Run PP.Name & "!Test" 

End Sub 

Testマクロを使用し、Set oWB = oXL.workbooks("<FileName>")行のコードを使用します(これは、上記の例ではコメントアウトされています)。

+0

ありがとうダーレン、あなたはこの答えに多くの作業を入れましたが、実際にコードのラインの1つが私の目を開けました。私はExcel VBAからExportAsFixedFormatを使用しようとしていましたが、 'PP.SaveAs ThisWorkbook.Path&Application.PathSeparator&" ABC "、32 'ppSaveAsPDF'これはうまく機能しました。 pdfの数値でSaveAsを使うだけです。すばらしいです!再度、感謝します! – cellintern

0

Excel VBEから直接ExportAsFixedFormatを使用してどのような問題が発生していますか? (正しくないと思わ)documentationおよびPowerPoint VBEのIntelliSense、第二引数によると、FixedFormatTypeはわずか2つの値のいずれかになります。なぜプレゼンテーションを開けない

ExportAsFixedFormat(Path, FixedFormatType, Intent, FrameSlides, _ 
        HandoutOrder, OutputType, PrintHiddenSlides, PrintRange, _ 
        RangeType, SlideShowName, IncludeDocProperties, KeepIRMSettings) 

FixedFormatType: 

ppFixedFormatTypePDF = 2 
ppFixedFormatTypeXPS = 1 
関連する問題