CSV形式・TSV形式のデータをクリップボードに出し入れする方法を記載します。
・CSV形式とは、カンマ区切りで、TSV形式とは、タブ区切りです。
クリップボードにCSV形式のデータをコピーする
CSV形式をクリップボードにコピーするには、DataObjectクラスのSetDataメソッドを使用する
パラメータに、DataFormats.CommaSeparatedValueを指定する
また、文字コードをシフトJISに変換するため、Encodingクラス、MemoryStreamクラスを使用する
Dim csv As String = "あ,B,C" & vbCrLf & "D,E,F" '文字コードを変換するためにMemoryStreamに変換する Dim bytes As Byte() = System.Text.Encoding.GetEncoding("sjis").GetBytes(csv) Dim ms As New System.IO.MemoryStream(bytes) 'CSV形式のデータを設定する Dim data As New DataObject() data.SetData(DataFormats.CommaSeparatedValue, ms) 'クリップボードにコピーする Clipboard.SetDataObject(data)
クリップボードにTSV形式のデータをコピーする
TSVの場合、テキストとして、クリップボードに出し入れ出来ます。
Dim tsv As String = "A" & vbTab & "B" & vbTab & "C" & vbCrLf & "D" Clipboard.SetText(tsv)
CSV形式のように、DataObjectクラスを使用することも出来ます。
Dim tsv As String = "A" & vbTab & "B" & vbTab & "C" & vbCrLf Dim data As New DataObject() data.SetData(DataFormats.Text, tsv) 'クリップボードにコピーする Clipboard.SetDataObject(data)
クリップボードからCSV形式のデータを取得する
Dim csv As String If Clipboard.ContainsData(DataFormats.CommaSeparatedValue) Then Dim data As DataObject = Clipboard.GetDataObject() Dim csvData As Object = data.GetData(DataFormats.CommaSeparatedValue) If TypeOf csvData Is System.IO.MemoryStream Then Dim ms As System.IO.MemoryStream = DirectCast(csvData, System.IO.MemoryStream) 'エンコードして、文字列に変換する csv = System.Text.Encoding.GetEncoding("sjis").GetString(ms.ToArray()) End If End If