お世話になっております。
エクセルでセルの左上をクリックし、シート全体を選択して、他のブックに
このシートをコピーアンドペーストしようとすると、
コピー領域と貼り付け領域の形が違うというようなエラーが出て、貼りつける
事ができません。
左上の数字を見ると、片方は65536R×256C
もう片方は1048576R×16384C
となっており、明らかにセルの数が違うことが原因なのかなと思ったりもし
ます。
65536R×256Cでマクロを作成してしまっているため(エクセル2003で作成済分)
、もう片方の1048576R×16384Cのエクセルシートを65536R×256Cのセル数に変更する
ことができれば、大変ありがたいです。(現在はエクセル2007です。)
上記のような事は可能でしょうか?
可能であるならば、方法をお教えいただきたく。
よろしくお願いいたします。
なんとかして、以前作成したマクロを使えるように致したいですので。

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

A 回答 (5件)

解決策1(推奨):


貼り付け先ブック(マクロが登録してある方)を,名前を付けて保存でファイルの種類を「Excelマクロ有効ブック」に変えて保存する
ファイル名が「今のブック名.xlsm」に変わるので,今のマクロを修正する



解決策2:
「シートの全部のセルをコピーする」のと「シートをコピーする」のでは,まったく意味が違います。

新しいマクロの記録を開始する
コピー元のブックを開き,
シート名タブを右クリックして「移動コピー」を開始し
コピーにチェックを入れ
移動先ブック(マクロブック)を指定してOKする

記録されたマクロを編集し,コピー元ブックをgetopenfilenameで指定できるように修正する。



解決策3:機能が劣るためあまりお奨めしません
そもそも「全セルを選んでコピー貼り付ける」なんて乱暴なことをしているので,失敗します。
コピー元がどんな大きさなのか不明なのは勿論仕方がないことですが,せめて「大体この範囲」みたいなのをつかんで仕事をしてもバチは当たりません。
もしもそれで,実際にコピー元が「IV列よりも右にはみ出して確かにデータがある」と確認できたのでしたら,それはもう今の256列のマクロブックじゃそもそも納まらないってことです。その時は解決策1に移行するしかありません。

作成例:
sub macro1()
 dim myFile
 myfile = application.getopenfilename()
 if myfile = false then exit sub
 workbooks.open filename:=myfile
 range("A:Z").copy  ’たとえば最大でもZ列止まりなら。
 thisworkbook.activate
 range("A1").select
 activesheet.paste
end sub


どーしても「全部のセル」を指定したくてしたくてシカタないなら,
range("A:IV").copy
のようになります。
    • good
    • 1
この回答へのお礼

ありがとうございます。
range("A:Z").copy  ’たとえば最大でもZ列止まりなら。
を参考にマクロを訂正したところ、上手にできました。

お礼日時:2011/12/07 12:39

セル結合があるやセル結合の位置が違う件


貼り付け元でセル結合があり、貼り付け先でセル結合が無い場合も、貼り付け元のシートのセル結合した姿で張り付くようだ。
ーー
違うバージョンのブックの間でのコピー貼り付けが原因だと思う。
両者に差しさわりの無いのは、xlsの方のシートの最大行数x最大列数でコピーして(Cellsにしない)、2007の方で貼り付け先シートの基点セル(左上隅のセルを)A1セルにして、旨く張り付きませんか。
ーー
自信はないが、UsedRangeを使うことで、互換性は無いかな。
テストできてないのですが。
Sub test02()
Set dest = Workbooks.Open("XXX.xls") 'コピー先のブック
Windows("Book1").Activate ' 保存前のブックの場合
ActiveWorkbook.Worksheets("Sheet1").UsedRange.Copy dest.Worksheets("Sheet1").Range("A1")
End Sub
保存してあるブックなら、そのブックを開いておいて、そのウィンドウのタイトル名にWindows("Book1").ActivateのBook1の部分を変えて、実行。どうなりますか。
    • good
    • 1
この回答へのお礼

ありがとうございました。
すでに解決済でしたが、勉強になりました。

お礼日時:2011/12/07 12:41

> セルの結合をした記憶はございませんが、勝手に結合されている事があるので


しょうか?


勝手に結合されていることはないと思います。


コピーのコードがどうなっているのかわかりませんが

Cells.Copy

とかになっているのでしたら

セルの指定をRange("A1:IV65536")というような指定にしてみてはいかがでしょう。
    • good
    • 1
この回答へのお礼

ありがとうございました。
おかげざまで、解決いたしました。

お礼日時:2011/12/07 12:40

セルの結合とかしているところがあると、そのようなエラーが出ることがありましたがそういことはありませんか。



セルのコピー貼り付けではなくシートそのものをコピーしてみてはいかがでしょう。

この回答への補足

回答ありがとうございます。
シートそのものをコピーしようとしても、同様のエラーになります。
シート全体におけるセルの数がエクセル2003とエクセル2007で、数が違うから
なのかと思ったりもしております。
セルの結合をした記憶はございませんが、勝手に結合されている事があるので
しょうか?

補足日時:2011/12/05 17:22
    • good
    • 0

貼り付けるときにセルA1に貼り付けてみてはどうでしょうか。


できなかったらすいません。

この回答への補足

ご回答ありがとうごいます。

ただ、同様のエラーメッセージが出て、できないです。

補足日時:2011/12/05 15:31
    • good
    • 1

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

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

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

QGoogleスプレッドシート:必須入力欄2箇所のうち片方しか入力がないともう一方のセルの色を変えたい

セルA1とB1があり、任意入力欄であるものの、A1を入力したらB1は必須入力になる項目があります。
ただそれが漏れがちでA1しか入力がないことが頻繁に起こるため、A1が入力されたらB1のセルの色が変わり、A1とB1に入力があったら両方とも白地に戻るようにしたく、条件の作り方を教えていただけると嬉しいです。

条件を改めて
セルA1 空欄 B1 空欄 色=デフォルトのまま
セルA1 文字列 B1 空欄 色=B1のセル色を変えたい(例:赤とか)
セルA1 文字列 B1 文字列 色=デフォルトのまま

なにとぞよろしくお願いいたします。

Aベストアンサー

AND関数を使えば可能なのでは。

条件付き書式のカスタム数式で
 =AND(A1<>"",B1="")

これでセルの色を赤で指定すれば、A1に入力されたときは赤になるが
B1にも入力して確定すると色が消えます。

Qセル範囲の左上のセルの取得方法

エクセル2010のVBAで関数を自作しているのですが
Test(A as range, B as range)という関数で
Aはセル1個、Bはセル範囲を選択して、Aは必ずBの左上のセルになるので、
Test(B as range)の様に変数を減らしたいです。
ただ、関数内でAを使用するので、Bのセル範囲の左上の値を取得する必要があります。
Bのセル範囲の左上の取得方法が分かりません。

Aベストアンサー

Selection(1).Address
で取得できます。

他の情報を取得したい場合、以下のページを参考にしてください。
http://officetanaka.net/excel/vba/tips/tips111.htm

Q別のワークシートやファイルから特定のセルの値を現在使用しているシートの特定のセルに転記する方法は?

同じファイルの中で、「報告用紙」というシートと「28.12.24」「28.12.12」という2種類のシートがあると仮定します。「報告用紙」のセルA2に、「シート28.12.24」のセルC12をコピーし、同じく「報告用紙」のセルB3に「シート28.12.12」のセルB12をコピーするにはどうすればいいでしょうか?

Aベストアンサー

「報告用紙」のセルA2に
 =28.12.24!C12
「報告用紙」のセルB3に
 =28.12.12!B12

他のシートのセルを参照するときは
 =シート名+!+セル番地
のようにして参照します。

これが異なるBookであれば、
 =[+ブック名+]+シート名+!+セル番地
のように指定します。

※「!」「 [ 」「 ] 」は半角文字です。

Q別のワークシートやファイルから特定のセルの値を現在使用しているシートの特定のセルに転記する方法は?

エクセル初心者の団塊世代人です。
皆様のおかげで、同じブック内でAというシートから、Bというシート内の任意のセルにセルの内容を転記することができるようになりました。
ありがとうございます。

 今回は、Xというブック内の「報告書」というシートのB2、C3、D4、E5に、Yというブック内の281022、281023、281024・・・というシート内のQ3、R4、S5、T6のセル内容を転記する方法をお教えいただければと思って質問いたしました。

 今まで手書きで報告書を書いていた私ですが、前回の質問・回答までで、みごとにエクセルで自動で報告書が作れるようになりました。

 さらに進化したいと思います。

 よろしくお願いいたします。

Aベストアンサー

誤)=INDIRECT("'[&A1&".xlsx]"&A2&"!Q3")
正)=INDIRECT("'["&A1&".xlsx]"&A2&"'!Q3")

[ の後ろの " が漏れています。
! の前の ' が漏れています。

Qセルの高さを「指定したセルの高さ×セル内の行数」に自動で修正する方法について

エクセル2010を使っている者ですが、セルの高さの設定のことで伺います。

「ホーム」タブ→「セル」のリボン→書式で、セルの高さを指定することができますが、そこで指定すると、1行で入力されたセルのみでなくセル内で行の折り返しがあって複数行になっているセルについても、指定したとおりの高さになってしまいます。(例えば、高さを14にすると、1行で入力されたセルのみでなく2行で入力されたセルについても高さが14になってしまい、入力した値が表示されなくなってしまう)

セルの高さを指定しつつ、複数行になったセルについては「指定したセルの高さ×セル内の行数(正確には、そのセルの所属する行中の最大行になったセルの行数)」に自動で修正されるようにする方法はありますか?

Aベストアンサー

こんにちは。

おそらくは、マクロでよろしいかとは思いますが、「自動で修正される」というように設定してしまうと、私なら、うっとうしく感じますが、こういう感覚は、人それぞれですから言明はしません。

実際に、私が使う目的でマクロを考えてみました。

「個人用マクロブック(PERSONAL.XLSB)」
「標準モジュール」にマクロを置き、
「クイックアクセスツールバー」に登録。
(私は、ショートカットにはしません。たぶん、忘れてしまうからです)

なぜ、「個人用マクロブック」に登録するかというと、2点の利点があります。

ひとつは、保存する拡張子の影響がない(xlsx/xlsm)。もう一つは、クイックアクセスツールとして、いつでも使える。

なお、十分に納得のいかない内容でしたら、以下のマクロは個人用マクロブックにはいれるべきではありません。
今回は、特別に、マクロに内容説明を入れましたので、それを読めば、何をしようとしているか分かるはずです。
ふつうは、このような解説を入れませんから、納得がいけば解説部分は消してよいです。

'//
Sub Lines_CellHeight()  'この名前は、臨時ですから、適当に変えてください。(日本語名可)
'No. 9043589
 Dim c As Range
 Dim i As Long
 Dim h As Double
 Dim stdHt As Double
 Dim ht As Double
 If TypeName(Selection) <> "Range" Then  'マウスで選択した場所が、セルの範囲でないなら、
  MsgBox "該当範囲を選択してください。", vbExclamation  'メッセージを出して、
  Exit Sub  'マクロは終わる
 End If
 stdHt = ActiveSheet.StandardHeight  '標準のセルの高さ
 For Each c In Selection  '選択範囲からひとつのセルを検討する
  If c.HasFormula = False And Not IsEmpty(c) Then  'セルは数式がないことと、空ではないなら、
   i = Len(c.Value) - Len(Replace(c.Value, vbLf, ""))  'セル内の改行コードの数
   If i > 0 Then  '一つでもあれば、
    ht = c.Rows.RowHeight  'セルの行の高さ
    If stdHt * (i + 1) > ht Then  'セルの高さよりも、標準のセルの高さ✕(改行コード数+1)が高ければ、
     c.FormatConditions.WrapText = False  '書式の折り返して全体を表示する、Offにし
     c.EntireRow.RowHeight = ht * (i + 1)  'セルの高さ✕(改行コード数+1) の高さにする
    End If
   End If
  End If
 Next c
End Sub

こんにちは。

おそらくは、マクロでよろしいかとは思いますが、「自動で修正される」というように設定してしまうと、私なら、うっとうしく感じますが、こういう感覚は、人それぞれですから言明はしません。

実際に、私が使う目的でマクロを考えてみました。

「個人用マクロブック(PERSONAL.XLSB)」
「標準モジュール」にマクロを置き、
「クイックアクセスツールバー」に登録。
(私は、ショートカットにはしません。たぶん、忘れてしまうからです)

なぜ、「個人用マクロブック」に登録するかというと、2点の...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報