COMオートメーションを使用している場合Excelのスパークラインは、PDFにエクスポートされません

StackOverflow https://stackoverflow.com/questions/4204830

質問

私はプログラム的にPDF形式にスパークラインが含まれているExcelシートをエクスポートする問題を抱えています。

私は手動でのExcel 2010のネイティブPDFエクスポート機能を使用してPDF形式にExcelシートをエクスポートすると

そして、すべてが正常に動作しますが、私はそれは、単純なCOMオートメーションを使用しないときは、すべてのものは、スパークラインを含む細胞を除いてPDFにエクスポートされます。

は奇妙なことは、私はExcelシートにいくつかのデータバーを追加するときにデータバーの近くにスパークラインが急に輸出されているということですが、さらに離れたデータバーからのものではありません。

私は、複数の異なるマシンおよびオペレーティングシステム上で、これらの問題を確認しました。これは StackOverflowのの上、次の質問に関連している可能性があります。

私は、非常にまっすぐ進む、VB.NETのコードを以下のように使用しています。私は、さまざまな設定や変数、ない運で遊んで試してみました。

Public Class Form1

    Enum XlFixedFormatType
        xlTypePDF = 0
        xlTypeXPS = 1
    End Enum

    Enum XlUpdateLinks
        xlUpdateLinksUserSetting = 1
        xlUpdateLinksNever = 2
        xlUpdateLinksAlways = 3
    End Enum

    Enum XlFixedFormatQuality
        xlQualityStandard = 0
        xlQualityMinimum = 1
    End Enum

    Private Sub buttonConvert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles buttonConvert.Click
        Dim pdf As String = Convert("C:\Sparkline.xlsx")
        Process.Start(pdf)
    End Sub

    Public Function Convert(ByVal fileName As String) As String
        Dim outPutFilename As String, printObject As Object = Nothing
        Dim app As Object      '** In reality this is a Microsoft.Office.Interop.Excel.Application
        Dim doc As Object      '** In reality this is a Microsoft.Office.Interop.Excel.Workbook

        app = CreateObject("Excel.Application")

        '** Open the _document
        doc = app.Workbooks.Open(fileName:=fileName, _
                                   UpdateLinks:=XlUpdateLinks.xlUpdateLinksNever, _
                                   ReadOnly:=True, _
                                   AddToMru:=False, _
                                   IgnoreReadOnlyRecommended:=True, _
                                   CorruptLoad:=True, _
                                   Editable:=False)

        '** Set visible sheets depending on selected range
        printObject = app.ActiveWorkbook.ActiveSheet

        '** Write the file under the same name, but with different extension
        outPutFilename = System.IO.Path.ChangeExtension(fileName, "pdf")

        printObject.ExportAsFixedFormat(Type:=XlFixedFormatType.xlTypePDF, _
                                fileName:=outPutFilename, _
                                quality:=XlFixedFormatQuality.xlQualityStandard, _
                                IncludeDocProperties:=False, _
                                IgnorePrintAreas:=False, _
                                OpenAfterPublish:=False)

        doc.Close(False)
        app.Quit()

        '** Return the name of the converted file
        Return outPutFilename

    End Function

End Class
役に立ちましたか?

解決

私は、マイクロソフトのサポートに接触していたし、彼らはそれがバグで認めています。製品チームは、将来のサービスパックに含めるためにそれを見ている。

それまでは、輸出を行う前に、アプリケーションを可視化することで問題を解決します。あなたは、ユーザーがそれを見たくないなら、あなたは画面の外にウィンドウを配置することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top