|
▼min さん:
>そのまま(クッションを置かずに)出力するのは難しいですか?
シートの範囲をCOPY して、クリップボードに TAB区切りTEXTとして
格納されたものを DataObjectに取得して、
Dictionaryオブジェクトで重複および 空行をカットして
一括出力する方法です。
Sub Try1()
Dim r1 As Range
Dim v, i As Long, ss As String
Const CLSID_DataObject = "1C3B4210-F441-11CE-B9EA-00AA006B1A69"
'出力範囲をクリップボードへ転送(TAB区切り)
With Sheets("sheet1")
.Range("A1", .Range("A65536").End(xlUp)).Resize(, 2).Copy
End With
'クリップボードデータを文字列として取得
With GetObject("new:" & CLSID_DataObject)
.GetFromClipBoard
ss = .GetText(1)
End With
'行末改行コードで 行に分割
v = Split(ss, vbCrLf)
'重複行と空行をカット
With CreateObject("Scripting.Dictionary")
For i = 0 To UBound(v)
If Len(v(i)) > 1 Then .Item(v(i)) = Empty
Next
'再び CRLFで結合
ss = Join(.Keys, vbCrLf)
End With
Dim io As Integer
io = FreeFile() 'TAB区切りテキスト出力
Open "D:\(Data)\file.txt" For Append As io
Print #io, ss
Close io
MsgBox "出力しました"
End Sub
※カンマ区切りで出力したければ、
クリップボードから取得した文字列中の TAB を "," に
Replace すればいいです。
|
|