|
いろいろアドバイス有難うございました。まだまだ勉強不足なのでいろいろ迷惑かけてしまいすみませんでした。
Input #1, myArrayの所を Line Input #1, myArray
になおし、カンマでデータを区切るsplit関数を用いる事により
実行できました。そのソースを載せておきます。
CSVファイルのデータ
1,太郎,1960/7/27,1979/4/1,GPM2級,無所属,部長
2,次郎,1965/2/21,1980/4/1,PM3級,無所属,部長
Option Explicit
' TextFileを絶対Pathで指定
Private Const INFILE = "C:/java/CSV/0371.csv"
Private Sub CommandButton1_Click()
Dim i As Long, j As Integer
Dim myRange As String
Dim myRange1 As String
Dim myRange2 As String
Dim myArray As Variant
Dim myArray2 As Variant
Dim myFileName As String
Dim mywb As Workbook
Dim mySht As Worksheet
Open INFILE For Input As #1
On Error GoTo Macro1_Err
On Error GoTo 0
With ActiveSheet
.UsedRange.Select
Selection.ClearContents
.Range("A1").Select
End With
'新しいブックを作成
Workbooks.Add
'ファイル名の指定
myFileName = "0371.xls"
Set mywb = Workbooks(2)
mywb.SaveAs Filename:=myFileName
Set mywb = Nothing
On Error Resume Next
'ワークシートの指定
Worksheets(1).Name = "新規"
On Error GoTo 0
Set mySht = Nothing
i = 0
Do Until EOF(1)
i = i + 1
'配列に読み込む
Line Input #1, myArray
'カンマ区切りで配列に書き込む
myArray2 = Split(myArray, ",", -1)
'アクティブブックとアクティブシートの指定
Workbooks("0371.xls").Activate
Worksheets("新規").Activate
'指定したセルにデータを書き込む
For j = 1 To 7
Select Case j
Case 1
myRange2 = ActiveSheet.Cells(1, 1).Address
Case 2
myRange1 = ActiveSheet.Cells(3, 1).Address
ActiveSheet.Range(myRange1).Value = "氏名"
myRange2 = ActiveSheet.Cells(3, 3).Address
ActiveSheet.Range(myRange2).Value = myArray2(1)
Case 3
myRange1 = ActiveSheet.Cells(5, 1).Address
ActiveSheet.Range(myRange1).Value = "生年月日"
myRange2 = ActiveSheet.Cells(5, 3).Address
ActiveSheet.Range(myRange2).Value = myArray2(2)
Case 4
myRange1 = ActiveSheet.Cells(7, 1).Address
ActiveSheet.Range(myRange1).Value = "入社年月日"
myRange2 = ActiveSheet.Cells(7, 3).Address
ActiveSheet.Range(myRange2).Value = myArray2(3)
Case 5
myRange1 = ActiveSheet.Cells(9, 1).Address
ActiveSheet.Range(myRange1).Value = "職能"
myRange2 = ActiveSheet.Cells(9, 3).Address
ActiveSheet.Range(myRange2).Value = myArray2(4)
Case 6
myRange1 = ActiveSheet.Cells(11, 1).Address
ActiveSheet.Range(myRange1).Value = "所属"
myRange2 = ActiveSheet.Cells(11, 3).Address
ActiveSheet.Range(myRange2).Value = myArray2(5)
Case Else
myRange1 = ActiveSheet.Cells(13, 1).Address
ActiveSheet.Range(myRange1).Value = "位"
myRange2 = ActiveSheet.Cells(13, 3).Address
ActiveSheet.Range(myRange2).Value = myArray2(6)
End Select
Next
Loop
Exit Sub
Macro1_Err:
MsgBox "INFILE Error!"
Exit Sub
End Sub
>>jakaさんへ
いろいろ迷惑かけてすみませんでした。少ない情報でいろいろアドバイスして頂き有難うございました。今度質問する時は気をつけたいと思います。
>>Fukuさんへ
そのとうりでした。配列に入れた時点で1978だけになっていました。
|
|