Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870

    [VBScript] Importazione di file .txt in file .xlsx

    Ciao a tutti.

    Utilizzo questo codice VBScript per provare a importare sul file excel output.xlsx il file di testo input.txt, i cui valori sono delimitati dal simbolo pipeline "|".

    Questo è il file di testo input.txt :
    Immagine.jpg

    Questo è il file excel output.xlsx
    Immagine1.jpg

    Questo codice non ha errori ... ma inizia un ciclo infinito, che mi costringe a bloccare l'esecuzione di VBScript.

    Il file di testo input.txt contiene 34 righe ... ma questo script importa righe infinite duplicando sempre le stesse righe ... andando ben oltre le sole 34 righe.

    Come risolverlo?

    Grazie in anticipo per qualsiasi aiuto, davvero apprezzato.

    codice:
         
    
          ExcelFilePath = "D:\xlsx\output.xlsx"
          Set objExcel = CreateObject("Excel.Application")
          objExcel.visible = true
          Set objWB = objExcel.Workbooks.Open(ExcelFilePath)  
          Set SheetObject = objWB.Worksheets("Foglio1") 
    
    
          TextFile = "D:\txt\input.txt" 
    
    
          set TextRead = objFSO.OpenTextFile(TextFile,ForReading)
    
    
          row = 1
    
    
          With SheetObject
          
          Do Until TextRead.AtEndOfStream
              strLine = Trim(TextRead.ReadLine)
        
              If (strLine <> "") Then
                  arrValues = Split(strLine, "|")
                  For irow = 2 to Ubound(arrValues) + 1
                      For icol = 1 to Ubound(arrValues) + 1
                         SheetObject.Cells(irow, icol).value = arrValues(icol-1)
                      Next
                   Next
              End If
              
          row = row + 1
              
          Loop      
                       
          End With      
    
          objWB.Save
          objWB.Close       
          objExcel.Quit
    Immagini allegate Immagini allegate
    Ultima modifica di fraude; 12-09-2019 a 13:15

  2. #2

  3. #3
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    Quote Originariamente inviata da optime Visualizza il messaggio
    non vedo lo script
    Scusate è rimasto sulla tastiera ... eccolo.

    Adesso mi sono accorto che importa solo la prima riga del file input.txt duplicata in un loop infinito ...

    codice:
          
         ExcelFilePath = "D:\xlsx\output.xlsx"
    
          Set objExcel = CreateObject("Excel.Application")
          objExcel.visible = true
          Set objWB = objExcel.Workbooks.Open(ExcelFilePath)  
          Set SheetObject = objWB.Worksheets("Foglio1") 
    
    
          TextFile = "D:\txt\input.txt" 
    
    
          set TextRead = objFSO.OpenTextFile(TextFile,ForReading)
    
    
          row = 1
    
    
          With SheetObject
          
          Do Until TextRead.AtEndOfStream
              strLine = Trim(TextRead.ReadLine)
        
              If (strLine <> "") Then
                  arrValues = Split(strLine, "|")
                  For irow = 2 to Ubound(arrValues) + 1
                      For icol = 1 to Ubound(arrValues) + 1
                         SheetObject.Cells(irow, icol).value = arrValues(icol-1)
                      Next
                   Next
              End If
              
          row = row + 1
              
          Loop      
                       
          End With      
    
          objWB.Save
          objWB.Close
          objExcel.Quit
    Ultima modifica di fraude; 12-09-2019 a 13:39

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,255
    Perché due for? La for deve essere una sola
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Perché due for? La for deve essere una sola
    Risolto, grazie e buon we !
    codice:
    ExcelFilePath = "D:\xlsx\output.xlsx"
    
      Set objExcel = CreateObject("Excel.Application")
      objExcel.visible = True
      Set objWB = objExcel.Workbooks.Open(ExcelFilePath)
      Set SheetObject = objWB.Worksheets("Sheet1")
    
    
      TextFile = "D:\txt\input.txt"
    
    
      Set TextRead = objFSO.OpenTextFile(TextFile, ForReading)
    
    
      row = 2
    
    
      With SheetObject
    
    
      Do Until TextRead.AtEndOfStream
          strLine = Trim(TextRead.ReadLine)
    
    
          If (strLine <> "") Then             
              arrValues = Split(strLine, "|")
              For icol = 1 to Ubound(arrValues) + 1
                 SheetObject.Cells(row, icol).value = arrValues(icol-1)
              Next
          End If
          row = row + 1
      Loop  
    
    
      End With

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2019 vBulletin Solutions, Inc. All rights reserved.