Come modificare file csv e di testo con VBA (macro di Excel).
Data di pubblicazione:5 luglio 2022.
INFOMARTION > Come modificare file csv e di testo con VBA (macro di Excel).
Panoramica.
Vorrei descrivere come modificare file csv e di testo con VBA (macro di Excel). L'articolo si rivolge a coloro che desiderano programmare i seguenti compiti
- Voglio aggiungere righe a un file csv o di testo già esistente. Voglio aggiungere del testo al centro di una riga.
- Voglio eliminare le righe di un file csv o di testo già esistente.
Indice dei contenuti
1. Metodo di programmazione
In conclusione, FileSystemObject non ha la capacità di aggiungere nel mezzo di una riga o di cancellare una riga specifica, quindi è necessario programmarlo da soli.
Di seguito sono riportati esempi di programmazione di riferimento.
Poiché è stato creato in Function, spero che sia possibile inserirlo così com'è, facendo copia e incolla, e fargli chiamare i metodi da Sub.
'Parameter Examples
'## filePath C:\Users\user\Desktop\test\test.txt
'## mode false:delete, true:write
'## targetRow 10
'## targetInput If in write mode, any character
'## lineBreakType false:vbLf, true:vbCrLf
Function editFile(filePath As String, mode As Boolean, targetRow As Long, targetInput As String, lineBreakType As Boolean)
'File existence check
If Dir(filePath) = "" Then
MsgBox "File does not exist!"
Exit Function
End If
Dim tempText As String
Dim tempTextBefore As String
Dim tempTextNew As String
Dim tempTextAfter As String
Dim resultText As String
Dim i As Long
'File read
With CreateObject("ADODB.Stream")
.Charset = "UTF-8"
.Open
.LoadFromFile filePath
tempText = .ReadText
.Close
End With
Dim tempTextBeforeRow As Long
tempTextBeforeRow = 0
For i = 1 To targetRow - 1
If lineBreakType Then
tempTextBeforeRow = InStr(tempTextBeforeRow + 1, tempText, vbCrLf)
Else
tempTextBeforeRow = InStr(tempTextBeforeRow + 1, tempText, vbLf)
End If
Next i
If lineBreakType Then
tempTextBeforeRow = tempTextBeforeRow + 1
End If
tempTextBefore = Left(tempText, tempTextBeforeRow)
'write
If mode Then
tempTextAfter = Mid(tempText, tempTextBeforeRow + 1, Len(tempText))
If lineBreakType Then
tempTextNew = targetInput & vbCrLf
Else
tempTextNew = targetInput & vbLf
End If
resultText = tempTextBefore & tempTextNew & tempTextAfter
'delete
Else
Dim tempTextAfterRow As Long
tempTextAfterRow = 0
For i = 1 To CInt(targetRow)
If lineBreakType Then
tempTextAfterRow = InStr(tempTextAfterRow + 1, tempText, vbCrLf)
Else
tempTextAfterRow = InStr(tempTextAfterRow + 1, tempText, vbLf)
End If
Next i
If lineBreakType Then
tempTextAfterRow = tempTextAfterRow + 1
End If
tempTextAfter = Mid(tempText, tempTextAfterRow + 1, Len(tempText))
resultText = tempTextBefore & tempTextAfter
End If
With CreateObject("ADODB.Stream")
.Charset = "UTF-8"
If lineBreakType Then
.LineSeparator = -1
Else
.LineSeparator = 10
End If
.Open
.WriteText tempTextBefore & tempTextNew & tempTextAfter, 0
.SaveToFile filePath, 2
.Close
End With
End Function
Per utilizzarlo, passare gli argomenti come segue.
- filePath・・・Questo sarà il percorso completo del file. Esempio.)C:\Users\user\Desktop\test\test.txt
- mode・・・Passare vero, falso. Se è vero, aggiungere. Se falso, elimina la riga.
- targetRow・・・Specifica il numero di righe di destinazione. Nel caso di aggiunte, è il numero di righe da aggiungere e nel caso di cancellazioni, è il numero di righe da cancellare.
- targetInput・・・Per i post scriptum, specificare il valore da aggiungere. Non viene utilizzato per la cancellazione e può essere un valore arbitrario. Sono accettabili anche le lettere vuote.
- lineBreakType・・・Impostazione dei caratteri di newline. Se è vero, vbCrLf. vbLf se False. Una spiegazione approssimativa è Vero per i file creati in Windows.
La codifica dei caratteri è UTF-8, ma se si desidera cambiarla, modificare direttamente il codice della funzione. Ci sono due punti in cui ".Charset = "UTF-8"".
Di seguito è riportato un esempio di implementazione di una chiamata di funzione.
Sub test()
'Esempio di aggiunta di test123 alla riga 5 di test.txt.(File creati in Windows.)
editFile "C:\Users\user\Desktop\test\test.txt", True, 5, "test123", True
'Esempio di cancellazione della riga 5 di test.txt.(File creati in Windows.)
editFile "C:\Users\user\Desktop\test\test.txt", False, 5, "", True
End Sub
Se si desidera aggiungere come csv, l'argomento del valore da aggiungere deve essere un valore separato da virgole e verrà aggiunto un valore separato da virgole. Esempio.)"test1,test2,test3"
2. Codice Descrizione.
Qui finiscono le istruzioni per l'uso del sistema, seguite da una spiegazione del codice.
I dettagli si trovano nel codice, ma un flusso di processo approssimativo è il seguente.
Per il poscritto.
- ①Lettura dei file di testo nei percorsi passati come argomenti.
- ②Il numero di caratteri fino al numero di righe passate nell'argomento è specificato dal numero di newline. Ad esempio, per la riga 5, ci sono quattro interruzioni di riga prima della riga 5, quindi trovare la posizione in cui si trova la quarta interruzione di riga
- ③Recuperare le informazioni fino alla riga 4.
- ④(2) Acquisire le informazioni dalla riga 5 in poi con le stesse modalità del punto (2).
- ⑤Le informazioni in (3), le informazioni da aggiungere passate come argomento e le informazioni in (4) vengono combinate insieme.
- ⑥Creare un file basato sulle informazioni di (5) e sovrascrivere il file.
In caso di cancellazione
- ①Lettura dei file di testo nei percorsi passati come argomenti.
- ②Il numero di caratteri fino al numero di righe passate nell'argomento è specificato dal numero di newline. Ad esempio, per la riga 5, ci sono quattro interruzioni di riga prima della riga 5, quindi trovare la posizione in cui si trova la quarta interruzione di riga
- ③Recuperare le informazioni fino alla riga 4.
- ④(2) Acquisire le informazioni dalla riga 6 in poi con le stesse modalità del punto (2).
- ⑤Le informazioni di cui ai punti (iii) e (iv) sono combinate insieme. (Crea una stringa senza la quinta riga.)
- ⑥Creare un file basato sulle informazioni di (5) e sovrascrivere il file.
Nel caso dell'aggiunta e dell'eliminazione, le due operazioni sono identiche, ma anziché modificare il file, si fa in modo che solo le informazioni necessarie vengano estratte dal file originale e che venga creato e salvato un nuovo file.
3. sintesi
Se avete problemi a modificare file csv/testo con VBA (macro di Excel), consultate questa sezione.
Grazie per aver guardato fino alla fine.
■INFORMATION
Fare clic qui per accedere alla pagina superiore di INFORMAZIONI.
■PROFILE
■Dettagli di contatto.
Per richieste di informazioni sull'articolo, contattateci qui.