• 締切済み

エクセル 別ファイルから シートを リンクを張らずに コピーしたい

エクセル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の中だけで編集したかのように) シートをコピーするにはどうしたら よいのでしょうか?  長くなってすいません。  よろしくおねがいいたします。  

みんなの回答

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.9

ANo.8の補足です。 「'=」にしてしまうと、式に戻すとき、一気に置換できなくて面倒でしたね。 「=」→「#」辺りに置換して文字列にして下さい。 また、試してみて判りましたが、Excel2003の場合、セル内の式が912文字以上の場合、置換も出来ない様です。 もし、B.xls内のセル式が912文字以上の場合は1つ1つ文字列に変換してやる必要が有ります。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.8

ANo.5です。 セル式の文字数制限に引っかかるんですね。 それなら、B.xlsの追加したいシート上のセル式を「=」→「'=」の置換で一旦文字列にしてしまっては如何でしょう。ただし、文字列であってもシートのコピーでは255バイトで切られてしまいます(Excel2003の場合)ので、文字列にしたうえでシートの移動でA.xlsに持っていきます。 その後、置換をしなおしてセル式に戻します。 なお、B.xlsからシートを移動しますので、B.xlsはあらかじめコピーを取って置きます。

  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.7

この質問は、 [B.xls]を付けずにコピーする方法...ではなく [B.xls]が付くとセルの文字数制限(255文字でしたっけ?)に引っかかって、式が壊れるのを回避する方法...な訳ですよね さて、シートのコピーを逆にしたらどうなりますか? B.xlsにA.xlsの参照される方のシートをコピーするのです これで問題(式が壊れるなど)なければ B.xlsの現在参照されているシートを削除します そうすると参照している式には #REF! が付きます  あいうえ!A1*2+1 -> #REF!A1*2+1 エラーにはなりますが、文字数が増えなければ式は壊れないはずです そこで、「置換」を使って  #REF! -> 新シート名! に置換えてはどうでしょうか? (新シート名は短い名前に変えておいた方が良いかも)

回答No.6

面倒くさいから C.xlsに値で貼り付けて編集しては?

A_B_C_D_E_F_G_H_
質問者

補足

アドバイスありがとうございます。 それも考えたのですが、しかしそうもいかないので 質問させていただいたしだいです。 ありがとうございました。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答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に戻して完了。

A_B_C_D_E_F_G_H_
質問者

補足

回答ありがとうございます。 返信が遅れ申し訳ありません。 結果として下記理由からNGですが、 しかし、こんな単純な発想があるのに、 思いつかないものですねぇ・・・ 自分の頭の固さが身にしみました。 NO3までの補足でも示しているとおり 1つのセルに入っている計算式があまりに長く 加えて、パス名とファイル名が式の中のそれぞれの参照セル名の 頭に付加されるととんでもなく長い式となり、「長すぎます」との エラーで式がすべて壊れてしまいます。 つまり B.xlsからA.xlsにコピーした時点で リンクが張っていない状態でないと、だめなのです。 気持ちのよい回答ありがとうございます。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答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

A_B_C_D_E_F_G_H_
質問者

補足

ご意見ありがとうございます。 返信が遅れ申し訳ありません。 NO3までの補足でも示しているとおり 1つのセルに入っている計算式があまりに長く 加えて、パス名とファイル名が式の中のそれぞれの参照セル名の 頭に付加されるととんでもなく長い式となり、「長すぎます」との エラーで式がすべて壊れてしまいます。 つまり B.xlsからA.xlsにコピーした時点で リンクが張っていない状態でないと、だめなのです。 しかし、参考にはなりました。 ありがとうございます。

  • gyouda1114
  • ベストアンサー率37% (499/1320)
回答No.3

質問が良く理解できませんが シートを別のブックにコピーする方法です。 この方法だとリンクは張られないはずですが http://ii.cmt.kpu-m.ac.jp/~asano/kiso/topics/excel/kihon/top.html#d5 「A.xls 」が開いていれば移動先ブック名に「A.xls 」が表示されます

A_B_C_D_E_F_G_H_
質問者

補足

それはすでにやりましたが どうしても 元は =あいうえ!A1*2+1 なのに =[B.xls]あいうえ!A1*2+1 といったように [B.xls]にリンクが 張られてコピーされてしまいます。

  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.2

[B.xls]を「置換」で削除すればどうでしょう

A_B_C_D_E_F_G_H_
質問者

補足

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](実際にはもっと長いファイル名とパス名が入ってしまう)が挿入されめちゃめちゃに なってしまう。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

とりあえずそのままコピーしてしまってから、検索・置換で[B.xls] をnull(=空白)に一括置換すればよろしいかと。

A_B_C_D_E_F_G_H_
質問者

補足

1セルに入っている計算式が とてつもなく長いため [B.xls]がいくつも付いてしまい 式が壊れたり または 「長すぎます」とのことで置換もききません。 もちろん一度保存してからでも同じです。

関連するQ&A

  • エクセルのファイルに他のファイルのシートをコピーしたい

    エクセルのファイル A に10個のシートがあり、又ファイル Bに5個のシートがあるのですが、 ファイル A のシートを 2個 ファイル Bに移したいのです。うまくコピーできません。 コピーしたいエクセルシート名をクリックして、シートの移動またはコピーを選択しても、新しいブックか現在のファイル名しか表示されません。簡単な編集からコピーをしても貼り付ける時、テキストでの貼り付けになり、元のまま貼り付けが出来ません。

  • Excelのシートコピー時の名前の不具合?

    いつもお世話になっています。 Excel2003で、シートをコピー後、名前の変更を行うと、名前の前に、...xls]がつくようになってしまいました。 コピー元シート名 A 名前をBに変更すると、 コピー先シート名 ...xls]B あわせて、コピー先のシートの動きが鈍くなっています。 よろしくお願いします。

  • 別のエクセルファイルからリンクの数式をコピペ

    ファイル1と2があるとして、 それぞれファイルにはシートA、Bがあります。 ファイル1で、シートBにはシートAからリンクがしてあり、 セル内の数式が='シートA'!$D$10というセルがあります。 このセルをファイル2のシートBの全く同じ場所に、 ファイル1と同様に、ファイル2のシートAからリンクしようと ファイル1のセルをコピーして、ファイル2に貼り付けると、 セル内は='[ファイル1.xls]シートA'!$D$10 で、データ自体はファイル1から飛んできてしまいます。 ファイル1の数式そのままをコピーして、ファイル2に 同じ数式になるように貼り付けることは可能なのでしょうか? 誰か御存知でしたら、教えてください。。。

  • Excelデータを別のExcelファイルに引っ張ってシート別に一括で変更したい

    教えてください。 Excelのファイルから別のExcelファイルにデータを引っ張りたいのですが ='[ファイル名.xls]1'!$A$1 と入力するとデータを引っ張ってこれるのですがこのデータ元のファイルの別ページの 同じセルからもデータを引っ張って来たいのですがシートが複数ページあり 1つ1つのリンク先を変更していくのが面倒です ↓↓↓↓↓ ='[ファイル名.xls]1'!$A$1 ='[ファイル名.xls]2'!$A$1 ='[ファイル名.xls]3'!$A$1 ='[ファイル名.xls]4'!$A$1 ='[ファイル名.xls]5'!$A$1 ↑こんな感じで一気に変更したいのですが 何か簡単なやり方はありますでしょうか?? ちなみにExcelは2003です。

  • VBSでExcelシートのコピー

    VBSである決まったExcelシートを別なExcelファイルにシートコピーできる方法はないですか? やりたいことは、Excelファイル「A.xls」内の「Sheet1」というシートをExcelファイル「B.xls」の一番末尾に「Sheet1」をコピーする、です。 (Excelのシート名上で右クリック→「移動またはコピー」→移動先ブック名を選択→「末尾へ移動」、「コピーを作成」にチェック、と同じことをVBS上で行いたいのですが。)

  • エクセル2010 式だけ新しいbookにコピー

    よろしくお願いします。エクセル2010で以下のようなことをできないでしょうか? A.Xls というファイル名のシート1に、シート2のC1~C3の合計を出す SUM(Sheet2!C1,Sheet2!C2,Sheet2!C3) という式が入っています。他のファイル(たとえばB.Xls)でもシート2のC1~C3を足したいのです。 A.Xlsのシート1をコピーしてB.xlsのシート2のC1~C3を足せるようにしたいのです。 普通に式をコピーすると SUM([A.xls]Sheet2!C1,[A.xls]Sheet2!C2,[A.xls]Sheet2!C3) というようにA.xlsのファイルを参照します。 これをコピーしたときに、コピー先のファイルを参照するようにできないでしょうか? SUM([B.xls]Sheet2!C1,[B.xls]Sheet2!C2,[B.xls]Sheet2!C3) となるようにしたいのです。 同じ形式のファイルが数百あり、それを同じ形式で整理していきたいのです。 一つ集計の見本シートを作ってそれを他のファイルにコピーしていけば いちいち同じ式をすべてのファイルに書いたりしなくてもいいのではと思っているのですが できないでしょうか? やはり同じ作業をすべてのファイルで行わなければいけないでしょうか アドバイスを頂ければと思います。

  • Excel VBA別ブックのシートをコピーするには

    Excel2010のVBAで別ブックのシートをコピーしてくる方法 Excelファイル(C:\test\BOOK2.xls)のシート名が TESTというシートを自分のExcelファイル(C:\doc\BOOK1.xls)に コピーするにはどのように記述すればよいのでしょうか。 ・コピー先:自分のExcelファイル(C:\doc\BOOK1.xls)  VBAのコードがあるファイルです ・コピー元:C:\test\BOOK2.xlsのTESTシート  なお、TESTシートを持つ同じ名前(BOOK2.xls)のファイルが  別フォルダにもあります   Workbooks( )の引数にファイル名(BOOK2.xls)は指定できるのですが、 フルパス名(C:\test\BOOK2.xls)で指定できないので困っています。

  • エクセルシートを別のエクセルファイルへコピー

    同じエクセルファイルのAシートはAのパソコンで、 BシートはBのパソコンで作成しました。 ABのパソコンはネットでもLANでもつながっておらず、 全く別のパソコン単体でしか使えません。 それぞれのパソコンで作成したABのシートを 片方のファイルの片方のシートと置き換えたいと思います。 (例えば、Aパソコンでエクセルファイルを開き、 Bパソコンで作成したBシートだけを、 AパソコンのエクセルファイルのBシートと置き換えるという意味です) 同じパソコン上の、同じファイル上で作ったファイルのコピーや シートのコピーはわかりますが 違うパソコンでそれぞれABのシートを作成して、 出来上がったシートを合体させるなんてこと、できますか。

  • Excel操作について

    お世話になります。 aaa.xls というファイル名で  |  A      B C --|---------------------------------  1 | あい    うえお    かき  | 2 | さし    すせそ    たち このような表がSheet1にあります。 これを  |   A     B --|----------------------- 1 | あいうえお  かき  | 2 | さしすせそ  たち のようなファイルに書き換えて、CSVで保存したいのですが 初心者につき、どこから手をつけていいのかすらわかりません。 ぜひご教授下さい。 よろしくお願い致します。

  • エクセルで別のファイルにコピーの仕方

    エクセルの関数=sum(シート名,A1)の入っているシート(A)の一部分を、別のファイル(B)にコピー→数式のみ貼り付けすると=SUM([Aのファイル名、XML],A1)が入ってしまい上手く行きません。 この[Aのファイル名、XML]というのが入らないようにコピーする方法はないでしょうか? AとBには同じ内容のシートがあります。 皆様のお知恵を貸してください、お願いします。

専門家に質問してみよう