|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2007
Messaggi: 1232
|
[Excel] Imposrtare dati da txt
SAlve ragazzi ho un file txt formattato in questo modo
Codice:
1,2,3,4,5 6,7,8,9,10 vorrei importarlo in excel mettendo i numeri per colonna e non per riga. Ps. per riga ci sono riuscito tramite la funzione di importazione dati.
__________________
Cpu: Amd 64 X2 5200+ - Mobo:M2N32SLI DELUXE - Ram: Corsair xms2 800 mhz kit 4gb - SK Video: Gaiward GTS250 - Ali : Enermax Liberty 500 Wat - Mast DVD: 2 Nec AD-5170A - Case : Thermaltake Armor+ - Dissipatore: Thermaltake V1 Notebook: Sony Vaio VGN-Fe21M-Pda: Htc Diamond |Il mio sito|Flickr| Stanco del solito forum? Vieni a parlare di fotografia su Fotoni |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
Fammi capire. In pratica vorresti nella colonna a
1 2 3 4 5 nella b 6 7 8 9 10 e così via oppure tutti nella stessa colonna? |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Puoi provare ad usare la Workbooks.OpenText(), che penso sia l'equivalente VBA della procedura che hai già provato. Un metodo che richiede poco codice ( anche se una nutrita serie di parametri ), ma che non mi convince troppo quanto a flessibilità di utilizzo.
Personalmente la risolverei così ( metto ogni riga trovata nel .txt, in una colonna, iniziando dalla "A" ) : 1. Anzitutto è necessaria questa Function : Codice:
Private Function LetteraColonna(indiceColonna As Long) As String
LetteraColonna = Left(Cells(1, indiceColonna).Address(1, 0), InStr(1, Cells(1, indiceColonna).Address(1, 0), "$") - 1)
End Function
Codice:
Dim FF As Integer
FF = FreeFile
Dim numRigaTxt As Long
numRigaTxt = 0
Dim rigaTxt As String
Dim arrayValRiga() As String
Open percorso & nomeFileTxt For Input As FF
Do While Not EOF(FF)
Line Input #FF, rigaTxt
numRigaTxt = numRigaTxt + 1
arrayValRiga = Split(rigaTxt, ",")
Range(LetteraColonna(numRigaTxt) & "1:" & LetteraColonna(numRigaTxt) & (UBound(arrayValRiga) + 1)) = WorksheetFunction.Transpose(arrayValRiga)
Loop
Close FF
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2007
Messaggi: 1232
|
Tutti nella stessa colonna.
__________________
Cpu: Amd 64 X2 5200+ - Mobo:M2N32SLI DELUXE - Ram: Corsair xms2 800 mhz kit 4gb - SK Video: Gaiward GTS250 - Ali : Enermax Liberty 500 Wat - Mast DVD: 2 Nec AD-5170A - Case : Thermaltake Armor+ - Dissipatore: Thermaltake V1 Notebook: Sony Vaio VGN-Fe21M-Pda: Htc Diamond |Il mio sito|Flickr| Stanco del solito forum? Vieni a parlare di fotografia su Fotoni |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Jun 2007
Messaggi: 1232
|
Quote:
Potresti darmi qualche diritta ?
__________________
Cpu: Amd 64 X2 5200+ - Mobo:M2N32SLI DELUXE - Ram: Corsair xms2 800 mhz kit 4gb - SK Video: Gaiward GTS250 - Ali : Enermax Liberty 500 Wat - Mast DVD: 2 Nec AD-5170A - Case : Thermaltake Armor+ - Dissipatore: Thermaltake V1 Notebook: Sony Vaio VGN-Fe21M-Pda: Htc Diamond |Il mio sito|Flickr| Stanco del solito forum? Vieni a parlare di fotografia su Fotoni |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
Se li devi mettere tutti in una colonna io risolverei con la powershell.
Ad esempio a questo link http://www.hwupgrade.it/forum/showth...ght=powershell trovi spiegato come installarla. Una volta installata sarebbe sufficiente accedervi digitando powershell da esegui, raggiungere come col classico prompt dei comandi la cartella contenente il file di testo e digitare mezza riga di codice gc tuo_file.txt | % {$_.split(",")} | out-File incolonnati.txt Avresti così il tuo file pronto per l'importazione. Comunque il mitico MarcoGG ti risolverà il problema senza installare alcunchè. |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Beh, se vanno tutti nella stessa colonna ( ad es. A ) è ancora più semplice :
Codice:
Dim FF As Integer
FF = FreeFile
Dim rigaTxt As String
Dim strValori As String
Dim arrayValori() As String
Open percorso & nomeFileTxt For Input As FF
Do While Not EOF(FF)
Line Input #FF, rigaTxt
If strValori = "" Then
strValori = rigaTxt
Else
strValori = strValori & "," & rigaTxt
End If
Loop
arrayValori = Split(strValori, ",")
Range("A1:A" & (UBound(arrayValori) + 1)) = WorksheetFunction.Transpose(arrayValori)
Close FF
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Jun 2007
Messaggi: 1232
|
Quote:
Grazie mille , ma non ho conoscenze in vba , sono riuscito a capire dove inserire codice in excel ma vorrei capire a cosa deve essere legat questo codice e come fare poi per scegliere il file....
__________________
Cpu: Amd 64 X2 5200+ - Mobo:M2N32SLI DELUXE - Ram: Corsair xms2 800 mhz kit 4gb - SK Video: Gaiward GTS250 - Ali : Enermax Liberty 500 Wat - Mast DVD: 2 Nec AD-5170A - Case : Thermaltake Armor+ - Dissipatore: Thermaltake V1 Notebook: Sony Vaio VGN-Fe21M-Pda: Htc Diamond |Il mio sito|Flickr| Stanco del solito forum? Vieni a parlare di fotografia su Fotoni |
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jun 2007
Messaggi: 1232
|
OK ci sono riuscito
- c'è un modo per fargli scegliere il file a da una finestra? e non inserirlo nel codice? - come dovrà fare lui per eseguire la macro ? Grazie.
__________________
Cpu: Amd 64 X2 5200+ - Mobo:M2N32SLI DELUXE - Ram: Corsair xms2 800 mhz kit 4gb - SK Video: Gaiward GTS250 - Ali : Enermax Liberty 500 Wat - Mast DVD: 2 Nec AD-5170A - Case : Thermaltake Armor+ - Dissipatore: Thermaltake V1 Notebook: Sony Vaio VGN-Fe21M-Pda: Htc Diamond |Il mio sito|Flickr| Stanco del solito forum? Vieni a parlare di fotografia su Fotoni |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Jun 2007
Messaggi: 1232
|
Codice:
Function BrowseForFolder(Optional OpenAt As Variant) As Variant
'Function purpose: To Browser for a user selected folder.
'If the "OpenAt" path is provided, open the browser at that directory
'NOTE: If invalid, it will open at the Desktop level
Dim ShellApp As Object
'Create a file browser window at the default folder
Set ShellApp = CreateObject("Shell.Application"). _
BrowseForFolder(0, "Please choose a folder", 0, OpenAt)
'Set the folder to that selected. (On error in case cancelled)
On Error Resume Next
BrowseForFolder = ShellApp.self.Path
On Error Goto 0
'Destroy the Shell Application
Set ShellApp = Nothing
'Check for invalid or non-entries and send to the Invalid error
'handler if found
'Valid selections can begin L: (where L is a letter) or
'\\ (as in \\servername\sharename. All others are invalid
Select Case Mid(BrowseForFolder, 2, 1)
Case Is = ":"
If Left(BrowseForFolder, 1) = ":" Then Goto Invalid
Case Is = "\"
If Not Left(BrowseForFolder, 1) = "\" Then Goto Invalid
Case Else
Goto Invalid
End Select
Exit Function
Invalid:
'If it was determined that the selection was invalid, set to False
BrowseForFolder = False
End Function
__________________
Cpu: Amd 64 X2 5200+ - Mobo:M2N32SLI DELUXE - Ram: Corsair xms2 800 mhz kit 4gb - SK Video: Gaiward GTS250 - Ali : Enermax Liberty 500 Wat - Mast DVD: 2 Nec AD-5170A - Case : Thermaltake Armor+ - Dissipatore: Thermaltake V1 Notebook: Sony Vaio VGN-Fe21M-Pda: Htc Diamond |Il mio sito|Flickr| Stanco del solito forum? Vieni a parlare di fotografia su Fotoni |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jun 2007
Messaggi: 1232
|
Grazie a tutti , soprattutto a te MarcoGG , ho risolto. Ecco il codice, magari serve a qualcuno...
Codice:
Option Explicit
Function RetrieveFileName()
Dim sFileName As String
RetrieveFileName = Application.GetOpenFilename
'They have cancelled.
If RetrieveFileName = "False" Then Exit Function
End Function
Sub txtToExcel()
Dim result As String
result = RetrieveFileName
Select Case result
Case Is = False
result = "an invalid file"
Case Else
'don't change anything
End Select
Dim FF As Integer
FF = FreeFile
Dim rigaTxt As String
Dim strValori As String
Dim arrayValori() As String
Open result For Input As FF
Do While Not EOF(FF)
Line Input #FF, rigaTxt
If strValori = "" Then
strValori = rigaTxt
Else
strValori = strValori & "," & rigaTxt
End If
Loop
arrayValori = Split(strValori, ",")
Range("A1:A" & (UBound(arrayValori) + 1)) = WorksheetFunction.Transpose(arrayValori)
Close FF
End Sub
__________________
Cpu: Amd 64 X2 5200+ - Mobo:M2N32SLI DELUXE - Ram: Corsair xms2 800 mhz kit 4gb - SK Video: Gaiward GTS250 - Ali : Enermax Liberty 500 Wat - Mast DVD: 2 Nec AD-5170A - Case : Thermaltake Armor+ - Dissipatore: Thermaltake V1 Notebook: Sony Vaio VGN-Fe21M-Pda: Htc Diamond |Il mio sito|Flickr| Stanco del solito forum? Vieni a parlare di fotografia su Fotoni |
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
sFileName viene dichiarato e mai usato. Inoltre è buona regola aggiungere un filtro, in questo caso per restringere il campo di scelta ai soli files di testo .txt : Codice:
Dim nomeFileTxt As Variant
Dim filtroFiles As String
filtroFiles = "File di testo (*.txt),*.txt"
nomeFileTxt = Application.GetOpenFilename(filtroFiles, 1, "Scegli un file di testo", "Apri File", False)
If nomeFileTxt = False Then
MsgBox "Nessun file valido"
Else
'Continua l'elaborazione...
'...
End If
|
|
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Jun 2007
Messaggi: 1232
|
Quote:
__________________
Cpu: Amd 64 X2 5200+ - Mobo:M2N32SLI DELUXE - Ram: Corsair xms2 800 mhz kit 4gb - SK Video: Gaiward GTS250 - Ali : Enermax Liberty 500 Wat - Mast DVD: 2 Nec AD-5170A - Case : Thermaltake Armor+ - Dissipatore: Thermaltake V1 Notebook: Sony Vaio VGN-Fe21M-Pda: Htc Diamond |Il mio sito|Flickr| Stanco del solito forum? Vieni a parlare di fotografia su Fotoni |
|
|
|
|
|
|
#14 | |
|
Member
Iscritto dal: Aug 2008
Messaggi: 178
|
Quote:
Ciao |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:02.




















