VBA - Method "add" Chart objektum nem

szavazat
1

Én megpróbál létrehozni egy függvényt, amely e-mailben egy része a lap, az alábbi kódot:

Function PictureToHTML(wbk, Namesheet, nameRange, imgFile)

    wbk.Activate
    Worksheets(Namesheet).Activate

    nameRange = C7:C10

    Set Plage = wbk.Worksheets(Namesheet).Range(nameRange)
    Plage.CopyPicture

    TempFilePath = Environ$(temp) & \ & imgFile

    Set newchart = wbk.Worksheets(Namesheet).ChartObjects.Add(Plage.Left, Plage.Top, Plage.Width, Plage.Height)

    With newchart
        .Activate
        .Chart.parent.Border.LineStyle = 0
        .Chart.Paste
        .Chart.Export TempFilePath, PNG
    End With
    Worksheets(Namesheet).ChartObjects(Worksheets(Namesheet).ChartObjects.Count).Delete
    Set Plage = Nothing

    PictureToHTML = <br><B> & Namesheet & :</B><br> _
                & <img src='cid: & imgFile & '>

End Function

Már ideiglenesen beégetett tartományban akarom vágni (bár ez nem lesz probléma ...), és a következő hibaüzenetet kapom ezt a sort:

Set newchart = wbk.Worksheets(Namesheet).ChartObjects.Add(Plage.Left, Plage.Top, Plage.Width, Plage.Height)

Teljes hiba:

Run-time error'-2147417878 (80010108) ': Módszer az 'Add' objektum 'ChartObjects' sikertelen

Tudna valaki mondja meg, hol van a hiba? Frissítve kód:

Function PictureToHTML(wbk, Namesheet, nameRange, imgFile)

    Dim WeightsSheet As Worksheet
    Dim newChart As ChartObject
    wbk.Activate

    Set WeightsSheet = wbk.Worksheets(Namesheet)

    Set Plage = wbk.Worksheets(Namesheet).Range(nameRange)
    Plage.CopyPicture

    TempFilePath = Environ$(temp) & \ & imgFile
    Set newChart = WeightsSheet.ChartObjects.Add(Plage.Left, Plage.Top, Plage.Width, Plage.Height)

    With newChart
        .Activate
        .Chart.parent.Border.LineStyle = 0
        .Chart.Paste
        .Chart.Export TempFilePath, PNG
    End With
    WeightsSheet.ChartObjects(WeightsSheet.ChartObjects.Count).Delete
    Set Plage = Nothing

    PictureToHTML = <br><B> & Namesheet & :</B><br> _
                & <img src='cid: & imgFile & '>

End Function
A kérdést 19/09/2018 13:35
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
1

A változókat nem kifejezetten kijelentette. Bár ez nem lehet probléma, mivel az newChartfigyelembe kell venni Variant, megpróbálja írni Dim newChart as ChartObjecta vonal előtt wbk.Activate.

Akkor hívja külön valami olyan kicsi, mint ez:

Sub TestMe()
    Dim newChart As ChartObject
    Set newChart = Worksheets(1).ChartObjects.Add(100, 100, 100, 100)
End Sub

És akkor elkezd hozzá Plage.Left, Plage.Top, Plage.Width, Plage.Heightahelyett, hogy a kódolt érvek (100). Ezután adjuk hozzá wbk.Worksheets(Namesheet)is, és nézd meg, hogy működik-e.


Nem állapította változók valóban rossz gyakorlat. Ez működik, ha kijelentem minden. Ebben a konkrét kis példa, hogy a probléma a nameRangeváltozó:

Option Explicit

Sub TestMe()
    Debug.Print PictureToHTML(ThisWorkbook, "Sheet1", Range("A1:E20"), "probably.png")
End Sub

Function PictureToHTML(wbk As Workbook, Namesheet As String, _
                        nameRange As Range, imgFile As String) As String

    Dim WeightsSheet As Worksheet
    Dim newChart As ChartObject
    Dim Plage As Range
    Dim tempFilePath As String

    Set WeightsSheet = wbk.Worksheets(Namesheet)

    Set Plage = wbk.Worksheets(Namesheet).Range(nameRange.Address)
    Plage.CopyPicture

    tempFilePath = Environ$("temp") & "\" & imgFile
    Set newChart = WeightsSheet.ChartObjects.Add( _
                        Plage.Left, Plage.Top, Plage.Width, Plage.Height)

    With newChart
        .Chart.Parent.Border.LineStyle = 0
        .Chart.Paste
        .Chart.Export tempFilePath, "PNG"
    End With

    WeightsSheet.ChartObjects(WeightsSheet.ChartObjects.Count).Delete
    PictureToHTML = "<br><B>" & Namesheet & ":</B><br>" & "<img src='cid:" & imgFile & "'>"

End Function

A következő lépésben, elolvasni a dokumentációt Option Explicit:

Válaszolt 19/09/2018 13:58
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more