문제

나는 몇 가지 차트에 나가서 복사에서는 동일한 통합 문서지만,소스 데이터에 대한 각 차트(42 도표 6 시리즈에서 각)여전히 포함하는 전체 파일 경로.소스판과 세포가 다르기 때문에,나는 그냥을 찾으려면 경로를 문자열과 대체"".그러나,나를 찾을 수 없을 얻을 수있는 방법의 이름 sourcedata(으로 나타나에 참조편집 도자).거기에서,나는 바꿀 수 있습 내가 무엇을 해야 합니다.

우리가 무엇이:

ActiveChart.SeriesCollection(1).Values = "='C:\[oldfile.xls]Charts.Data'!R1C17:R1C28"

나는 그냥을 얻고 싶은 부분에서""문자열로,그리고 나는 기능을 제거하는 파일 경로입니다.면도에서 문자열 it,ie:

sourcestring = ActiveChart.SeriesCollection(1).Values

오류가 발생;그것은 보인다 VBA 고려 그것을 배열을 읽을 때에 그것은,그러나 수 있는 문자열을 사용할 때 할당합니다.어떤 아이디어가?

도움이 되었습니까?

해결책

당신은 오른쪽,당신은 할 수 없습니다 정말 나 같은 공식으로 표시되는 항 참조편집 도자기를 조작.식 또는.FormulaR1C1 속에서 시리즈는 당신이 작업,그리고 다시는 수식하고 설정하는 값으로 그리고/또는 xvalues 을 제공합니다.

이 코드를 작동해야 몇 가지 기능을 꺼내의 다른 부분의 공식...나는 생각한 그것은 당신을 위해 작동합니다,또는 적어도 희망이 무엇인지 알아내는 데 도움이야에서 최고가 되는 것이 최선의 방법...

Sub ChangeActiveChartData()
    ChangeChartData ActiveChart
End Sub

Sub ChangeChartData(TheChart As Chart)
    If TheChart Is Nothing Then Exit Sub

    Dim TheSeries As Series
    Set TheSeries = TheChart.SeriesCollection(1)

    Dim TheForm As String
    TheForm = TheSeries.FormulaR1C1

    Dim XValsForm As String
    XValsForm = GetXValuesFromFormula(TheForm)
    Debug.Print XValsForm
    XValsForm = GetRangeFormulaFromFormula(XValsForm)
    Debug.Print XValsForm

    Dim ValsForm As String
    ValsForm = GetValuesFromFormula(TheForm)
    Debug.Print ValsForm
    ValsForm = GetRangeFormulaFromFormula(ValsForm)
    Debug.Print ValsForm

    XValsForm = "=" & TheChart.Parent.Parent.Name & "!" & XValsForm ' TheChart's parents parent is the worksheet; we're assuming the chart is embedded in a worksheet
    ValsForm = "=" & TheChart.Parent.Parent.Name & "!" & ValsForm

    TheSeries.XValues = XValsForm
    TheSeries.Values = ValsForm

End Sub

Function GetXValuesFromFormula(SeriesFormula As String) As String
    ' Find string between first and second commas
    Dim FormulaParts() As String
    FormulaParts = Split(SeriesFormula, ",")
    GetXValuesFromFormula = FormulaParts(1)

End Function

Function GetValuesFromFormula(SeriesFormula As String) As String
    ' Find string between second and third commas
    Dim FormulaParts() As String
    FormulaParts = Split(SeriesFormula, ",")
    GetValuesFromFormula = FormulaParts(2)

End Function

Function GetRangeFormulaFromFormula(TheFormula As String) As String
    ' return to the right of the ! character in theformula
    Dim ExclamPos As Integer
    ExclamPos = InStrRev(TheFormula, "!")
    If ExclamPos > 0 Then
        GetRangeFormulaFromFormula = Right(TheFormula, Len(TheFormula) - ExclamPos)
    Else
        GetRangeFormulaFromFormula = TheFormula
    End If
End Function
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top