[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/04/21(Thu) 21:20
投稿者名:こういち
Eメール:
URL :
タイトル:
グラフの範囲指定のしかたがわかりません
エクセルのグラフ範囲指定で困っています。
環境は
os winXP
VB6
エクセル2000
です。

CSVデータを印刷用のエクセルデータに貼り付け印刷をしようとしています。
問題ですが、印刷用データのグラフの範囲指定のしかたがわかりません。
グラフはCSVデータにより範囲が変わってしまいます。
CSVの方には
電流 2 3 4  5  6  7
電圧  2 2 2  2  2  2
電力  4 6 8 10 12 14
の様にデータがあります。電流の範囲が都度変わるのでそれに併せて
グラフの範囲も変えたいと思っています。

以下のように見よう見まねで書いてみたのですが・・・

    Dim xlBook(1)    As Excel.Workbook
    Dim xlSheet(1) As Excel.Worksheet

    Set xlApp = CreateObject("Excel.Application")
    Set xlApp = GetObject(, "excel.application")

    Fname = txtseiban.Text
    strmypath = txtpath.Text
    
     With xlApp
        Set xlBook(0) = xlApp.Workbooks.Open(App.Path & "\" & "印刷
用.xls")      
        Set xlBook(1) = xlApp.Workbooks.Open(strmypath & "\" & Fname &
; ".csv")    
    End With

    xlApp.DisplayAlerts = False
    xlApp.Visible = True

    AppActivate Fname & ".csv"                      
    Cells.Select                                    
    Selection.Copy                                  '
  
    AppActivate "印刷用.xls"                        
     xlApp.ActiveWorkbook.Worksheets("dataa").Select
    Cells.Select
    ActiveSheet.Paste
    xlApp.ActiveWorkbook.Worksheets("printt").Select
    
    xlApp.ActiveSheet.ChartObjects("グラフ 4").Activate  ※印刷用はグラフ4です
    xlApp.ActiveChart.ChartArea.Select
    xlApp.ActiveChart.SetSourceData Union(xlSheet.Range(Cells(10, 74), Cells(12, 74 + j)))
  ↑↑↑ここの行の書き方がわかりません・・・
  この行の最後にあるjは、プログラムの中で電流何個分測定したのかの回数がわかっています。

     ActiveWindow.SelectedSheets.PrintOut From:=1, to:=1, Copies:=1, Collate _
        :=True                                      '印刷の設定。1ページだけ印刷


    xlApp.Quit


何か良い方法は無いでしょうか・・・
また、わかりやすいプログラムにできないでしょうか?

皆様の知恵を拝借したく、よろしくお願いいたします。

投稿時間:2005/04/21(Thu) 22:33
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: グラフの範囲指定のしかたがわかりません
xlApp.ActiveChart.SetSourceData Union(xlSheet.Range(Cells(10, 74), Cells(12, 74 + j)))
  ↑↑↑ここの行の書き方がわかりません・・・
  この行の最後にあるjは、プログラムの中で電流何個分測定したのかの回数がわかっています。

上記の何が解らないのでしょうか?(数値の部分を変数に置き換えれば)
>グラフの範囲も変えたいと思っています。
要するにデータの個数(セル範囲)が変るという事ですか?
場合によっては、xlSheet.UsedRange.Select でも取得する事ができます。

ここのExcel&Word関係は参考になりませんか?
MyChart.Chart.SetSourceData xlSheet.Range("A1:F6"), xlColumns
又は
MyChart.Chart.SetSourceData xlSheet.Range(xlSheet.Cells(1,1),xlSheet.Cells(6,6)), xlColumns

投稿時間:2005/04/22(Fri) 10:33
投稿者名:こういち
Eメール:
URL :
タイトル:
解決しました!
ありがとうございました!
無事解決いたしました。

昨日はすぐに回答いただいていたんですね。今朝気づきました。
エクセル扱う所で壁にぶつかっていまして、色々検索してここにたどり着きました。
昨日はプログラムが動かなくて焦っていてHPをよく読んでいなかった事に気づきました。
本日改めてじっくりHPを読まさせていただきました。
参考になる事が沢山あり改めて勉強したく感じました。

本当にありがとうございました。