Marcin R.
2006-03-10 23:02:51 UTC
Witam!
Jak zmodyfikować poniższy kod (mam go z książki) aby pobrać dane ze
wskazanego pliku .csv lub .txt - ale nie wszystkie, tylko od wiersza 1 do 24
z "3 kolumny" (czyli dane za 2 a przed 3 średnikiem"
Ponadto są to dane liczbowe podane w systemie amerykańskim, czyli dziesiętna
część liczby jest po kropce. Jak dokonać automatycznej zmiany na system
europejski tak aby np. 10.34 zamieniło na 10,34
Sub ImportRange()
Dim ImpRng As Range
Dim FileName As String
Dim r As Long, c As Integer
Dim txt As String, Char As String * 1
Dim Data
Dim i As Integer
Set ImpRng = ActiveCell
On Error Resume Next
FileName = "d:\Marti\Marti.csv"
Open FileName For Input As #1
If Err <> 0 Then
MsgBox "Nie znaleziono pliku: " & FileName, vbCritical, "BŁĄD"
Exit Sub
End If
r = 0
c = 0
txt = ""
Application.ScreenUpdating = False
Do Until EOF(1)
Line Input #1, Data
For i = 1 To Len(Data)
Char = Mid(Data, i, 1)
If Char = "," Then 'przecinek
ActiveCell.Offset(r, c) = txt
c = c + 1
txt = ""
ElseIf i = Len(Data) Then 'znak końca wiersza
If Char <> Chr(34) Then txt = txt & Char
ActiveCell.Offset(r, c) = txt
txt = ""
ElseIf Char <> Chr(34) Then
txt = txt & Char
End If
Next i
c = 0
r = r + 1
Loop
Close #1
Application.ScreenUpdating = True
End Sub
Jak zmodyfikować poniższy kod (mam go z książki) aby pobrać dane ze
wskazanego pliku .csv lub .txt - ale nie wszystkie, tylko od wiersza 1 do 24
z "3 kolumny" (czyli dane za 2 a przed 3 średnikiem"
Ponadto są to dane liczbowe podane w systemie amerykańskim, czyli dziesiętna
część liczby jest po kropce. Jak dokonać automatycznej zmiany na system
europejski tak aby np. 10.34 zamieniło na 10,34
Sub ImportRange()
Dim ImpRng As Range
Dim FileName As String
Dim r As Long, c As Integer
Dim txt As String, Char As String * 1
Dim Data
Dim i As Integer
Set ImpRng = ActiveCell
On Error Resume Next
FileName = "d:\Marti\Marti.csv"
Open FileName For Input As #1
If Err <> 0 Then
MsgBox "Nie znaleziono pliku: " & FileName, vbCritical, "BŁĄD"
Exit Sub
End If
r = 0
c = 0
txt = ""
Application.ScreenUpdating = False
Do Until EOF(1)
Line Input #1, Data
For i = 1 To Len(Data)
Char = Mid(Data, i, 1)
If Char = "," Then 'przecinek
ActiveCell.Offset(r, c) = txt
c = c + 1
txt = ""
ElseIf i = Len(Data) Then 'znak końca wiersza
If Char <> Chr(34) Then txt = txt & Char
ActiveCell.Offset(r, c) = txt
txt = ""
ElseIf Char <> Chr(34) Then
txt = txt & Char
End If
Next i
c = 0
r = r + 1
Loop
Close #1
Application.ScreenUpdating = True
End Sub
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/