• ベストアンサー

シートのコピー時の文字制限?の対策の件

シートのコピーで、コピー元のセルに多数の文字(256文字?以上)が設定されているとコピー先にすべてコピーされず切れてしまいます。 Sheets(Array("シート1","シート2")).Select Sheets(Array("シート1", "シート2")).Copy 何か良い方法がありませんでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • diashun
  • ベストアンサー率38% (94/244)
回答No.1

私も同じ現象で困ったことがありました。Office2007ではこの問題はありませんが、Office2003以前のバージョンで256バイトのコピー制限があります。そこで以前考えたVBAコードが以下の通りです。私はこれで問題解決できました。 質問者さんの環境に合わせて、必要な個所は修正してください。 ''ここからコピー*************************************** Public Sub Sh_Copy() Dim Wb, Sh, NewSheet, NewfName As String Set Wb = ThisWorkbook Set Sh = Wb.Worksheets("Sheet1") NewfName = "MyTest2" Sh.Copy 'コピー元のシートを新規ブックへコピー Sh.Range("C3:AS12").Copy 'コピー元のコピー対象セルをコピーする Set NewSheet = ActiveSheet NewSheet.Range("C3").Select 'コピー先シートを選択してアクティブにする NewSheet.Paste ActiveWorkbook.SaveAs Filename:=NewfName '別名を付けて新規ブックを保存する ActiveWorkbook.Close '新規ブックを閉じる Set Wb = Nothing Set Sh = Nothing Set NewSheet = Nothing End Sub ''ここまでコピー*************************************** 以上です。

pin3891227
質問者

お礼

正常に文字が切れずにコピーされました。 本当に助かりました。 ご指導ありがとうございました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

「EXCEL 制約」でヘルプを見ると (2003まで) 列の幅 255 文字 です。 1セル255字までしか表示しない。 -- テストをしてみた。 B1に=REPT("a","300")と300文字入れる。 コピーしてB3に貼り付ける。 B列を折り返して全体を表示するに設定しておく。 Sub test01() x = Range("b1") For i = 1 To Len(x) Step 20 s = s & Mid(x, i, 20) & Chr(10) Next i Range("B5") = s End Sub '-- Sub test02() x = Range("b3") For i = 1 To Len(x) Step 20 s = s & Mid(x, i, 20) & Chr(10) Next i Range("B6") = ss End Sub を実行すると どちらも a・・・aの20文字が15行表示されました。 ーー Sub test03() Range("B2") = Left(Range("B1"), 255) & Chr(10) & Right(Range("B1"), 45) End Sub を実行し、列の巾を255にし、折り返して全体を表示する、にすると 2行になって300字が表示された。 こういうことは参考にならないかな。 値は正常にコピーされる。なぜ表示に拘るのかな。多文字になると、どうせスクロールしないと全体は見えないのでは。

pin3891227
質問者

お礼

表示にはこだわりませんので、この方法でもできますね。 本当にありがとうございました。 今回はdaisyunさんの方法を採用いたします。