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:
|
Explicit alternativ
Offentlig sFolder som stränger
Offentlig sFilename () som stränger
Offentliga NFiles som heltal
UnderGetFileList ()
Dunkel varFileList som Variant
Dunkelt I som heltal
”Få arkivet från användaren”,
Med Application.FileDialog (msoFileDialogFolderPicker)
. Show
Om .SelectedItems.Count = 0 går ut därefter suben ”den avbrutna användaren”,
sFolder = .SelectedItems (1)
Avsluta med
”Få en lista sparar allra i detta arkiv.”,
”Notera att detta inte är recursive…, även om den kunde vara…”,
varFileList = GetFileNames (sFolder, ”*.txt”)
Om inte IsArray (varFileList) därefter
Ingen MsgBox ”sparar funnit. ” vbInformation
Gå ut suben
Avsluta om
”Ställa in filenamesamlingen som baseras på det utvalda arkivet”,
NFiles = UBound (varFileList) + 1
ReDim sFilename (1 till NFiles)
”Kopiera filenamesna in i en strängasamling för bruk någon annanstans”,
För I = 0 till UBound (varFileList)
sFilename (I + 1) = CStr (varFileList (I))
Därefter i
OutputFilenames2XL
ImportFileContent
Avsluta suben
Privat fungera GetFileNames (ByVal sPath som stränger, valfri sFilter som stränger) som Variant
” Går den tillbaka - dimensionell samling med filenames”,
” Går annars falskt tillbaka”,
Dunkelt f som stränger
Dunkelt I som heltal
Dunkla FileList () som stränger
Om sFilter = sFilter för "" därefter = ”*.*”,
Välj fallet Right$ (sPath, 1)
Case ”\”, ”/”,
sPath = Left$ (sPath, Len (sPath) - 1)
Avsluta valt
ReDim sylt FileList (0)
f = Dir$ (sPath & ”\” & sFilter)
Gör stunder Len (f) > 0
ReDim sylt FileList (I) som stränger
FileList (I) = f
i = I + 1
f = Dir$ ()
Kretsa
Om FileList (0) <> tömmer därefter
GetFileNames = FileList
Annars
GetFileNames = falskt
Avsluta om
Avsluta fungerar
Privat Sub OutputFilenames2XL ()
Dunkel iBaseRow som heltalet, iBaseCol som heltal
Dunkel shTarget som arbetssedeln
Dunkelt I som heltal
Fastställd shTarget = Application.ActiveSheet
iBaseRow = spänner (”BaseCell”). Ro
iBaseColen = spänner (”BaseCell”). Kolonn
”Befolka titelraden sätter in”,
shTarget.Range (”ImportDate”). Värdera = nu
shTarget.Range (”FolderPath”). Värdera = sFolder
shTarget.Range (”NFiles”) = NFiles
”Befolka filenamekolonnen av bordlägga”,
För I = 1 till NFiles
shTarget.Cells (iBaseRow + I - 1, iBaseCol). Värdera = sFilename (I)
Därefter i
”Sätt formeln för att parse transaktionsID in i den första kolonnen”,
shTarget.Range (celler (iBaseRow, iBaseCol - 1), celler (iBaseRow + NFiles - 1, iBaseCol - 1)).FormulaR1C1 = ”=MID (R [0] C [1], LEN (R [0] C [1]) - 14.8)”,
Avsluta suben
Privata underImportFileContent ()
Dunkelt I som heltal, j som heltal
Dunkel shTarget som arbetssedeln
Dunkel iBaseRow som heltalet, iBaseCol som heltal
Dunkel shSource som arbetssedeln
Dunkel sActiveFilename som stränger
Dunkel sFullPath som stränger
Dunkel iRowCount som heltal
Dunkel iTargetColumn som heltal
Dunkel rSourceRange som spänner
”Lagret baserar data för uppsätta som målarbetssedeln som vi bygger”,
Fastställd shTarget = Application.ActiveSheet
iBaseRow = spänner (”BaseCell”). Ro
iBaseColen = spänner (”BaseCell”). Kolonn
”Bearbeta nu varje filename som importeras precis till arbetssedeln”,
Application.ScreenUpdating = falskt
Application.WindowState = xlMinimized
Application.Calculation = xlCalculationManual
Application.Visible = falskt
”Ställa in framsteg bommar för”,
Ladda frmProgress
frmProgress.ProgressBar.Max = NFiles
frmProgress.ProgressBar.Value = 0
frmProgress.Show
För I = 1 till NFiles
sActiveFilename = sFilename (I)
sFullPath = sFolder & ”\” & sActiveFilename
”Importen avgränsad text sparar”,
Workbooks.OpenText-Filename: =sFullPath _,
Beskärning: =437 StartRow: =1 DataType: =xlDelimited TextQualifier: = _,
xlDoubleQuote ConsecutiveDelimiter: =False flik: =True semikolon: =False _,
Komma: =False utrymme: =False annan: =False FieldInfo: =Array (1, 1), _,
TrailingMinusNumbers: =True
”Lagra den kända täcka och formatera/tillfoga krävda formler”,
Fastställd shSource = Application.ActiveSheet
iRowCount = Application.WorksheetFunction.CountA (kolonner (”A: ”))
shSource.Range (celler (1, 2), celler (iRowCount, 2)).FormulaR1C1 = ”=FIND ("": "" R [0] C [- 1])”,
shSource.Range (celler (1, 3), celler (iRowCount, 3)).FormulaR1C1 = ”LÄMNAD, =IF ((R [0] C [- 2], 7) = "" kommentar"", 61, VÄRDERAR (MITT- (R [0] C [- 2], 2, R [0] C [- 1] - 2))),”,
shSource.Range (celler (1, 4), celler (iRowCount, 4)).FormulaR1C1 = ”=RIGHT (R [0] C [- 3], LEN (R [0] C [- 3]) - R [0] C [- 2] - 1)”,
”Se till att cellerna uppdateras med strömdatan (som behövs endast, om beräkningen är fastställd till handboken)”,
shSource.Calculate
”Kopiera nu de resulterande parsed datan in i de korrekta cellerna på uppsätta som målarbetssedeln”,
För j = 1 till iRowCount
iTargetColumn = CInt (shSource.Cells (j, 3). Värdera),
Fastställd rSourceRange = shSource.Cells (j, 4)
shTarget.Cells (iBaseRow + I - 1, iBaseCol + iTargetColumn). Värdera = rSourceRange.Value
Nästa j
”Slutligen tätt källarbetsboken sparar, sedan vi avslutas med den”,
Arbetsböcker (sActiveFilename). Nära SaveChanges: =False
frmProgress.ProgressBar.Value = I
frmProgress.Repaint
Därefter i
shTarget.Columns (”C: BK”) .EntireColumn.AutoFit
frmProgress.Hide
Application.Calculation = xlCalculationAutomatic
Application.Calculate
Application.ScreenUpdating = True
Application.WindowState = xlMaximized
Application.Visible = True
Avsluta suben
|