高速化する為に、CSVファイルをTXTファイルに変換してからオープンします。
CSVファイルの一行目の書き出しが、ID の場合「Excelは、'ファイル名'がSYLK ファイルであることを・・・」というエラーが発生します。これは、CSVファイルをExcelがSYLKファイルと認識してしまう為らしく、テキストエディタでCSVファイルを開き、一時的に変更してください。
VBAProject --> 標準モジュール --> ModuleXX
CSVファイルの一行目の書き出しが、ID の場合「Excelは、'ファイル名'がSYLK ファイルであることを・・・」というエラーが発生します。これは、CSVファイルをExcelがSYLKファイルと認識してしまう為らしく、テキストエディタでCSVファイルを開き、一時的に変更してください。
VBAProject --> 標準モジュール --> ModuleXX
Private Sub CommandButton1_Click()
'CSV読込
Dim myPath As String, mySheet As String
Dim myCSVFile As Variant, myTXTFile As Variant
Dim strThisFileName As String, strOpenFileName As String
Dim lngFieldCount As Long, lngRecordCount As Long
'ファイル間を移動するので、このExcelファイル名を覚えておく
strThisFileName = ThisWorkbook.Name
'★データのフィールド数を設定
lngFieldCount = 17
'このファイルのパスを取得
myPath = ThisWorkbook.Path
'現在のアクティブシート名を覚えておく
mySheet = ActiveSheet.Name
'カレントドライブ、カレントフォルダの移動
ChDrive myPath
ChDir myPath
'CSVファイルを選択し、ファイル名を取得
myCSVFile = Application.GetOpenFilename("CSVファイル (*.csv), *.csv")
'選択されずにキャンセルされた場合
If myCSVFile = False Then Exit Sub
Application.ScreenUpdating = False
'CSVファイルからTXTファイルに変換(パスが付いたファイル名)
myTXTFile = Left(myCSVFile, Len(myCSVFile) - 4) & ".txt"
Name myCSVFile As myTXTFile
'変換したテキストファイルを開く
Workbooks.OpenText Filename:=myTXTFile, DataType:=xlDelimited, comma:=True
'開いたテキストファイル名
strOpenFileName = ActiveWorkbook.Name
'貼り付け先のデータをクリア
With Workbooks(strThisFileName).Sheets(mySheet).Range("B11")
.Resize(.CurrentRegion.Rows.Count, lngFieldCount).ClearContents
End With
'CSVファイルのレコード数
lngRecordCount = Workbooks(strOpenFileName).Sheets(1).Cells(1).CurrentRegion.Rows.Count
'CSVファイルをコピー
Workbooks(strOpenFileName).Sheets(1).Cells(1).Resize(lngRecordCount, lngFieldCount).Copy
'値貼り付け
Workbooks(strThisFileName).Sheets(mySheet).Range("B11").PasteSpecial Paste:=xlPasteValues
'コピーモードを解除(重要)
Application.CutCopyMode = False
'テキストファイルを閉じる
Workbooks(strOpenFileName).Close savechanges:=False
'テキストファイル名をCSVファイル名に戻しておく
Name myTXTFile As myCSVFile
Range("B11").Select
Application.ScreenUpdating = True