Domanda

Ho bisogno di salvare diversi file XLSM come CSV per importarli in altri programmi (come r ecc.). Bene, ho scritto le necessarie routine di importazione in tutti gli altri programmi e funzionano molto bene con il caso 1:

Caso 1: salvataggio manuale di un XLSM come CSV Se utilizzo questa opzione e salva manualmente ciascun file come CSV e fare clic su Sì su tutti i prompt, ottengo un file .csv che assomiglia molto simile a un normale file Excel quando è stato inaugurato in Excel. È una vista di colonna standard e nulla separato con la virgola ecc. (Forse lo è, ma non sembra così ..)

Caso 2: Salvataggio di un XLSM da VBA come CSV Bene, ottengo un file completamente diverso quando è stato aperto di nuovo in Excel. Questo sembra un file CSV "reale" con tutti i valori che sono separati da virgola.

Le mie domande sono: 1. Perché c'è qualche differenza? 2. Come posso registrare programmaticamente caso 2 da VBA? O è impossibile?

Se 2 è impossibile da riscrivere le mie routine del codice di importazione per gestire il file CSV "normale" ... non molto difficile ma ancora molto lavoro e mi sto davvero chiedendo perché ci sia anche una differenza. < / P >.

È stato utile?

Soluzione

Q1: Non penso che ci sia una differenza, almeno non in un esempio ho tirato insieme. Q2: Prova questo:

Ho 3 Esempio di file XLSM in C:\stack\folder1 come nella foto di seguito:

Start2

Ogni file ha una singola scheda tecnica, che si trasformerà in CSVS:

Start

Sono sicuro che la tua routine è molto più complicata, ma per testare l'uscita CSV, sto per andare in loop attraverso i file e salvare ciascuno come xlCSV:

Option Explicit
Sub TestCSVOutput()

Dim DataBook As Workbook
Dim DataSheet As Worksheet
Dim FilePaths(3) As String
Dim FileIdx As Long

'set up file paths for test
FilePaths(1) = "C:\stack\folder1\test_file_01.xlsm"
FilePaths(2) = "C:\stack\folder1\test_file_02.xlsm"
FilePaths(3) = "C:\stack\folder1\test_file_03.xlsm"

'loop through array and save each file as a CSV
Application.DisplayAlerts = False
For FileIdx = 1 To UBound(FilePaths)

    Set DataBook = Workbooks.Open(FilePaths(FileIdx))
    Set DataSheet = DataBook.ActiveSheet
    DataBook.SaveAs FileFormat:=xlCSV '<~~ the save step
    DataBook.Close

Next FileIdx
Application.DisplayAlerts = True

End Sub
.

Una volta completato lo script, finisco con tre file CSV:

END2

Ogni file è virgola delimitato quando è stato aperto in un editor di testo:

Inserisci Descrizione dell'immagine qui

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top