過去ログ

                                Page     652
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼グラフの系統設定  リモーネ 03/1/30(木) 19:19
   ┗Re:グラフの系統設定  Jaka 03/1/31(金) 13:54

 ───────────────────────────────────────
 ■題名 : グラフの系統設定
 ■名前 : リモーネ
 ■日付 : 03/1/30(木) 19:19
 -------------------------------------------------------------------------
   いつもお世話になっております。

グラフにデータ表示する場合、
同ブック内のセル範囲をRangeで指定すれば
系統設定をする事によりグラフが実現できると考えております。

With Worksheets( データのあるシート )
  Charts( グラフ表示シート ).SeriesCollection(1).XValues = .Range( セル範囲 )
End With

上記は、同一ブック内にある場合での実現方法ですが、
データのあるシートが別のEXCELファイルに存在する場合、
どの様に設定すれば宜しいでしょうか?


以上、ご教授宜しくお願い致します。
 ───────────────────────────────────────  ■題名 : Re:グラフの系統設定  ■名前 : Jaka  ■日付 : 03/1/31(金) 13:54  -------------------------------------------------------------------------
   こんにちは。
リモーネ さんへの直接な回答ではありません。
[#2445]をちょっと変更した物で、グラフの種類等が違うと思いますが、参考になれば...。
(余計な物も残っていると思います。)


別ブックに下記データを書いて「別ブックデータ.xls」とし保存。

A    B    C    D
CH1    CH2    CH3    CH4  ←ここが1行目。(行番号は略)
100    200    300    400
110    150    280    380
80    100    140    300
50    50    50    50
100    200    300    400
200    200    200    200
90    80    70    60
110    110    110    110
120    120    120    120
130    130    130    130
140    140    140    140
150    150    150    150
160    160    160    160
170    170    170    170
180    180    180    180
190    190    190    190
200    200    200    200


上記ブックを開いたまま、別ブックの標準モジュールに下記コードをコピペし、このコードを書いたブックをアクティブにして実行して見て下さい。

Sub momo()
  Dim Myws As Object, myGf As Object
  Dim CellY As Long, CYF As Long
  Dim Flg As Boolean, GrafName As String
  Dim GrSh As Worksheet
  
  GrafName = "サンプルグラフ2"
  ActiveCell.Select
  Set Myws = ActiveWorkbook.Sheets("Sheet2")
  Set GrSh = Workbooks("別ブックデータ.xls").Sheets("Sheet1")
  CellY = GrSh.Cells(Rows.Count, "A").End(xlUp).Row
  Application.ScreenUpdating = False
  
  On Error Resume Next
  Set myGf = ActiveSheet.Shapes(GrafName)
  If Err <> 0 Then
    Charts.Add
    Flg = True
  Else
    myGf.Select
  End If
  On Error GoTo 0
  If CellY < 20 Then
    CYF = 2
  Else
    CYF = 1 + CellY - 20
  End If
  With ActiveChart
    .ChartType = xlLineMarkers
    .SetSourceData Source:=GrSh.Range(GrSh.Cells(CYF, 1), GrSh.Cells(CellY, 4)), PlotBy:=xlColumns
    .Location Where:=xlLocationAsObject, Name:=Myws.Name
  End With
  With ActiveChart
    .HasTitle = False
    .Axes(xlCategory, xlPrimary).HasTitle = False
    .Axes(xlValue, xlPrimary).HasTitle = False
  End With
  With ActiveChart
    .Location Where:=xlLocationAsObject, Name:=Myws.Name
    .HasTitle = True
    .ChartTitle.Characters.Text = "サンプルソフト"
    .Axes(xlCategory, xlPrimary).HasTitle = False
    .Axes(xlValue, xlPrimary).HasTitle = False
    .HasDataTable = False
    .SeriesCollection(1).Name = "=" & """" & GrSh.Range("A1").Value & """"
    .SeriesCollection(2).Name = "=" & """" & GrSh.Range("B1").Value & """"
    .SeriesCollection(3).Name = "=" & """" & GrSh.Range("C1").Value & """"
    .SeriesCollection(4).Name = "=" & """" & GrSh.Range("D1").Value & """"
  End With
  If Flg = True Then
    ActiveSheet.Shapes(Mid(ActiveChart.Name, InStr(1, ActiveChart.Name, " ") + 1)).Name = GrafName
  End If
  Range("A1").Activate
  Set Myws = Nothing
  Set myGf = Nothing
  Set ActC = Nothing
  Set GrSh = Nothing
  Application.ScreenUpdating = True
End Sub
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 652