Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


26376 / 76738 ←次へ | 前へ→

【55693】Re:空白、重複なしのデータを出力する
回答  kanabun  - 08/5/15(木) 22:53 -

引用なし
パスワード
   ▼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 すればいいです。

0 hits

【55685】空白、重複なしのデータを出力する min 08/5/15(木) 21:04 質問
【55686】Re:空白、重複なしのデータを出力する kanabun 08/5/15(木) 21:15 発言
【55690】Re:空白、重複なしのデータを出力する min 08/5/15(木) 21:59 発言
【55693】Re:空白、重複なしのデータを出力する kanabun 08/5/15(木) 22:53 回答
【55695】Re:空白、重複なしのデータを出力する min 08/5/15(木) 23:14 お礼

26376 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free