こんにちわ。VBでEXCELを起動して、データを転送してグラフを書くところまで、皆さんのお力を借りて辿り着きました。その度は大変お世話になりました。それで、今回の問題は、そのグラフのプロパティも変更したい、、。Withとかを使って??実際やりたいのはEXCELの機能で目盛の書式設定、最大値最小値の変更をVBの変数を使って可変にしようかなと考えています。作り方に問題があるとは思いますけど、なんかデータとかが可変なんでグラフに偏りが出てくる為、そんな処理をしなければならないような感じなんですが、どうぞ宜しくお願いします。また説明下手ですね、、。

このQ&Aに関連する最新のQ&A

A 回答 (9件)

( ̄ー ̄)ニヤリ

    • good
    • 0
この回答へのお礼

♪(⌒∇⌒)ノ""

お礼日時:2002/01/17 10:30

>  Set MyChart = xlSheet.ChartObjects("グラフ 1")


この行の次に
  MyChart.Activate
を追加してみてください。
    • good
    • 0
この回答へのお礼

 失礼しました。回答を頂いてスグ試したところ実現することができて、お礼をするのをすっかり忘れていました。ありがとうございました。なんだか、またお世話になる気もしますが、その時はまたどうかどうか宜しくお願いしまッす。

お礼日時:2002/01/17 09:41

明日ですね。

わかりました。今日はこれで最後の書込みにしておきます。
まだ 仕事中ですので、掲示はみております。

新たな質問は別スレッドにしてくださいね。あとで検索する時、一つのスレッドには一つの質問の方が、あとで検索しやすいので・・・・

やりたいことはピクチャボックスに描画していき、
Call SavePicure(Picture1.Image, "C:\Test.bmp")
っていうような要領で実現可能と思われます。

別質問をとして発言を行ったなら、その時に詳しく述べます。
    • good
    • 0
この回答へのお礼

 大変迷惑かけてます。まだまだ常識がないですね、、。これから精進いたします。一応、これがソースの一部なんですけど、、。

Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim strFileNAM  As String
Dim strExcelSheet As String
Dim MyChart As ChartObject

'ブックのシート名
strExcelSheet = "Sheet1"
Set xlApp = New Excel.Application
Set xlBook = GetObject(strExcelFile, "Excel.Sheet")
Set xlSheet = xlBook.Worksheets("Sheet1")

For i = 1 To intCnt - 1
xlSheet.Cells(0 + i, 11).Value = dblPastCalData(i)
Next i

xlSheet.Cells(1, 3).Value = dblJogen
xlSheet.Cells(2, 7).Value = dblKagen
xlSheet.Cells(1, 15).Value = dblCalData
'絶対値を計算
dblMemoriVAL = dblABSMax(dblPastCalData, intCnt - 1)
Set MyChart = xlSheet.ChartObjects("グラフ 1")

With MyChart.Chart
.Axes(xlValue).MaximumScale = dblMemoriVAL
.Axes(xlValue).MinimumScale = -(dblMemoriVAL)
End With

xlSheet.Parent.Windows(1).Visible = True
'グラフをコピー
xlApp.Worksheets(1).ChartObjects("グラフ 1").Copy
'クリップボードから貼り付け
frmComGraph.Picture1.Picture = Clipboard.GetData
'ファイル名を指定
strFileNAM = strTstKoMoku & lngNO & strCheck & ".bmp"
frmComGraph.Picture1.Refresh
Call SavePicture(frmComGraph.Picture1.Image, "C:\Documents and Settings\Graph\デスクトップ\GraphVB\" + strFileNAM)

お礼日時:2002/01/11 10:53

エクセルのブックを開く部分のプログラムを見せてください。



おそらく ブックオブジェクトの指定がないからのような気がします。
    • good
    • 0
この回答へのお礼

 ちょっと今、手元にソ-スがないので明日見てもらいたいですけど、、。また新たな問題がありましてVBで「Ω」こんな絵を書いて丸の中と脇に変数を表示、そしてそれを画像ファイルとして保存。また説明不足だとは思いますけど、そんなコンポーネントみたいなものってありますか?なんて次から次に分からないことだらけなんでしょう、、。

お礼日時:2002/01/10 20:38

エクセルのグラフの操作コードを記述してるのは、エクセルVBAに記述してますか?


それともVB側?

もしVB側であればActiveSheetの前に、ブックやエクセルアプリケーションを指定しなければなりませんよ。

とりあえず、さっきのコードはどちら側に記述したのでしょうか?
    • good
    • 0
この回答へのお礼

VB側です。EXCEL側にはなるだけ記述はしたくないのです。

お礼日時:2002/01/10 18:20

#2の発言で できませんでしたか?



参考URL:http://www2s.biglobe.ne.jp/~iryo/vba/VBA13.html
    • good
    • 0
この回答へのお礼

 んー、、なんだか出来ないんですよね。EXCELの不具合かと、、ってヘルプで見たんですけど、、でもそれってEXCEL4.0の話かも、、。

お礼日時:2002/01/10 17:33

ごめんなさい


xlCategoryをどのように使用しているかがわかりません。

あと一度の書込みに、お礼と補足をまとめた方がいいですよ。
いざ何か書きたい時に、書けなくなってしまいますよ。
    • good
    • 0
この回答へのお礼

 そうですね、私も追記が出来なくてたまに困っていました。私のしたかったことは
ActiveSheet.ChartObjects("グラフ 1").Activate
With ActiveChart.Axes(xlCategory)
  .MinimumScale = 1  '最小
  .MaximumScale = 9  '最大
  .MajorUnit = 4   '目盛間隔
End With
という処理でした、、。またまた言葉不足でスミマセン。これって、やっぱり出来ないものなんですか?

お礼日時:2002/01/10 15:48

あけましておめでとうございます。


ごめんなさい。

以前に回答したつもりが、どうやら決定ボタンを押し忘れていたようで、回答されていないことに今気が付きました。
手後れでしょうか?

ActiveSheet.ChartObjects("グラフ 1").Activate
With ActiveChart.Axes(xlValue)
  .MinimumScale = 1  '最小
  .MaximumScale = 9  '最大
  .MajorUnit = 4   '目盛間隔
End With

この回答への補足

 いろいろ調べたところ xlCategoryの方を変えられれば私のしたいことは実現できそうなんです。でもEXCElの不具合?で出来なそうなんですが、これって出来るんですかね??

補足日時:2002/01/07 16:34
    • good
    • 0
この回答へのお礼

 あけましておめでとうございます。なんだか、あきらめかけていたところです、、。TAGOSAKU7さんの返事で、またやる気が出てきました!

お礼日時:2002/01/07 16:33

ChartAreaだったかな?未検証です。


その中にいろいろ情報が入ってると思ったけど・・・

ちがったら、マクロを記録して行いたい処理を記憶させて、コードを見たらなんとなくわかると思いますが・・・

この回答への補足

 すみません、ChratAreaの使い方を教えて下さい。ちなみにマクロは教えてもらってちょっと試してみたんですけど、意味不明でした。、、、私には、、。

補足日時:2001/12/20 09:37
    • good
    • 0
この回答へのお礼

 あひさしぶりです。毎度お世話になっているHUKAHIREです。こうも寒いと温かいものが恋しくなりますね。フカヒレスープ飲みたいなー。

お礼日時:2001/12/20 09:37

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QVBS 以下の可変テキストから値を抽出

複数の端末からアカウント情報とユーザ名をテキストに出力しています。
そのアカウント情報から、ユーザが所属しているグループを抽出する必要があります。

以下のような形の形式でテキストには出力されています。
・テキストの内容は一行ずつでも全行まとめてでも呼び出せる(alllineは全行格納、lineは一行ずつループで読み取る)
・内容はそれぞれの端末で可変
・複数所属している場合もある
・テキストからユーザの所属グループのみを出力する

たとえば以下のテキストからNakayamaの所属グループであるAdministrators:
とUsersを抽出したい場合ですが、

InstrでInstr(allline, nakayama)探しだし、その場所の文字数を特定することはできます。
ですがそこからどうやってAdministratorsのみを取得すればよいのでしょうか。

思いついたのは指定のユーザを検索して、
ユーザをキーにそれより上に:がある行を特定しその行を抽出して、
Replaseで:を消してやればいいと思うのですが、
そのようなことはできるのでしょうか。

他の方法でもありましたらご教示ください。



テキストのアカウント情報サンプル
▲アカウント
Administrators:
Administrator
Nakayama
Kimura
DomainUser
Backup Operators:
Guest:
Users:
Kitagawa
Maruyama
Nakayama
PowerUser:

複数の端末からアカウント情報とユーザ名をテキストに出力しています。
そのアカウント情報から、ユーザが所属しているグループを抽出する必要があります。

以下のような形の形式でテキストには出力されています。
・テキストの内容は一行ずつでも全行まとめてでも呼び出せる(alllineは全行格納、lineは一行ずつループで読み取る)
・内容はそれぞれの端末で可変
・複数所属している場合もある
・テキストからユーザの所属グループのみを出力する

たとえば以下のテキストからNakayamaの所属グループであるAdminis...続きを読む

Aベストアンサー

何やら小難しいことを考えておられるが、以下の方法でどうでしょう?

1.ReadLine で1行ずつ読み込む
2.文字列の末尾が:だったらそれはグループ名、でなければユーザー名
3.ユーザー名がヒットすれば2.で設定したグループ名を出力
4.1~3をEOFまで繰り返す。

プログラムにすれば以下のようになります。
Dim fso, fin
Dim strGrp, strLine

Set fso = CreateObject("Scripting.FileSystemObject")
Set fin = fso.OpenTextFile("ファイル名", 1)
Do While Not fin.AtEndOfStream
strLine = fin.ReadLine
If Right(strLine, 1) = ":" Then
strGrp = Left(strLine, Len(strLine) - 1)
Else
If strLine = "Nakayama" Then Wsh.Echo strGrp
End If
Loop

fin.Close

以上

何やら小難しいことを考えておられるが、以下の方法でどうでしょう?

1.ReadLine で1行ずつ読み込む
2.文字列の末尾が:だったらそれはグループ名、でなければユーザー名
3.ユーザー名がヒットすれば2.で設定したグループ名を出力
4.1~3をEOFまで繰り返す。

プログラムにすれば以下のようになります。
Dim fso, fin
Dim strGrp, strLine

Set fso = CreateObject("Scripting.FileSystemObject")
Set fin = fso.OpenTextFile("ファイル名", 1)
Do While Not fin.AtEndOfStream
strLine = fin.Rea...続きを読む

QVBによる可変長ファイルの読み書き

VB5で固定長、可変長の2種類のファイルを読み込み、編集して、またファイルに書き込むという処理を作成します。
固定長は、構造体にしてランダムアクセスによって、一気に読み書きしています。

問題は可変長のときどのようにファイルアクセスをし、読み書きするのがいいのかよくわかりません。
ファイルデータのフォーマットは
項目   属性 
データ長 6バイト
データ  可変
データ長 6バイト
データ2 可変




といくつか可変長のデータが並びます。
バイナリーでアクセスし、1つ1つ区切りながら読み込むしかないのですか?
よろしくお願いします。

Aベストアンサー

データの間に","(カンマ)などがはいってるなど決ま毎があるのなら

Private Sub subBunkai(ByVal strData As String,_
ByVal strKey As String, _
ByRef strARec As CRT.A_REC_TYPE)

Dim lonLoop As Long

If UBound(Split(strData, strKey)) <= 0 Then
Exit Sub
End If

For lonLoop = 0 To UBound(Split(strData, strKey))
Select Case lonLoop
Case 0
strARec .A= Split(strData, strKey)(lonLoop)
Case 1
strARec .B = Split(strData, strKey)(lonLoop)
Case 2
strARec .C = Split(strData, strKey)(lonLoop)
Case 3
strARec .D = Split(strData, strKey)(lonLoop)
End Select
Next

End Sub

この関数を作成していけます。
strData には呼び元で取得したファイルデータをいれます。
   例:"123,45678,ABC"
strKey には可変長データを区切ってある区切り文字をいれます。
   例:,(カンマ)など

strARec モジュール.BASに作成した構造体です。

参考になるでしょうか?

データの間に","(カンマ)などがはいってるなど決ま毎があるのなら

Private Sub subBunkai(ByVal strData As String,_
ByVal strKey As String, _
ByRef strARec As CRT.A_REC_TYPE)

Dim lonLoop As Long

If UBound(Split(strData, strKey)) <= 0 Then
Exit Sub
End If

For lonLoop = 0 To UBound(Split(strData, strKey))
Select Case lonLoop
Case 0
strARec .A= Split(...続きを読む

QVBのテキストボックスに値が入っている場合にゲットフォーカス時値を反転させるには?

VBの画面で
テキストボックスに値が入っている場合に
タブ等でそのテキストボックスにフォーカス移動したさい
値が反転するようにするにはどうしたらよいでしょうか?
よろしくお願いします。

Aベストアンサー

テキストボックス内の値を選択状態にするという風に解釈しました。
このような場合は、次のようにテキストボックスに対し二つのプロパティを設定します。

Private Sub Text_GotFocus()
Text.SelStart = 0
Text.SelLength = Len(Text)
End Sub

Text.SelStart = 0
については省略しても正常に動きますが、明示的に設定しておいたほうが良いでしょう。
ちなみに Text がテキストボックスコントロールのことです。

QExcel VBAでグラフの可変データ範囲の取得方法

Excel2003を使用しています。

ExcelのVBAでグラフ作成のマクロを作る際に、
取得するデータの行数が可変だった場合にどうすればいいのか知りたいです。

現在は取得するデータの範囲を以下の様に取ってきています。

ActiveChart.SetSourceData Source:=Sheets("シート名").Range("B1:C5000"), PlotBy:=xlColumns

ここで、データの範囲("B1:C5000")が可変だった場合のデータ範囲の取得方法を知りたいです。
例えば、("B1:C7000")や("B1:C10000")など。

具体的には"B1"のセルを選択して、

[Ctrl & Shift]を押しながら "→"、"↓"

と操作を行なったときに選択される範囲をグラフのデータとして使用したいです。
途中、空白セルはない前提でかまいません。

データの終端を取得する「Endプロパティ」なるものが存在するようですが、
これを使用するのでしょうか?
それとも別の方法があるのか・・・?

宜しくお願いします。

Excel2003を使用しています。

ExcelのVBAでグラフ作成のマクロを作る際に、
取得するデータの行数が可変だった場合にどうすればいいのか知りたいです。

現在は取得するデータの範囲を以下の様に取ってきています。

ActiveChart.SetSourceData Source:=Sheets("シート名").Range("B1:C5000"), PlotBy:=xlColumns

ここで、データの範囲("B1:C5000")が可変だった場合のデータ範囲の取得方法を知りたいです。
例えば、("B1:C7000")や("B1:C10000")など。

具体的には"B1"のセルを選択して、

[Ctrl ...続きを読む

Aベストアンサー

>[Ctrl & Shift]を押しながら "→"、"↓"
とは異なりますが
Range("b1").CurrentRegion
>途中、空白セルはない前提でかまいません。
あってもいいです。どこかで繋がっていれば

QVB2008 オブジェクトプロパティの保存方法

VBの超初心者です。

早速質問ですが
フォーム上に複数のチェックボックスやテキストがあり、そのプロパティ(checkedやtext)を保存し、
またその保存したファイルをフォーム上で開けることができるようにしたいのですが、
何をどうしたらいいのかわかりません。

方法としては↓に書かれているような方法であっているのでしょうか?
http://dobon.net/vb/dotnet/file/xmlserializer.html

↑に書かれているMainClass.Main()を動かせば"C:\test\sample.xml"ができるのか?
と、やってみたのですがDim serializer・・・のところでエラー
”System.InvalidOperationException はハンドルされませんでした。”
となってしまいます。

そもそもの方法があっているのかどうかもわからず困惑中です。

どなたか、わかる方がいれば、参考ページでも結構ですので教えてください。
宜しく御願いします。

Aベストアンサー

WinFormsを仮定して……。

アプリケーションのアーキテクチャによって,回答が異なります。
a.) ModelがちゃんとFormから分離しているのであれば,Modelを保存/復元すればよい。
b.) Modelが存在せず,Formの情報を保存したいだけであれば,ApplicationSettingsのPropertyBindingを使うのが簡単。


本来であれば,Formが扱う「データ」はそれらがクラスとして分離しているのが望ましいです。
# 例えば,WinFormsではなくWPFやWinRTにUIプラットフォームを変更しても,Modelはほぼ無変更で利用可能になる
その場合,Model自身が保存可能な作りにする必要がありますが(Serializable+BinaryFormatterでもDataContractSerializerでもXmlSerializerでもよいですが),その責務はFormではなくModelになります。

ただ,WinFormsでの開発においてModelをちゃんと分離していないことも多く,その場合は後者が簡単な方法になります。
コントロールのプロパティからデータ - (ApplicationSettings)を開き,(PropertyBinding)のボタンを押すと,プロパティの一覧が出てきます。
まずは,「新規」を選択し,保存する名前を指定します。
あとは,勝手にアプリケーションフレームワークが処理してくれます。

VBのアプリケーションフレームワークを利用していない場合は,
FormClosedイベントあたりに,
My.Settings.Save()
の一行を追加する必要がありますが,同じように使えます。

WinFormsを仮定して……。

アプリケーションのアーキテクチャによって,回答が異なります。
a.) ModelがちゃんとFormから分離しているのであれば,Modelを保存/復元すればよい。
b.) Modelが存在せず,Formの情報を保存したいだけであれば,ApplicationSettingsのPropertyBindingを使うのが簡単。


本来であれば,Formが扱う「データ」はそれらがクラスとして分離しているのが望ましいです。
# 例えば,WinFormsではなくWPFやWinRTにUIプラットフォームを変更しても,Modelはほぼ無変更で利用可能になる
その場合...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報