Copy Chart zonder references naar oude workbook

Status
Niet open voor verdere reacties.

bARTvL

Nieuwe gebruiker
Lid geworden
23 jun 2008
Berichten
3
Dag mensen,

Dit is mijn eerste post op dit forum.

Ik ben een Project ingenieur in het gebied van proces automatisatie en moet mij voor een project een beetje verdiepen in VBA. Ik moet een code schrijven die automatisch een report genereert vanuit een SQL (OPC) server via een excell addin.

Nu had ik na het kopieren van alle worksheets in mijn oude workbook naar men nieuw workbook gemerkt dat de source data van mijn chart blijven verwijzen naar mijn oud workbook. Is er een simpele manier die dit kan oplossen, nl refereren naar mijn nieuw workbook?

Onderstaand de code.
Code:
Public Sub nieuw_workbook()
Dim New_wb As Workbook
Dim HuidigMap As Workbook
Dim HuidigBlad As Worksheet

Dim Chart As Chart

Dim sMsg As String
Dim pathstr As String
Dim filename As String
Dim SavePath As String

Dim I As Long

    
'On Error GoTo Errhandler:

filename = Worksheets(1).Range("B2").Value
    'MsgBox (filename)
pathstr = Worksheets(1).Range("F2").Value
    'MsgBox (pathstr)
SavePath = pathstr & filename & ".xls"
    'MsgBox (SavePath)

Application.DisplayAlerts = False

'Nieuwe workbook aanmaken
Set New_wb = Application.Workbooks.Add

'kopieren originele worksheets
Set HuidigMap = Application.Workbooks("d5013_auto.xls")

I = 0
For Each HuidigBlad In HuidigMap.Worksheets
    I = I + 1
    HuidigBlad.Copy New_wb.Worksheets(I)
Next HuidigBlad

For Each Chart In HuidigMap.Charts
    Chart.Copy , New_wb.Worksheets(Worksheets.Count)
Next Chart

'Paste values, remove formulas
New_wb.Sheets.Select
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Application.CutCopyMode = False
Sheets(Array("tijdconversie", "Sheet1", "Sheet2", "Sheet3")).Delete

With New_wb
    .SaveAs filename:=SavePath
End With

Exit Sub

Errhandler:
sMsg = "Fout bij kopieren van Worksheets"
MsgBox sMsg, vbExclamation, "Rapport Error"

End Sub
De chart is niet geplaatst in een worksheet maar "is" een worksheet en verwijst naar de andere sheets voor de waarden.
 
Laatst bewerkt:
Na wat opzoekwerk vond ik dit via google en heb ik dit toegevoegd aan de code, jammer genoeg werkt dit niet. Hoewel dit normaal wel zou moeten werken.

Code:
For Each Chart In HuidigMap.Charts
   Chart.Copy , New_wb.Worksheets(Worksheets.Count)
      
    'stuk nieuwe code

         For Each oSeries In New_wb.Charts(Charts.Count).SeriesCollection
            With oSeries
                .XValues = .XValues
                .Values = .Values
                .Name = .Name
            End With
        Next oSeries


Next Chart
 
Laatst bewerkt:
Dat klopt.

Na wat opzoekwerk blijkt dit een bug te zijn in VBA.

Als de Ranges lege cellen bevatten of de Values range definition (250 characters) is dan kan seriescollection.Xvalues en seriescollection.values blijkbaar niet aangesproken worden.

Weet iemand alternatieven?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan