CSVいろいろ

2017–08–31 (Thu) 18:20
クリップボードを使用してCSVのデータを取ってくる方法です。
場合によっては配列を使用するよりも早いです。

Sub Clipboard CSV()
Application.ScreenUpdating = False

aw = ActiveSheet.Name
Dim aWb As Workbook
Set aWb = ActiveWorkbook
Dim Clipboard As New DataObject

With CreateObject("Scripting.FileSystemObject")
With .GetFile(CSVファイルを指定).OpenAsTextStream
csv = Replace(.ReadAll, ",", Chr(9))
With Clipboard
.SetText csv
.PutInClipboard 'クリップボードに格納
End With
.Close
End With
End With
ActiveSheet.Range("a1").Select
ActiveSheet.Paste

Application.ScreenUpdating = True
End Sub

1359*7 (9513セル)使用のCSVをコピーしたところ、0.02秒程度こちらの方が早かった。
ただ、データが増えると遅くなることが分かった。

無題-2

MB越えるサイズの場合はこの方法が一番良い事が判明した。
(5000*125) データ625000

Sub Opentext CSV()
Application.ScreenUpdating = False

Dim aWb As Workbook
Set aWb = ActiveWorkbook
Dim aWs As activeworkbook
Set aWs = ActiveSheet
aWs = ActiveSheet.Name
Dim TextPath As String

TextPath = "読み込むCSVをtxtファイルにする"
Workbooks.OpenText Filename:=TextPath, _
DataType:=xlDelimited, _
Tab:=True, _
Semicolon:=False, _
Comma:=True, _
Space:=False, _
Other:=True, _
Otherchar:="/"

ActiveWorkbook.Sheets(1).Cells.Copy aWs.Range("A1")
ActiveWorkbook.Close False

Application.ScreenUpdating = True
End sub

スポンサーサイト

« データ更新(追記有) CSVファイルにに書き込む | HOME |  ワークシートのコピーはどれが一番早いか »

コメント

コメントの投稿

 
管理者にだけ表示

 | HOME | 

プロフィール

あゆみ

Author:あゆみ
FC2ブログへようこそ!

最新記事

最新コメント

フリーエリア

月別アーカイブ

カテゴリ

ブロとも申請フォーム

検索フォーム

RSSリンクの表示

リンク