[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『グラフの元のデータのパスを置換したい』(しぇい)
お世話になります。 シートに複数のグラフがあり、その元のデータのパスを一気に変える方法はありますか? 例えば、他のファイルにあるグラフを流用するときなどに発生するのですが、 元のデータの 値が、
=[別のファイル.xls]範囲!$A$1:$A$10
となっているものの、[別のファイル.xls]の部分を空白にしたら一気にグラフの元の範囲が 現在のBOOKのものに変わりますよね? それができれば嬉しいのですが、オブジェクトの参照元に置換は効かないようなので、 できません。
今できなくて困っているというわけではなく、日々できたらいいなと思っているので、 切羽詰まってはいませんが、一気にできることに憧れています。 また、最終的にはコピーしたグラフの元の範囲を、コピーしたブックの同じセルの範囲に 替えたいということですので、別の方向から考えたお答えでも構いません。 よろしくお願いいたします。
名前の定義を工夫して出来た気もしますが 今すぐには思い出せない & 勘違いかも
一気に の方法では無いですが
グラフの系列をクリックして 数式バーの =SERIES(,,'1'!$A$1:$A$10,1) 等の範囲を修正
等は如何ですか? あまり変わりませんカネ すみません。 (jun53)
グラフの書式が全く同じ という事なら
=SERIES(,,'1'!$A$1:$A$10,1) で作ったグラフの系列を全て削除 真っ白なグラフが出来ますが書式は保持してます。 これをユーザー定義で指定しておくか、必要なシートにコピーして グラフ作成シートのデータ範囲をコピーしてグラフエリアに貼り付け
長く書いた割には、没 ですかね。
ソロソロお昼にしょっと! (jun53)
う〜ん。ひとつひとつ選択しての作業は、憧れとはちょっと遠い…かな。 数式バーでやった時期もあるのですが、値だけではなく名前等も変更するので 結局元をたどる羽目になった気がします。 jun53さん、いろいろと考えていただいてありがとうございます。 どうぞゆっくりお食事なさってください。 やはり一気は無理ですかね〜。 (しぇい)
一揆 いや訂正 一気に ですか?
マクロがご希望なのでしょうか??
自動記録したコードの1行目に
MySheetName = ActiveSheet.Name
範囲の ActiveChart.SetSourceData Source:=Sheets("シート名").Range("A1:A10"), PlotBy:=xlColumns 等を ActiveChart.SetSourceData Source:=Sheets(MySheetName).Range("A1:A10"), PlotBy:=xlColumns
最下行の ActiveChart.Location Where:=xlLocationAsObject, Name:="シート名" を ActiveChart.Location Where:=xlLocationAsObject, Name:=MySheetName などでしょうか?
後は Range("A1:A10") を Range(Cells(? , ? ) や Cells(i + ?, ?)) と変数にする方法や もっとすんごい こーど も、キットどなたかが書いてくれると思いますよ。
通常操作では名前の定義と関数を組み合わせれば出来そうな気もしますが 試してる時間がありません(と、チョット言い訳...) (jun53)
マクロでなんとか出来ないか頑張りましたけど、グラフのデータ範囲を取得するプロパティを 探しきれませんでした。
ただ、シート名とセル範囲も同じであれば、編集>リンクの設定で自ブックを指定すれば 勝手に範囲は変わるようです。
(川野鮎太郎)
jun53さん、川野さん、どうもありがとうございます。
>編集>リンクの設定で自ブックを指定
このお言葉に喜び勇んで試したところ、自ブックの指定ができませんでした。 他のブックになら変更できるようなのですが…。 これは2002からなんでしょうか?ちなみにこちらは2000です。
(しぇい)
こちらも2000です。 一度保存したものでないと指定は出来ないはずです。 ( ̄0 ̄;アッ >編集>リンクの設定>リンク元の変更←抜けていました。
(川野鮎太郎)
>ただ、シート名とセル範囲も同じであれば この条件も大事(^^) (代奈)
ご丁寧にありがとうございます。 リンク元の変更でやっていたのですが、ファイル名に自ブックを設定すると 「不正な…外部参照…」というあの警告が出てきてできないのでした。 シート名や範囲はひとつのブックに他のブックのシートをコピーしただけなので 変わっていないのですが…。 それともこのメッセージは他のことを指しているのか? いろいろいじっちゃったので、あらたに他のブックとシートでまた試してみます。 (しぇい)
自信ないけど、これでいけるかな・・・。 Sub Test() Dim MyChart As Object Const MySheet As String = "Sheet1" '変更したいシート名 Application.ScreenUpdating = False For Each MyChart In ActiveSheet.ChartObjects MyChart.Activate MyCount = ActiveChart.SeriesCollection.Count On Error Resume Next For i = 1 To MyCount MyLink = ActiveChart.SeriesCollection(i).Formula MyS = Application.Find("[", MyLink, 1) MyE = Application.Find("!", MyLink, 1) BeforeLink = Mid(MyLink, MyS, MyE - MyS) AfterLink = Replace(MyLink, BeforeLink, MySheet) ActiveChart.SeriesCollection(i).Formula = AfterLink Next i Next MyChart Application.ScreenUpdating = True End Sub
(川野鮎太郎)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.