• ベストアンサー

エクセルですべて(罫線、列幅など)を含んだコピー

エクセルで、罫線、書式(セルの色)、行幅、列幅 など、 すべてを含んだコピーをするにはどうすればよいでしょうか。 シートなりブックをそのままコピーすればよいのですが、 必要なのはシート内の一部だけで、今はシートをコピーして コピー後に不要な部分を削除しています。

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

  • ベストアンサー
  • tgn1013
  • ベストアンサー率33% (386/1137)
回答No.5

ちょっと便利なエクセルアドイン http://www.vector.co.jp/soft/win95/business/se279309.html

ogaki_3ok
質問者

お礼

ありがとうございました。 できました。

その他の回答 (4)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.4

> 「マクロ"C\XXXXX.XLS'!CopyAllElements'が見つかりません」 XXXXX.XLS の標準モジュールにソースコードを貼り付けたなら、 そのブックを開いた状態でないとマクロを実行できません。 そのブックを閉じてないですか? また、マクロ[DestoryShortcutKeys]を実行しないで、そのブック (XXXXX.XLS)を閉じてしまうと、割り当てた独自ショートカット キーが残ってしまうので、使い終わったら、必ず実行して独自 ショートカットキーを破棄(解除)して下さい。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.3

Excel2003なら「形式を選択して貼り付け」に列幅のコピーがあります。 コピー後に右下に出るアイコンで「元の列幅を保持」で対応できます。 ただ高さは無理みたいですね。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

こんにちは。KenKen_SP です。 VBA ならこんな感じで、それなりに実現できると思います。しかし、行/列の幅を書き 換えるわけですから、貼り付け先にはご注意を。 【使い方】 0. VBE の標準モジュールに下記ソースコードをコピペ   -->この方法が分からない場合は補足します 1. マクロ[SetShortcutKeys] を実行 2. セル範囲を [Ctrl]+[c] でコピー 3. 貼り付け先のセルを選択 4. [Ctrl]+[Shift]+[v] で貼り付け   -->通常通りの貼り付けは [Ctrl]+[v]のまま 【補 足】 マクロ[SetShortcutKeys]を実行することで設定したショートカットキーは、 マクロ[DestoryShortcutKeys]を実行することで、破棄できます。 '【以下ソースコード】 Option Explicit ' コピー元を参照するモジュールレベルのオブジェクト変数 Private mrngSource As Range ' ショートカットキー割り当て Sub SetShortcutKeys()   With Application     .OnKey "^c", "CopyAllElements"  '[Ctrl]+[c]     .OnKey "^+v", "PasteAllElements" '[Ctrl]+[Shift]+[v]   End With End Sub ' ショートカットキー復元 Sub DestoryShortcutKeys()   With Application     .OnKey "^c"  '[Ctrl]+[c]     .OnKey "^+v" '[Ctrl]+[Shift]+[v]   End With End Sub ' コピー Private Sub CopyAllElements()   On Error GoTo ERROR_HANDLER   Selection.Copy   If UCase$(TypeName(Selection)) = "RANGE" Then     Set mrngSource = Selection   Else     Set mrngSource = Nothing   End If   Exit Sub ERROR_HANDLER:   MsgBox Err.Description, vbExclamation   Set mrngSource = Nothing End Sub ' ペースト Private Sub PasteAllElements()   Dim sngCellHeight() As Single   Dim lngRowsCount  As Long   Dim i        As Long      On Error GoTo ERROR_HANDLER   ' 通常貼り付け   ActiveSheet.Paste   ' モジュールレベル変数からコピー元を参照できたら以下の処理を行う   If Not mrngSource Is Nothing Then      ' 行幅を取得     lngRowsCount = mrngSource.Rows.Count     ReDim sngCellHeight(lngRowsCount - 1)     For i = 0 To lngRowsCount - 1       sngCellHeight(i) = mrngSource.Cells(i + 1, 1).RowHeight     Next i     Application.ScreenUpdating = False     ' 行/列幅の調整     With Selection.Cells(1, 1)       ' 列幅       .PasteSpecial Paste:=xlPasteColumnWidths       ' 行幅       For i = 0 To lngRowsCount - 1         .Offset(i).RowHeight = sngCellHeight(i)       Next i     End With   End If   Exit Sub    ERROR_HANDLER:   If Err.Number <> 1004 Then     MsgBox Err.Description, vbExclamation   End If End Sub

ogaki_3ok
質問者

補足

詳細な記述をありがとうございます。 早速指示通り(のはずですが)に処理、実行してみましたが、 「マクロ"C\XXXXX.XLS'!CopyAllElements'が見つかりません」の エラーが出てしまいます。

  • tgn1013
  • ベストアンサー率33% (386/1137)
回答No.1

エクセルでは通常機能では出来ません。 実現したマクロがフリーで提供されています。 Vector等を当たってみてください。

関連するQ&A

専門家に質問してみよう