ホーム :ファイル・テキスト文読み込み :


列数が多いテキスト文の読み込み

前へ 次へ

Sub text読込()
' excel お宝ヘルプより ----------------------------------------<参考までに>-----------

Dim MyName As String, OpenName As String
Dim FieldInfo1(256)
Dim Message As String, Title As String
Dim txtfield As String, myArray() As String
Dim n As Integer, i As Integer

MyName = Application.GetOpenFilename _
("テキスト ファイル (*.txt;*.csv), *.txt;*.csv")
If MyName = "False" Then Exit Sub
If UCase(Right(MyName, 3)) = "CSV" Then
OpenName = Left(MyName, Len(MyName) - 3) & "txt"
Name MyName As OpenName
Else
OpenName = MyName
End If

Message = "文字列データの位置を「,」で区切って指定して下さい。" _
& Chr(13) & " 例 : 3,5,8,13" & Chr(13) _
& "指定無しの場合、全フィールドを文字列とします。"
Title = "文字列フィールド設定"
txtfield = InputBox(Message, Title)

If txtfield = "" Then
For i = 1 To 256
FieldInfo1(i) = Array(i, 2)
Next
Else
For i = 1 To 256
FieldInfo1(i) = Array(i, 1)
Next
n = strCount(txtfield, ",") + 1
ReDim myArray(n)

For i = 1 To n
If InStr(txtfield, ",") > 0 Then
myArray(i) = Left(txtfield, InStr(txtfield, ",") - 1)
txtfield = Mid(txtfield, InStr(txtfield, ",") + 1, _
Len(txtfield))
Else
myArray(i) = txtfield
End If
FieldInfo1(Val(myArray(i))) = Array(Val(myArray(i)), 2)
Next i
End If

Workbooks.OpenText FileName:=OpenName, StartRow:=1, _
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
Comma:=True, FieldInfo:=FieldInfo1

End Sub

Sub text読込2() ' 全列を文字列で開く。

Dim MyName As String, OpenName As String
Dim FieldInfo1(256)
Dim Message As String, Title As String

Dim txtfield As String, myArray() As String
Dim n As Integer, i As Integer

OpenName = "d:\si\sql_db_out.cs"

For i = 1 To 256
FieldInfo1(i) = Array(i, 2)
Next

n = strCount(txtfield, ",") + 1
ReDim myArray(n)

For i = 1 To n
If InStr(txtfield, ",") > 0 Then
myArray(i) = Left(txtfield, InStr(txtfield, ",") - 1)
txtfield = Mid(txtfield, InStr(txtfield, ",") + 1, _
Len(txtfield))
Else
myArray(i) = txtfield
End If
FieldInfo1(Val(myArray(i))) = Array(Val(myArray(i)), 2)
Next i

Workbooks.OpenText FileName:=OpenName, StartRow:=1, _
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
Comma:=True, FieldInfo:=FieldInfo1

End Sub

Function strCount(tmp As String, str As String)
Dim pos As Integer, cnt As Integer, buf As String
buf = tmp
pos = InStr(buf, str)
Do While pos > 0
cnt = cnt + 1
buf = Mid(buf, pos + 1, Len(buf))
pos = InStr(buf, str)
Loop
strCount = cnt
End Function




前へ 次へ
ファイル・テキスト文読み込み に戻る