Приносим извинения за то, что вы новичок. У меня есть файлы TXT, которые сгенерированы в следующем стиле. Мне нужно иметь возможность конвертировать их в SpreadSheet, которые могут быть импортированы в базу данных.VBA Импорт текстового файла в Excel и Parse
": var1:"
"NOM (LSL, USL) = 0.044 (0.035, 0.051)"
"Subgroup" 1 2 3
"Status" "" "" ""
"X" 0.045 0.047 0.048
"R" 0.009 0.008 0.003
"s" 0.003 0.003 0.001
"S1" 0.050 0.051 0.049
"S2" 0.046 0.047 0.047
"S3" 0.048 0.049 0.048
"S4" 0.047 0.048 0.046
"S5" 0.042 0.044 0.047
"S6" 0.042 0.044 0.048
"S7" 0.041 0.043 0.048
"S8" 0.044 0.048 0.049
"comments" " " " " " "
"Inspector" "tb" "tb" "tb"
"Machine" "shot1" "shot2" "shot3"
"ID #" " " " " " "
"Work Order" " " " " " "
"Samples" " " " " " " "
"Sample" " " " " " " "
"Sample" " " " " " " "
"Sample" " " " " " " "
"Time" "23:05:04" "23:30:33" "02:15:40"
"Date" "03/26/2015" "03/26/2015" "03/27/2015"
": var2:"
"NOM (LSL, USL) = 0.023 (0.020, 0.026)"
"Subgroup" 1 2 3
"Status" "" "" ""
"X" 0.022 0.021 0.024
"R" 0.003 0.002 0.003
"s" 0.001 0.001 0.001
"S1" 0.022 0.022 0.023
"S2" 0.023 0.021 0.022
"S3" 0.022 0.021 0.023
"S4" 0.021 0.021 0.025
"S5" 0.022 0.022 0.024
"S6" 0.023 0.020 0.022
"S7" 0.020 0.022 0.024
"S8" 0.020 0.020 0.025
"comments" " " " " " "
"Inspector" "tb" "tb" "tb"
"Machine" "shot1" "shot2" "shot3"
"ID #" " " " " " "
"Work Order" " " " " " "
"Samples" " " " " " "
"Sample" " " " " " "
"Sample" " " " " " "
"Sample" " " " " " "
"Time" "23:05:04" "23:30:33" "02:15:40"
"Date" "03/26/2015" "03/26/2015" "03/27/2015"
": var3:"
"NOM (LSL, USL) = 0.023 (0.020, 0.026)"
"Subgroup" 1 2 3
"Status" "" "" ""
"X" 0.045 0.044 0.046
"R" 0.004 0.005 0.007
"s" 0.001 0.002 0.003
"S1" 0.046 0.046 0.045
"S2" 0.045 0.041 0.046
"S3" 0.046 0.046 0.048
"S4" 0.047 0.046 0.042
"S5" 0.044 0.045 0.048
"S6" 0.046 0.045 0.047
"S7" 0.043 0.042 0.047
"S8" 0.045 0.042 0.041
"comments" " " " " " "
"Inspector" "tb" "tb" "tb"
"Machine" "shot1" "shot2" "shot3"
"ID #" " " " " " "
"Work Order" " " " " " "
"Samples" " " " " " "
"Sample" " " " " " "
"Sample" " " " " " "
"Sample" " " " " " "
"Time" "23:05:04" "23:30:33" "02:15:40"
"Date" "03/26/2015" "03/26/2015" "03/27/2015"
Это всего лишь небольшой образец TXT, может быть больше S # и будет больше Var's. Хороший фрагмент данных можно отбросить, мне нужно всего лишь несколько вещей и отформатировать его. > Импортно> PARSE-> FORMAT
: var1: : var2: : var3:
NOM 0.044 0.023 0.023
LSL 0.035 0.02 0.02
USL 0.044 0.026 0.026
S1 0.05 0.022 0.046
S2 0.046 0.023 0.045
S3 0.048 0.022 0.046
S4 0.047 0.021 0.047
S5 0.042 0.022 0.044
S6 0.042 0.023 0.046
S7 0.041 0.02 0.043
S8 0.044 0.02 0.045
S1 0.051 0.022 0.046
S2 0.047 0.021 0.041
S3 0.049 0.021 0.046
S4 0.048 0.021 0.046
S5 0.044 0.022 0.045
S6 0.044 0.02 0.045
S7 0.043 0.022 0.042
S8 0.048 0.02 0.042
S1 0.049 0.023 0.045
S2 0.047 0.022 0.046
S3 0.048 0.023 0.048
S4 0.046 0.025 0.042
S5 0.047 0.024 0.048
S6 0.048 0.022 0.047
S7 0.048 0.024 0.047
S8 0.049 0.025 0.041
Я знаю, как выполнить некоторые из этих вещей, но я не знаю, как объединить их в единый Sub
, если это возможно. Для меня, стоящего, я должен заняться этим чем-то вроде этого.
Sub Import()
With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\Temp\HospiraWalls2.TXT" _
, Destination:=Range("$A$1"))
.Name = "HospiraWalls2"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 437
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
ActiveWindow.SmallScroll Down:=9
End Sub
разбор: Это я не знаю,
Sub OneColumn()
Dim vIn As Variant
Dim vOut As Variant
Dim i As Long
Dim j As Long
Dim ub1 As Long
Dim ub2 As Long
vIn = Application.Transpose(Range("B1").CurrentRegion)
ub1 = UBound(vIn, 1)
ub2 = UBound(vIn, 2)
ReDim vOut(1 To ub1 * ub2, 1 To 1)
For i = 1 To ub1
For j = 1 To ub2
vOut(j + (ub2 * (i - 1)), 1) = vIn(i, j)
Next j
Next i
Range("A1:A" & (ub1 * ub2)) = vOut
End Sub
Что вы получаете при запуске 'Import()' Sub? Моя мысль заключалась бы в том, чтобы открыть его как текстовый файл и проанализировать его самостоятельно, поскольку форматирование настолько чувствительно к контексту. – FreeMan
Я знаю, что скрипты, как у меня, теперь не сработают. Я ищу способ сделать это в одном скрипте, это то, что нужно делать 6-8 раз в неделю и занимает много времени, чтобы делать это на индивидуальной основе. –
Итак, 'Imort()' полностью не проверен? Имеет смысл: '.QueryTables.Add()' предназначен для получения данных из базы данных, а не текстового файла, как случайным образом структурированного ... – FreeMan