- ベストアンサー
シートのコピー時の文字制限?の対策の件
シートのコピーで、コピー元のセルに多数の文字(256文字?以上)が設定されているとコピー先にすべてコピーされず切れてしまいます。 Sheets(Array("シート1","シート2")).Select Sheets(Array("シート1", "シート2")).Copy 何か良い方法がありませんでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
私も同じ現象で困ったことがありました。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 ''ここまでコピー*************************************** 以上です。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17070)
「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字が表示された。 こういうことは参考にならないかな。 値は正常にコピーされる。なぜ表示に拘るのかな。多文字になると、どうせスクロールしないと全体は見えないのでは。
お礼
表示にはこだわりませんので、この方法でもできますね。 本当にありがとうございました。 今回はdaisyunさんの方法を採用いたします。
お礼
正常に文字が切れずにコピーされました。 本当に助かりました。 ご指導ありがとうございました。