クリップボードへのコピー時に非表示の行列を除外する方法
対象製品
SPREAD for Windows Forms 5.0J
詳細
行フィルタリングや行列の非表示設定は、あくまで表示上でのみ有効となり実際のデータには影響を与えることはありません。
そのため、非表示セルを含む範囲を指定してコピーした場合には全てのデータがコピーされます。
非表示の行や列を除外し、クリップボードへコピーするには[Ctrl]+[C]キーのデフォルトの入力マップを変更し、
クリップボードへのコピーに非表示の行や列を除外するアクション(ClipboardCopyAsStringSkipHidden)を割り当てることで実現できます。
◎サンプルコード(VB)
◎サンプルコード(C#)
そのため、非表示セルを含む範囲を指定してコピーした場合には全てのデータがコピーされます。
非表示の行や列を除外し、クリップボードへコピーするには[Ctrl]+[C]キーのデフォルトの入力マップを変更し、
クリップボードへのコピーに非表示の行や列を除外するアクション(ClipboardCopyAsStringSkipHidden)を割り当てることで実現できます。
◎サンプルコード(VB)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' 自動フィルタリング機能を有効にします
FpSpread1.ActiveSheet.Columns(0).AllowAutoFilter = True
FpSpread1.ActiveSheet.DefaultStyle.CellType = New FarPoint.Win.Spread.CellType.TextCellType
FpSpread1.ActiveSheet.SetText(0, 0, "Fender")
FpSpread1.ActiveSheet.SetText(1, 0, "Gibson")
FpSpread1.ActiveSheet.SetText(2, 0, "Fender")
FpSpread1.ActiveSheet.SetText(3, 0, "Ibanez")
FpSpread1.ActiveSheet.SetText(4, 0, "Gibson")
FpSpread1.ActiveSheet.SetText(5, 0, "YAMAHA")
FpSpread1.ActiveSheet.SetText(0, 1, "AST-100 DMC")
FpSpread1.ActiveSheet.SetText(1, 1, "Les Paul Standard Double Cut Plus")
FpSpread1.ActiveSheet.SetText(2, 1, "ST58-70TX")
FpSpread1.ActiveSheet.SetText(3, 1, "AGS83B")
FpSpread1.ActiveSheet.SetText(4, 1, "Les Paul Supreme")
FpSpread1.ActiveSheet.SetText(5, 1, "ATTITUDE-Limited II")
FpSpread1.ActiveSheet.SetColumnWidth(0, 90)
FpSpread1.ActiveSheet.SetColumnWidth(1, 210)
' [Ctrl]+[C]キーで非表示行のコピーを除外するように設定します
Dim im As New FarPoint.Win.Spread.InputMap
im = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused)
im.Put(New FarPoint.Win.Spread.Keystroke(Keys.C, Keys.Control), FarPoint.Win.Spread.SpreadActions.ClipboardCopyAsStringSkipHidden)
End Sub
' 自動フィルタリング機能を有効にします
FpSpread1.ActiveSheet.Columns(0).AllowAutoFilter = True
FpSpread1.ActiveSheet.DefaultStyle.CellType = New FarPoint.Win.Spread.CellType.TextCellType
FpSpread1.ActiveSheet.SetText(0, 0, "Fender")
FpSpread1.ActiveSheet.SetText(1, 0, "Gibson")
FpSpread1.ActiveSheet.SetText(2, 0, "Fender")
FpSpread1.ActiveSheet.SetText(3, 0, "Ibanez")
FpSpread1.ActiveSheet.SetText(4, 0, "Gibson")
FpSpread1.ActiveSheet.SetText(5, 0, "YAMAHA")
FpSpread1.ActiveSheet.SetText(0, 1, "AST-100 DMC")
FpSpread1.ActiveSheet.SetText(1, 1, "Les Paul Standard Double Cut Plus")
FpSpread1.ActiveSheet.SetText(2, 1, "ST58-70TX")
FpSpread1.ActiveSheet.SetText(3, 1, "AGS83B")
FpSpread1.ActiveSheet.SetText(4, 1, "Les Paul Supreme")
FpSpread1.ActiveSheet.SetText(5, 1, "ATTITUDE-Limited II")
FpSpread1.ActiveSheet.SetColumnWidth(0, 90)
FpSpread1.ActiveSheet.SetColumnWidth(1, 210)
' [Ctrl]+[C]キーで非表示行のコピーを除外するように設定します
Dim im As New FarPoint.Win.Spread.InputMap
im = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused)
im.Put(New FarPoint.Win.Spread.Keystroke(Keys.C, Keys.Control), FarPoint.Win.Spread.SpreadActions.ClipboardCopyAsStringSkipHidden)
End Sub
◎サンプルコード(C#)
private void Form1_Load(object sender, EventArgs e)
{
// 自動フィルタリング機能を有効にします
fpSpread1.ActiveSheet.Columns[0].AllowAutoFilter = true;
fpSpread1.ActiveSheet.DefaultStyle.CellType = new FarPoint.Win.Spread.CellType.TextCellType();
fpSpread1.ActiveSheet.SetText(0, 0, "Fender");
fpSpread1.ActiveSheet.SetText(1, 0, "Gibson");
fpSpread1.ActiveSheet.SetText(2, 0, "Fender");
fpSpread1.ActiveSheet.SetText(3, 0, "Ibanez");
fpSpread1.ActiveSheet.SetText(4, 0, "Gibson");
fpSpread1.ActiveSheet.SetText(5, 0, "YAMAHA");
fpSpread1.ActiveSheet.SetText(0, 1, "AST-100 DMC");
fpSpread1.ActiveSheet.SetText(1, 1, "Les Paul Standard Double Cut Plus");
fpSpread1.ActiveSheet.SetText(2, 1, "ST58-70TX");
fpSpread1.ActiveSheet.SetText(3, 1, "AGS83B");
fpSpread1.ActiveSheet.SetText(4, 1, "Les Paul Supreme");
fpSpread1.ActiveSheet.SetText(5, 1, "ATTITUDE-Limited II");
fpSpread1.ActiveSheet.SetColumnWidth(0, 90);
fpSpread1.ActiveSheet.SetColumnWidth(1, 210);
// [Ctrl]+[C]キーで非表示行のコピーを除外するように設定します
FarPoint.Win.Spread.InputMap im = new FarPoint.Win.Spread.InputMap();
im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused);
im.Put(new FarPoint.Win.Spread.Keystroke(Keys.C, Keys.Control), FarPoint.Win.Spread.SpreadActions.ClipboardCopyAsStringSkipHidden);}
}
{
// 自動フィルタリング機能を有効にします
fpSpread1.ActiveSheet.Columns[0].AllowAutoFilter = true;
fpSpread1.ActiveSheet.DefaultStyle.CellType = new FarPoint.Win.Spread.CellType.TextCellType();
fpSpread1.ActiveSheet.SetText(0, 0, "Fender");
fpSpread1.ActiveSheet.SetText(1, 0, "Gibson");
fpSpread1.ActiveSheet.SetText(2, 0, "Fender");
fpSpread1.ActiveSheet.SetText(3, 0, "Ibanez");
fpSpread1.ActiveSheet.SetText(4, 0, "Gibson");
fpSpread1.ActiveSheet.SetText(5, 0, "YAMAHA");
fpSpread1.ActiveSheet.SetText(0, 1, "AST-100 DMC");
fpSpread1.ActiveSheet.SetText(1, 1, "Les Paul Standard Double Cut Plus");
fpSpread1.ActiveSheet.SetText(2, 1, "ST58-70TX");
fpSpread1.ActiveSheet.SetText(3, 1, "AGS83B");
fpSpread1.ActiveSheet.SetText(4, 1, "Les Paul Supreme");
fpSpread1.ActiveSheet.SetText(5, 1, "ATTITUDE-Limited II");
fpSpread1.ActiveSheet.SetColumnWidth(0, 90);
fpSpread1.ActiveSheet.SetColumnWidth(1, 210);
// [Ctrl]+[C]キーで非表示行のコピーを除外するように設定します
FarPoint.Win.Spread.InputMap im = new FarPoint.Win.Spread.InputMap();
im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused);
im.Put(new FarPoint.Win.Spread.Keystroke(Keys.C, Keys.Control), FarPoint.Win.Spread.SpreadActions.ClipboardCopyAsStringSkipHidden);}
}
関連情報
- ヘッダ部のコピーだけ有効にし、ヘッダ部への文字の貼り付けを無効にする方法
- クリップボードのデータからペースト先のセル範囲を取得する方法
- ペースト時にChangeイベントが発生しません
- 【Tips】セルの値のみのカット&ペーストを実装する方法
- オペレーションモードを行選択モード(RowMode)にするとセルの値をクリップボードへコピーできません
キーワード
「クリップボード」
この文書は、以前は次のFAQ IDで公開されていました : 13011