|
>数値の内容ですがEXCELで読み込むと
>A
>10.5
>12.5
>8.5
>20.5
> とこんな感じでデ−タを読み込むのですが
[#1910]で、紹介したコードで、
「ファイルをカンマ区切りでセルに振分けますか?"」と、
聞かれたときに「いいえ」を選択すると、CSVファイルを1行づつ書き出すので、できたらそっちの方が良かったです。
ワードで開いても良いんですけど...。(40万行もあるファイルを開けるのか解りませんが。)
こんな感じに読み込んでいいのか良く解りませんけど。
Sub CSVRead()
Dim OpenFile As String
Dim TBL() As Variant, DataFlg As Boolean, DataCnt As Long
Dim シート名 As String, 基シート名 As String, 増シート数 As Integer
Dim WRow As Long, WCol As Long, ReadL As String
Dim MaxR As Long, MaxL As Long
Dim TBRow As Long, SRow As Integer
Dim STime As Variant, ETime As Variant
基シート名 = ActiveSheet.Name
シート名 = 基シート名: 増シート数 = 0
OpenFile = Application.GetOpenFilename("Excelファイル (*.csv), *.csv")
If OpenFile <> "False" Then
Open OpenFile For Input As #1
Else
End
End If
SRow = 5
WRow = SRow
MaxR = 3000
MaxL = 144 '144列で改ページするようにしてあります。
TBRow = 0
WCol = 0
ReDim TBL(1 To MaxR, 1 To 1)
STime = Now()
Do Until EOF(1)
DataCnt = DataCnt + 1
If DataCnt <= 5 Then
Line Input #1, ReadL
Else
DataFlg = True
TBRow = TBRow + 1
Line Input #1, TBL(TBRow, 1)
If TBRow = MaxR Then
If WCol = MaxL Then
Call 改ページ(基シート名, シート名, 増シート数)
WCol = 1
Else
WCol = WCol + 1
End If
Sheets(シート名).Range(Cells(SRow, WCol), Cells(SRow + MaxR - 1, WCol)).Value = TBL
ReDim TBL(1 To MaxR, 1 To 1)
TBRow = 0
End If
End If
Loop
If DataFlg = True Then
If WCol = MaxL Then
Call 改ページ(基シート名, シート名, 増シート数)
WCol = 1
Else
WCol = WCol + 1
End If
Sheets(シート名).Range(Cells(SRow, WCol), Cells(SRow + MaxR - 1, WCol)).Value = TBL
End If
Close #1
Erase TBL
MsgBox "計測タイム" & vbCrLf & Format(Now() - STime, "hh:mm:ss")
End Sub
Sub 改ページ(基シート名 As String, シート名 As String, 増シート数 As Integer)
Dim 使用列数 As Integer, RR As Integer, II As Integer
With Sheets(基シート名).UsedRange
使用列数 = .Cells(.Count).Column
End With
For II = 1 To Worksheets.Count
If ActiveSheet.Name = Worksheets(II).Name Then
On Error Resume Next
増シート数 = 増シート数 + 1
Worksheets.Add after:=Worksheets(II)
ActiveSheet.Name = 基シート名 & "_" & 増シート数
シート名 = Worksheets(II + 1).Name
Application.ScreenUpdating = False
For RR = 1 To 使用列数
With Sheets(シート名)
.Columns(RR).NumberFormatLocal = Sheets(基シート名).Columns(RR).NumberFormatLocal
.Columns(RR).ColumnWidth = Sheets(基シート名).Columns(RR).ColumnWidth
End With
Next
Application.ScreenUpdating = True
Worksheets(シート名).Select
Exit Sub
End If
Next
End Sub
|
|