MESCIUS SPREAD for Windows Forms 17.0J
クリップボード機能

シートでは、いくつかのクリップボード操作(コピー、切り取り、貼り付けなど)のデフォルトの動作が自動的に設定されます。これはコントロールに組み込まれた機能で、たとえば、ユーザーがシートのセルに対してコピーや貼り付けを実行する場合、クリップボードの内容をどのように操作するかなど、アプリケーションで動作を設定することもできます。ここではクリップボード機能の設定方法について説明します。

  • 切り取りまたは貼り付け対象のセル範囲内に、ロックされたセルが含まれている場合は、このクリップボード操作は中止されます。 本製品の.NET バージョンは、COMバージョンとクリップボード操作の処理方法が異なります。
  • クリップボード関連の機能で、編集中のセルでの動作を設定できるものがあります。SuperEditBaseクラスのAutoMenuプロパティを使用すると、編集モード中にセル内にポップアップメニューを表示するかどうかを設定できます。また、SuperEditBaseクラスのAllowClipboardKeysプロパティを使用すると、ユーザーがショートカットキーを使用してクリップボードを操作できるかどうかを設定できます。
クリップボード操作の無効化

FpSpreadクラスのAutoClipboardプロパティを使用すると、エンドユーザーがクリップボード操作を実行するためにショートカットキーを使用できるかどうかを切り替えることもできます。コントロールでのクリップボード操作をすべて無効にするには、FpSpreadクラスのAutoClipboardプロパティをFalseに設定します(デフォルト値はTrue)。貼り付け([Ctrl]+[V])など、いくつかのクリップボード操作を無効にすることもできます。これには、ショートカットキーおよびクリップボード操作に対する入力マップ定義([Ctrl]+[C]、[Ctrl]+[V]、[Ctrl]+[X])を無効にします。

クリップボード処理からのヘッダの除外

クリップボード操作において、ヘッダを処理に含めるかどうかを設定できます。 これには、FpSpreadクラスのClipboardOptionsプロパティ、およびClipboardOptions列挙体を使用します。 FpSpreadクラスのClipboardOptionsプロパティを設定すると、クリップボード操作の実行時に行ヘッダまたは列ヘッダを処理に含めるかどうかを指定できます。 デフォルト値はAllHeadersであり、全ヘッダが処理に含められます。

クリップボードの内容の取得

シート上でコピーされた値は、.NET Frameworkの提供するClipboardクラスによって管理されます。 このClipboardクラスの各処理を使用することで、クリップボードの内容を取得できます。

Loadイベントの発生時にSheetViewクラスのClipboardCopyメソッドを呼び出すと、セルデータをクリップボードにあらかじめコピーできます。 この後GetDataObjectメソッドを呼び出すと、これらのクリップボードの内容を取得できるので、テキストの書式を判断する場合などに便利です。

貼り付けの無効化

シート上で貼り付けが実行されると([Ctrl]+[V])、FpSpreadクラスのClipboardPastingイベントが発生します。 特定の状況では、このイベントをキャンセルすることで貼り付けを無効にできます。 貼り付けを無効にするには、貼り付けの実行されたタイミングを取得して、アクションをキャンセルします。

貼り付け対象の変更

セルがクリップボードにコピーまたは切り取られると、デフォルトでは、値、書式、数式を含むすべてのデータ属性が貼り付け対象となります。 入力マップの定義を変更すると、たとえば値だけを貼り付け対象とすることができます。 デフォルト設定はSpreadActionsクラスのClipboardPasteAllフィールドであり、データの全属性が貼り付け対象となります。ClipboardPasteOptions列挙体を使用すると、ユーザーがクリップボードの内容を貼り付ける場合に、貼り付けられるデータの種類を設定できます。

非表示範囲へのデータの貼り付けの無効化

Features クラスのPasteSkipInvisibleRange プロパティを使用して、非表示のセル、行、および列にクリップボードの値を貼り付けるかどうかを設定できます。このプロパティは、ブール値を受け入れ、デフォルトではFalse に設定されます。

このオプションは、RichClipboard がTrueに設定されている場合にのみ有効になります。

PasteSkipInvisibleRange がTrueに設定されている場合 PasteSkipInvisibleRange が False (デフォルト値)に設定されている場合
Pasting Data in Invisible Range Skip Pasting Data in Invisible Range

次のサンプルコードは、非表示範囲にデータを貼り付けない方法を示します。

C#
コードのコピー
fpSpread1.LegacyBehaviors = LegacyBehaviors.None;
fpSpread1.Features.RichClipboard = true;
fpSpread1.ActiveSheet.Rows[7].Visible = false;
fpSpread1.ActiveSheet.Rows[10, 11].Visible = false;
fpSpread1.AsWorkbook().Features.PasteSkipInvisibleRange = true;
Visual Basic
コードのコピー
FpSpread1.LegacyBehaviors = LegacyBehaviors.None
FpSpread1.Features.RichClipboard = true
FpSpread1.ActiveSheet.Rows(7).Visible = false
FpSpread1.ActiveSheet.Rows(10, 11).Visible = false
FpSpread1.AsWorkbook().Features.PasteSkipInvisibleRange = true
コードからのクリップボード操作の実行

SheetViewクラスには、クリップボード処理用にさまざまなメソッドが用意されています。 必要に応じて、以下のメソッドを実行できます。

複数範囲のデータのコピー/貼り付け操作の有効化

複数範囲にデータをコピー/貼り付けを行うには、IFeature インターフェースの RichClipboard プロパティを使用します。 このプロパティは、新しいスタイルシステムでのみ実装できます。

multi-range-copypaste

このコピー/貼り付けオプションの複数範囲選択は、RichClipboard プロパティが true に設定されている場合にのみ有効になります。

C#
コードのコピー
// 新しいシステムスタイル。
fpSpread1.LegacyBehaviors &= ~LegacyBehaviors.Style;
// RichClipboard プロパティを設定します。
fpSpread1.Features.RichClipboard= true;

Visual Basic
コードのコピー
' 新しいシステムスタイル。
FpSpread1.LegacyBehaviors = FpSpread1.LegacyBehaviors And Not LegacyBehaviors.Style
' RichClipboard プロパティを設定します。
FpSpread1.Features.RichClipboard = True

形式を選択して貼り付け

SPREAD では、ワークシートにセルの内容をコピーして貼り付けることができます。「コピーと貼り付け」オプションを使用すると、デフォルトですべての属性がコピーされます。

単に直接貼り付ける代わりに、「形式を選択して貼り付け」を使用して、クリップボードの内容を特定の方法で貼り付けることもができます。このオプションは、データをクリップボードからワークシートに貼り付ける時の動作を制御する場合に特に便利です。たとえば、「形式を選択して貼り付け」を使用すると、数式を含まずに値のみを貼り付けたり、データを入れ替えたり、貼り付けプロセス中に条件付き書式を含めたりすることができます。

コードの使用

次のサンプルコードは、IRangePasteSpecialメソッドを使用して、セルの内容と書式を貼り付ける方法を示しています。さまざまな貼り付け操作を使用するには、RichClipboard を True に設定する必要があります。

C#
コードのコピー
// セルの内容を追加します
fpSpread1.Features.RichClipboard = true;
fpSpread1.Features.EnhancedShapeEngine = true;
IWorksheet TestActiveSheet = fpSpread1.AsWorkbook().ActiveSheet;
TestActiveSheet.SetValue(0, 0, new object[,] { { 1, 2, 3, null, 5 } });
var rangeA1C1 = TestActiveSheet.Cells["A1:C1"];
rangeA1C1.FormatConditions.AddIconSetCondition();
var cmt = TestActiveSheet.Cells["E2"].AddComment("visible comment");
cmt.Visible = true;
var thread = TestActiveSheet.Cells["D2"].AddCommentThreaded("thread");
thread.AddReply("reply1");
thread.AddReply("reply2");
var cellB2 = TestActiveSheet.Cells["B2"];
cellB2.Borders.LineStyle = GrapeCity.Spreadsheet.BorderLineStyle.Thick;
cellB2.Borders.Color = GrapeCity.Spreadsheet.Color.FromKnownColor(GrapeCity.Core.KnownColor.Red);
// 特定のセルの内容をコピーして貼り付けます
TestActiveSheet.Cells["A1:E2"].Copy(true);
TestActiveSheet.Cells["E8"].PasteSpecial(GrapeCity.Spreadsheet.PasteType.AllExceptBorders, GrapeCity.Spreadsheet.PasteSpecialOperation.None, false, false);
VB
コードのコピー
' セルの内容を追加します
fpSpread1.Features.RichClipboard = True
fpSpread1.Features.EnhancedShapeEngine = True
Dim TestActiveSheet As IWorksheet = fpSpread1.AsWorkbook().ActiveSheet
TestActiveSheet.SetValue(0, 0, New Object(,) {
{1, 2, 3, Nothing, 5}})
Dim rangeA1C1 = TestActiveSheet.Cells("A1:C1")
rangeA1C1.FormatConditions.AddIconSetCondition()
Dim cmt = TestActiveSheet.Cells("E2").AddComment("visible comment")
cmt.Visible = True
Dim thread = TestActiveSheet.Cells("D2").AddCommentThreaded("thread")
thread.AddReply("reply1")
thread.AddReply("reply2")
Dim cellB2 = TestActiveSheet.Cells("B2")
cellB2.Borders.LineStyle = GrapeCity.Spreadsheet.BorderLineStyle.Thick
cellB2.Borders.Color = GrapeCity.Spreadsheet.Color.FromKnownColor(GrapeCity.Core.KnownColor.Red)
' 特定のセルの内容をコピーして貼り付けます
TestActiveSheet.Cells("A1:E2").Copy(True)
TestActiveSheet.Cells("E8").PasteSpecial(GrapeCity.Spreadsheet.Past eType.AllExceptBorders, GrapeCity.Spreadsheet.PasteSpecialOperation.None, False, False)

実行時に「形式を選択して貼り付け」オプションの使用

実行時に「形式を選択して貼り付け」オプションを使用するには、次の手順に従います。

  1. 次のサンプル コードは、RichClipboard プロパティを True に設定して、リボンバーに「実行時に形式を選択して貼り付け」オプションを有効にします。
    C#
    コードのコピー
    fpSpread1.Features.RichClipboard = true;
    ribbonBar1.Attach(fpSpread1);
    

    Visual Basic
    コードのコピー
    FpSpread1.Features.RichClipboard = True
    ribbonBar1.Attach(FpSpread1)
    
  2. コピーするデータまたはその他の属性を含むセル範囲を選択します。
  3. 「ホーム」 メニューの「クリップボード」 グループの「コピー」 オプションをクリックするか、[Ctrl + C ]キーを押します。
  4. コピーしたデータを貼り付けるセルを右クリックし、貼り付けオプションを選択します。

  5. 貼り付けアイコンを直接選択するか、「形式を選択して貼り付け」ダイアログから貼り付けオプションを選択します。

メモ:「貼り付け」 メニューのオプションは、選択したデータの種類によって異なります。たとえば、選択したデータに条件付き書式が設定されていない場合、「すべての結合されている条件付き書式」 オプションが表示されないため、「形式を選択して貼り付け」ダイアログが無効になります。

貼り付けメニューのオプション

Spread では、コピーしたセル データを貼り付けるため、次のオプションがあります。

選択オプション名 貼り付けられる内容
貼り付け リンクされたデータを含むすべてのセルの内容と書式設定を貼り付けます。
数式 数式のみを貼り付けます。
数式と数値の書式 数式と数値の書式オプションのみを貼り付けます。

元の形式を保持

ソース データに適用されたテーマを使用したすべてのセルの内容と書式設定を貼り付けます。

罫線なし

セルの罫線を除いて、すべてのセルの内容と書式設定を貼り付けます。
元の列幅を保持 すべてのセルの内容、書式、および列幅を貼り付けます。
入れ替え コピーしたセルの内容を貼り付けるときに、行と列を入れ替えます。 行のデータは列に、列のデータは行に貼り付けられます。
値の貼り付け セルに表示されている値のみを貼り付けます。
値と数値の書式 値と数値の書式設定のみを貼り付けます。
値と元の書式 値と数値の色とフォント サイズの書式のみを貼り付けます。
書式設定 数値とコピー元の書式設定を含む、セルの書式設定すべてを貼り付けます。
リンク貼り付け 貼り付けたデータをコピー元のデータにリンクします。コピーしたデータへのリンクを貼り付けると、コピーしたセルまたはセル範囲への絶対参照がコピー先に入力されます。
図のコピーを貼り付けます。
リンクされた図 元のセルへのリンク付きの図のコピー を貼り付けます。(元のセルが変更されると、その変更が、貼り付けられ図にも表示されます)。
列幅 列または列の範囲の幅を、別の列または列の範囲に貼り付けます。
条件付き書式の結合 コピーしたセルの条件付き書式設定とペースト領域に適用されている条件付き書式設定を組み合わせます。

「形式を選択して貼り付け」オプション

Spread では、次の「「形式を選択して貼り付け」オプションを使用できます。

オプション名 貼り付けられる内容
すべて リンクされたデータを含む、すべてのセルの内容と書式を貼り付けます。
数式 数式のみを貼り付けます。
セルに表示されている値のみを貼り付けます。
書式 セルの書式を貼り付けます。
コメントとメモ セルに添付されたコメントトとメモのみを貼り付けます。
入力規則 データ入力規則のみを貼り付けます。
コピー元のテーマを使用してすべて貼り付け コピー元のデータに適用されたテーマを使用して、セルの内容と書式をすべて貼り付けます。
罫線を除くすべて セルの罫線を除くいて、セルの内容と書式を貼り付けます。
列幅 列または列の範囲の幅を、別の列または列の範囲に貼り付けます。
数式と数値の書式 数式と数値の書式のみを貼り付けます。
値と数値の書式 値と数値の書式のみを貼り付けます。
すべての結合されている条件付き書式 すべてのセルの内容と書式。コピーしたセルの条件付き書式と貼り付け領域に適用されている条件付き書式を組み合わせます。

「演算」 オプション

「演算」 オプションは、コピー元の領域とコピー先の領域の間で値を数学的に結合します。「形式を選択して貼り付け」ダイアログで「書式」、「コメントとメモ」、「入力規則」フィールドが選択されている場合、「演算」オプションが無効になることに注意してください。

オプション名 貼り付けられる内容
なし 算術演算を行わずに、コピー元の領域の内容を貼り付けます。
加算 コピー元の領域の値を貼り付けコピー先の領域の値に加算します。
減算 コピー先の領域の値からコピー元の領域の値を減算します。
乗算 コピー先の領域の値とコピー元の領域の値を乗算します。
除算 コピー先の領域の値をコピー元の領域の値で除算します。

その他のオプション

次の表は、追加の「形式を選択して貼り付け」オプションについて説明します。

オプション名 貼り付けられる内容
空白セルを無視する コピー元の領域に空白のセルがあるときに、コピー先の領域内の値または属性が空白で置き換えられないようにします。
行/列の入れ替え 貼り付ける時に、コピーしたセルの内容を入れ替えます。行のデータは列に貼り付けられ、またはその逆に変更されます。コピーされた範囲にスパークラインが含まれている場合、入れ替えが無効になります。
リンク貼り付け

データに図ある場合、コピー元の図にリンクします。 コピー元の図が変更されると、貼り付けれた図も変更されます。

「リンク貼り付け」ボタンは、次の条件が満たされる場合にのみ有効になります。

  • 貼り付けは、「すべて」 または「罫線を除くすべて」に設定する場合
  • オプションを「なし」に設定する場合
  • 入れ替え」、「空白セルを無視する」オプションをチェックオンしてない場合

制限事項

参照

 

 


© MESCIUS inc. All rights reserved.