![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67b6d)
エクセル2003
1~4 はファイルの状態の説明です。
やりかたを質問したい部分は 5です。
1、ファイル(ブック)A.xls → 計算式が大量に入った数シートからなるファイル があるとする。
2、A.xls を そのままコピーし コピーされたファイルは B.xls に リネーム。
3、A.xls は 計算式等は変更しないが、データを変更し通常業務で使用。
4、A.xls の新バージョンを作るために B.xls を使って計算式等を編集。
(複数あるシートのうち一部シート(シート名 「あいうえ」 とする)のみの変更に加え
さらに新シート「さしすせ」を作成)
5、A.xls のシート名 「あいうえ」をB.xlsで作った シート名 「あいうえ」と置き換え、
さらに新シート「さしすせ」もB.xlsからコピーして追加する。
普通にシート名 「あいうえ」や 新シート「さしすせ」を選択し
コピーを行うと B.xls からリンクを張った状態でコピーされて
しまう。たとえば シート「あいうえ」セルA1の中身を見ると
=[B.xls]あいうえ!A1*2+1 といったように [B.xls]が付いて
コピーされる。
これを回避して、単にそのまま丸ごと(A.xlsの中だけで編集したかのように)
シートをコピーするにはどうしたら よいのでしょうか?
長くなってすいません。
よろしくおねがいいたします。
A 回答 (9件)
- 最新から表示
- 回答順に表示
No.9
- 回答日時:
ANo.8の補足です。
「'=」にしてしまうと、式に戻すとき、一気に置換できなくて面倒でしたね。
「=」→「#」辺りに置換して文字列にして下さい。
また、試してみて判りましたが、Excel2003の場合、セル内の式が912文字以上の場合、置換も出来ない様です。
もし、B.xls内のセル式が912文字以上の場合は1つ1つ文字列に変換してやる必要が有ります。
No.8
- 回答日時:
ANo.5です。
セル式の文字数制限に引っかかるんですね。
それなら、B.xlsの追加したいシート上のセル式を「=」→「'=」の置換で一旦文字列にしてしまっては如何でしょう。ただし、文字列であってもシートのコピーでは255バイトで切られてしまいます(Excel2003の場合)ので、文字列にしたうえでシートの移動でA.xlsに持っていきます。
その後、置換をしなおしてセル式に戻します。
なお、B.xlsからシートを移動しますので、B.xlsはあらかじめコピーを取って置きます。
No.7
- 回答日時:
この質問は、
[B.xls]を付けずにコピーする方法...ではなく
[B.xls]が付くとセルの文字数制限(255文字でしたっけ?)に引っかかって、式が壊れるのを回避する方法...な訳ですよね
さて、シートのコピーを逆にしたらどうなりますか?
B.xlsにA.xlsの参照される方のシートをコピーするのです
これで問題(式が壊れるなど)なければ
B.xlsの現在参照されているシートを削除します
そうすると参照している式には #REF! が付きます
あいうえ!A1*2+1 -> #REF!A1*2+1
エラーにはなりますが、文字数が増えなければ式は壊れないはずです
そこで、「置換」を使って
#REF! -> 新シート名!
に置換えてはどうでしょうか?
(新シート名は短い名前に変えておいた方が良いかも)
No.5
- 回答日時:
こんな手はどうでしょう。
質問の5まで行ってあるとします。
1.B.xlsを終了して一時的に名前を変えます。例:B.xls→BB.xls
2.[B.xls]が付いてしまっているA.xlsを名前をつけて保存でB.xlsとして保存終了します。
3.上記2で保存したB.xls(元A.xls)を開く。
これで[B.xls]が消えているはずです。後は正しい名前A.xlsで保存しなおし、BB.xlsを元のB.xlsに戻して完了。
この回答への補足
回答ありがとうございます。
返信が遅れ申し訳ありません。
結果として下記理由からNGですが、
しかし、こんな単純な発想があるのに、
思いつかないものですねぇ・・・
自分の頭の固さが身にしみました。
NO3までの補足でも示しているとおり
1つのセルに入っている計算式があまりに長く
加えて、パス名とファイル名が式の中のそれぞれの参照セル名の
頭に付加されるととんでもなく長い式となり、「長すぎます」との
エラーで式がすべて壊れてしまいます。
つまり B.xlsからA.xlsにコピーした時点で
リンクが張っていない状態でないと、だめなのです。
気持ちのよい回答ありがとうございます。
No.4
- 回答日時:
アクティブブックの他ブックへのリンクを、アクティブブック自身へのリンクに書き換える(実質削除)マクロですが、お役に立たないでしょうか?
Sub test()
Dim alinks As Variant
Dim i As Long
alinks = ActiveWorkbook.LinkSources(xlExcelLinks)
If Not IsEmpty(alinks) Then
For i = 1 To UBound(alinks)
ActiveWorkbook.ChangeLink Name:=alinks(i), NewName:=ActiveWorkbook.Name, Type:=xlExcelLinks
Next i
End If
End Sub
この回答への補足
ご意見ありがとうございます。
返信が遅れ申し訳ありません。
NO3までの補足でも示しているとおり
1つのセルに入っている計算式があまりに長く
加えて、パス名とファイル名が式の中のそれぞれの参照セル名の
頭に付加されるととんでもなく長い式となり、「長すぎます」との
エラーで式がすべて壊れてしまいます。
つまり B.xlsからA.xlsにコピーした時点で
リンクが張っていない状態でないと、だめなのです。
しかし、参考にはなりました。
ありがとうございます。
No.3
- 回答日時:
質問が良く理解できませんが
シートを別のブックにコピーする方法です。
この方法だとリンクは張られないはずですが
http://ii.cmt.kpu-m.ac.jp/~asano/kiso/topics/exc …
「A.xls 」が開いていれば移動先ブック名に「A.xls 」が表示されます
この回答への補足
それはすでにやりましたが
どうしても
元は =あいうえ!A1*2+1 なのに
=[B.xls]あいうえ!A1*2+1 といったように [B.xls]にリンクが
張られてコピーされてしまいます。
No.2
- 回答日時:
[B.xls]を「置換」で削除すればどうでしょう
この回答への補足
1セルに入っている計算式が
とてつもなく長いため
[B.xls]がいくつも付いてしまい
式が壊れたり
または
「長すぎます」とのことで置換もききません。
もちろん一度保存してからでも同じです。
たとえばE12のセルには
=IF(あああ!$F6>SUMPRODUCT((いいい!O$4:O$203<>"")*(いいい!P$4:P$203=$C$7)*(いいい!N$4:N$203=$B$8)*(いいい!K$4:K$203<>"t")*(いいい!K$4:K$203<>"T")*(いいい!K$4:K$203<>"t")*(いいい!K$4:K$203<>"T")*(いいい!I$4:I$203=$B$5)),"",INDEX(INDIRECT($AR$3&"!"&$C$5&"$1:"&$C$5&"203"),SMALL(INDEX(SUBSTITUTE((いいい!O$4:O$203<>"")*(いいい!P$4:P$203=$C$7)*(いいい!N$4:N$203=$B$8)*(いいい!K$4:K$203<>"t")*(いいい!K$4:K$203<>"T")*(いいい!K$4:K$203<>"t")*(いいい!K$4:K$203<>"T")*(いいい!I$4:I$203=$B$5),0,10^6)*ROW(いいい!$M$4:いいい!$M$203),),あああ!$F6)))
という式が入っており(「あああ」と「いいい」は実際には異なる名称)
それが1シーに40~100セルにもわたって入っており
ブック自体の要領は5Mほどにもなっています。
このそれぞれのセル位置の前にいちいち[B.xls](実際にはもっと長いファイル名とパス名が入ってしまう)が挿入されめちゃめちゃに
なってしまう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの選択範囲以外を削除...
-
Excel 関数を使ってデータと一...
-
EXCELで別のブックから式をコピ...
-
ExcelVBAで、ユーザーフォーム...
-
EXCELのVBAでシートコピーをし...
-
ページの設定を別シートにコピ...
-
VBA シートをコピー後、ボタン...
-
Excelの行をコピーして貼り付け...
-
エクセルの1シートの内容を複...
-
エクセルのワークシートをUSBメ...
-
EXCELファイルをコピーすると終...
-
シートのコピーでリンク先をコ...
-
【VBA】コピー&複数個所のペー...
-
エクセルのシートコピーした際...
-
エクセルでシートを「移動また...
-
EXCEL VBA シートをコピーする...
-
シートをたくさんコピーするに...
-
エクセルのページをシートごと...
-
エクセル オートフィルタは行...
-
【Excel VBA】シートコピー時、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの選択範囲以外を削除...
-
Excel 関数を使ってデータと一...
-
EXCELのVBAでシートコピーをし...
-
Excelの行をコピーして貼り付け...
-
EXCELで別のブックから式をコピ...
-
【VBA】コピー&複数個所のペー...
-
Excel 数式の保護をしたセルを...
-
エクセルVBA 1行飛ばしで転記す...
-
エクセルの1シートの内容を複...
-
Excel シートのコピーの際、ペ...
-
エクセルでシートを「移動また...
-
エクセルの表を作ってるんですが
-
PDFファイルをコピーしてエクセ...
-
エクセルのワークシートをUSBメ...
-
エクセルのページをシートごと...
-
VBA シートをコピー後、ボタン...
-
【Excel】数式をそのまま他のシ...
-
アクセスの画面をプリントスク...
-
ExcelVBAで、ユーザーフォーム...
-
【Excel VBA】シートコピー時、...
おすすめ情報