1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
|
Opción explícita
sFolder público como secuencia
sFilename público () como secuencia
NFiles público como número entero
GetFileList secundario ()
varFileList dévil como variante
Amortiguar i como número entero
“Conseguir el directorio del usuario”
Con Application.FileDialog (msoFileDialogFolderPicker)
. Demostración
Si .SelectedItems.Count = 0 entonces salen el submarino “usuario cancelado”
sFolder = .SelectedItems (1)
Extremo con
“Conseguir una lista de todos los archivos en este directorio.”
“Observar que esto no es recurrente… aunque podría ser…”
varFileList = GetFileNames (sFolder, “*.txt”)
Si no IsArray (varFileList) entonces
MsgBox “ningunos archivos encontrados. ”, vbInformation
Salir el submarino
Terminar si
“Fijar el arsenal del nombre de fichero basado en el directorio seleccionado”
NFiles = UBound (varFileList) + 1
sFilename de ReDim (1 a NFiles)
“Copiar los nombres de fichero en un arsenal de la secuencia para el uso a otra parte”
Para i = 0 a UBound (varFileList)
sFilename (i + 1) = CStr (varFileList (i))
Después i
OutputFilenames2XL
ImportFileContent
Submarino del extremo
Función privada GetFileNames (sPath de ByVal como secuencia, sFilter opcional como secuencia) como variante
“ Vuelve un arsenal unidimensional con nombres de fichero”
“ Vuelve de otra manera falso”
F dévil como secuencia
Amortiguar i como número entero
Amortiguar FileList () como secuencia
Si sFilter = sFilter del "" entonces = “*.*”
Seleccionar el caso Right$ (sPath, 1)
Encajonar “\”, “/”
sPath = Left$ (sPath, Len (sPath) - 1)
Extremo selecto
Coto FileList (0) de ReDim
f = Dir$ (sPath y “\” y sFilter)
Hacer mientras que Len (f) > 0
Coto FileList (i) de ReDim como secuencia
FileList (i) = f
i = i + 1
f = Dir$ ()
Lazo
Si FileList (0) <> entonces vacia
GetFileNames = FileList
GetFileNames = falso
Terminar si
Terminar la función
Submarino privado OutputFilenames2XL ()
iBaseRow dévil como número entero, iBaseCol como número entero
shTarget dévil como hoja de trabajo
Amortiguar i como número entero
Fijar el shTarget = Application.ActiveSheet
iBaseRow = gama (“BaseCell”). Fila
iBaseCol = gama (“BaseCell”). Columna
“Poblar los campos de jefe”
shTarget.Range (“ImportDate”). Valor = ahora
shTarget.Range (“FolderPath”). Valor = sFolder
shTarget.Range (“NFiles”) = NFiles
“Poblar la columna del nombre de fichero de la tabla”
Para i = 1 a NFiles
shTarget.Cells (iBaseRow + i - 1, iBaseCol). Valor = sFilename (i)
Después i
“Poner la fórmula para analizar la identificación de transacción en la primera columna”
shTarget.Range (células (iBaseRow, iBaseCol - 1), células (iBaseRow + NFiles - 1, iBaseCol - 1)) .FormulaR1C1 = “=MID (R [0] C [1], LEN (R [0] C [1]) - 14.8)”
Submarino del extremo
ImportFileContent secundario privado ()
Amortiguar i como número entero, j como número entero
Amortiguar el shTarget como hoja de trabajo
Amortiguar el iBaseRow como número entero, iBaseCol como número entero
Amortiguar el shSource como hoja de trabajo
Amortiguar el sActiveFilename como secuencia
Amortiguar el sFullPath como secuencia
Amortiguar el iRowCount como número entero
Amortiguar el iTargetColumn como número entero
Amortiguar el rSourceRange como gama
“Datos bajos del almacén para la hoja de trabajo de la blanco que estamos construyendo”
Fijar el shTarget = Application.ActiveSheet
iBaseRow = gama (“BaseCell”). Fila
iBaseCol = gama (“BaseCell”). Columna
“Ahora procesar cada nombre de fichero apenas importado a la hoja de trabajo”
Application.ScreenUpdating = falso
Application.WindowState = xlMinimized
Application.Calculation = xlCalculationManual
Application.Visible = falso
“Barra del progreso de la disposición”
frmProgress de la carga
frmProgress.ProgressBar.Max = NFiles
frmProgress.ProgressBar.Value = 0
frmProgress.Show
Para i = 1 a NFiles
sActiveFilename = sFilename (i)
sFullPath = sFolder y “\” y sActiveFilename
“Archivo de texto delimitado importación”
Nombre de fichero de Workbooks.OpenText: =sFullPath, _
Origen: =437, StartRow: =1, DataType: =xlDelimited, TextQualifier: = _
xlDoubleQuote, ConsecutiveDelimiter: =False, lengüeta: =True, punto y coma: =False, _
Coma: =False, espacio: =False, otro: =False, FieldInfo: =Array (1, 1), _
TrailingMinusNumbers: =True
“Almacenar el nombre de la hoja y el formato/agrega las fórmulas requeridas”
Fijar el shSource = Application.ActiveSheet
iRowCount = Application.WorksheetFunction.CountA (columnas (“A: ”))
shSource.Range (células (1, 2), células (iRowCount, 2)) .FormulaR1C1 = “=FIND ("": "", R [0] C [- 1])”
shSource.Range (células (1, 3), células (iRowCount, 3)) .FormulaR1C1 = “=IF (DEJADO (R [0] C [- 2], "" del comentario del "" 7)=, 61, VALOR (MEDIADOS DE (R [0] C [- 2], 2, R [0] C [- 1] - 2)))”
shSource.Range (células (1, 4), células (iRowCount, 4)) .FormulaR1C1 = “=RIGHT (R [0] C [- 3], LEN (R [0] C [- 3]) - R [0] C [- 2] - 1)”
“Cerciorarse de que las células estén puestas al día con los datos actuales (necesarios solamente si el cálculo se fija al manual)”
shSource.Calculate
“Ahora copian los datos analizados resultantes en las células correctas en la hoja de trabajo de la blanco”
Para j = 1 al iRowCount
iTargetColumn = CInt (shSource.Cells (j, 3).Value)
Fijar el rSourceRange = shSource.Cells (j, 4)
shTarget.Cells (iBaseRow + i - 1, iBaseCol + iTargetColumn). Valor = rSourceRange.Value
J siguiente
“Finalmente cierre el archivo del libro de trabajo de la fuente puesto que nos acaban con él”
Libros de trabajo (sActiveFilename). SaveChanges cercano: =False
frmProgress.ProgressBar.Value = i
frmProgress.Repaint
Después i
shTarget.Columns (“C: BK”) .EntireColumn.AutoFit
frmProgress.Hide
Application.Calculation = xlCalculationAutomatic
Application.Calculate
Application.ScreenUpdating = verdad
Application.WindowState = xlMaximized
Application.Visible = verdad
Submarino del extremo
|