View Full Version : text file
oleg_v
12-24-2009, 11:30 PM
hi
i need away that will give me the way to pull data from specified place
in txt file to A1 cell in excel sheet3
thanks
Oleg
Tinbendr
12-25-2009, 07:00 AM
Probably. We need lots more info about the text file.
Can you provide a sample?
oleg_v
12-26-2009, 10:16 PM
hi
here:
--------------------------------------------------------------------------------
15-דצמבר-2009 13:44 8H-A51190-10 Page 2
--------------------------------------------------------------------------------
(mm) ACTUAL NOMINAL LO-TOL HI-TOL DEVIATION GRAPHIC ERROR
--------------------------------------------------------------------------------
Length-X 129.972 130.000 -0.500 +0.500 -0.028 ---*---
--------------------------------------------------------------------------------
DIM-1
Point:PNT005
Y-axis -30.155 -30.000 -0.200 +0.200 -0.155 -*-+---
--------------------------------------------------------------------------------
DIM-2
Point:PNT006
X-axis 30.106 29.750 -0.200 +0.200 0.356 ---+--> 0.156
--------------------------------------------------------------------------------
DIM-3
Point:PNT006--Point:PNT007
Length-X 60.275 59.500 -0.300 +0.300 0.775 ---+--> 0.475
--------------------------------------------------------------------------------
DIM-4
Plane:PLANE001
X-axis -39.936 -40.000 -0.100 +0.100 0.064 ---+-*-
--------------------------------------------------------------------------------
DIM-5
Plane:PLANE001--Plane:PLANE002
Length-X 80.053 80.000 -0.100 +0.100 0.053 ---+-*-
-------------------------------------------------------------------------
i need to copy the number in the "actual" column and paste it each number in the different cell in excel sheet
Tnx
mikerickson
12-27-2009, 11:19 AM
Did my responce at
http://www.mrexcel.com/forum/showthread.php?t=437767
work for you?
hardlife
12-27-2009, 02:06 PM
hi
or You can try this
Sub import_txt_file()
' Get the file pathname
Set oXL = CreateObject("Excel.Application")
'f_name = oXL.GetOpenFilename("All Files (*.*),*.*", , "Select file", False)
f_name = oXL.GetOpenFilename("Text Files (*.txt),*.txt", , "Select file", False)
If f_name = "False" Then
'user cancelled out of dialog box
Set oXL = Nothing
Exit Sub
End If
'store file pathname in the file_pathname variable
'MsgBox f_name
'ret = ActiveDocument.GetVariable("file_pathname").SetContent(f_name, False)
Set oXL = Nothing
Workbooks.OpenText Filename:= _
f_name, Origin _
:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=True, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1))
Cells.Select
Cells.EntireColumn.AutoFit
Range("B28").Select
End Sub
HTH :hi:
lucas
12-27-2009, 05:05 PM
oleg_v, it is rude to post in other forums without providing a link.
Why would you let people who are offering to help you for free work on something that might already be resolved?
Please read this before posting here again (http://www.excelguru.ca/node/7).
oleg_v
12-28-2009, 04:10 AM
Sorry
i will correct my self from know on
Oleg,
Might you please place a link in the other thread referencing this one?
Thank you,
Mark
oleg_v
12-28-2009, 05:24 AM
here you go
http://www.mrexcel.com/forum/showthread.php?p=2163385#post2163385
oleg_v
12-28-2009, 05:29 AM
Hi
i do not understated how to use this macro
it copies me the hole file
and i need each time different number
Hi Oleg,
As you mentioned not being sure how to implement mikerickson's or hardlife's code, I would suggest attaching an example text file and a copy of the workbook you have thus far.
Of course change any sensitive/private data in either, but ensure layout/parameters are same.
You can zip both into one zip file, and attach by first pressing the Go Advanced button underneath the Quick Reply box, then scroll down below the Reply box and press the Manage Attachments button.
Mark
oleg_v
12-28-2009, 06:49 AM
Hi
here is the data
i will repeat what i am tying to accomplish:
1) open the txt file
2) find "dim-1"
3) move 2 lines down and copy the number in the "actual" column
4) paste this number in the excel file sheet1 cell A1 (nut the hole file only the number)
I am very sorry for a lot of changes in my request this because i am building the procces.
i am sorry
Many thanks
Oleg
hardlife
12-29-2009, 01:20 AM
Hi Oleg, Your file extension for txt file was *.RES (tst.txt.RES)
me changed it to TXT file extension.
Macro is now in Module1 it is typical place for VBA code
see attachment, click on button find import file = tst.txt
have a nice day:hi:
oleg_v
12-29-2009, 01:24 AM
hi
thanks
can you please refer to the changes that i asked i my previos post
oleg_v
12-29-2009, 02:45 AM
hi
this attaches the hole data that in the file
can i attache only one number like i said in my post?
Many thanks
hardlife
12-29-2009, 07:27 AM
hi Oleg,
do You can create example in excel for this TXT file
with "desired result" manually, for me to understand?
me is wishing You to have a nice day :hi:
oleg_v
12-29-2009, 07:38 AM
Hi
i wrote in the excel file what you asked
If not to hard i want the macro to put the data in the same file and not
create a new one
thanks.
Did you have a Phone number for me to explain to you
exactly what i need
because i think i am not explaining my self very well.
Oleg
hardlife
12-29-2009, 10:52 AM
Hi Oleg You can try this :hi:
SWE321
12-29-2009, 12:31 PM
For getting text form textfiles I always use.
NameOfFile = Range("c6").Value
PlaceOfFile = Range("c5").Value
Filelocation = PlaceOfFile + "\" + NameOfFile
sText = ReadTextFileFetchDataMain(Filelocation)
Range("c10").Value = sText
oleg_v
12-29-2009, 12:50 PM
Hi Oleg You can try this :hi:
Hi
it works but
why always a new file created??
hardlife
12-29-2009, 05:51 PM
Hi Oleg
Good Night for now,
HTH :hi:
oleg_v
12-30-2009, 01:14 AM
Thank you
if it not to hard can you explain to how is your macro working line by line
this is great
oleg_v
12-30-2009, 01:27 AM
One more thing
if the data in text file is"0.000" the macro does not write
oleg_v
12-30-2009, 03:11 AM
hi
i started to work with the macro and found some erros .
Say can i exlpain to you my problem verbally by the PHONE
oleg_v
01-03-2010, 11:39 PM
Hi Oleg
Good Night for now,
HTH :hi:
Hi
I have a few problems with the macro
some numbers is in correct it seems that macro takes "----------"
and translate it to number because of that when i run the macro there are 2 similar numbers if i am not mistaken 0.5777
it just could not be
Thanks
Greetings,
In your example textfile, the data seems pretty consistent, excepting the additional rows / headings between 'pages'. If that is the case for your actual files, then I think this may work.
Option Explicit
Enum eFSO
ForReading = 1
End Enum
Sub exa()
Dim FSO As Object '<--- FileSystemObject
Dim fsoText As Object '<--- TextStream
Dim REX As Object '<--- RegExp
Dim rexMatches As Object '<--- MatchCollection
Dim strFullName As String
Dim strLine As String
Dim aryHorz As Variant
Dim aryTransposed As Variant
Dim i As Long
Dim bolExitNow As Boolean
'// Optional and change to suite; pick folder for dialog to start in. //
ChDir ThisWorkbook.Path
strFullName = Application.GetOpenFilename(FileFilter:="Text Files (*.txt),*.txt", _
Title:="Import From:", MultiSelect:=False)
'// If user did not pick a textfile, quit now. //
If strFullName = "False" Then Exit Sub
'// Set references to FSO, the textstream we open, and RegExp. //
Set FSO = CreateObject("Scripting.FileSystemObject")
Set fsoText = FSO.OpenTextFile(Filename:=strFullName, IOMode:=ForReading)
Set REX = CreateObject("VBScript.RegExp")
'// Initially size a dynamic array to two "rows" high, by one column. This way we //
'// can increase the size of the array as we gather records. We'll transpose it //
'// later. //
ReDim aryHorz(1 To 2, 0 To 0)
With REX
.Global = False
.IgnoreCase = False
'// Loop as long as we're not at the end of the textfile we're reading. //
Do While Not fsoText.AtEndOfStream
strLine = fsoText.ReadLine
'// Pattern to find "DIM-*" //
.Pattern = "^\bDIM-\d+\b"
'// If DIM found... //
If .Test(strLine) Then
'// In first loop, we reset base and array still is one 'column'. //
'// Loops therafter increase 'columns' to hold more records. //
ReDim Preserve aryHorz(1 To 2, 1 To UBound(aryHorz, 2) + 1)
'// ...set a reference to the returned match collection, which will //
'// contain only one match, and plunk that match into array. //
Set rexMatches = .Execute(strLine)
aryHorz(1, UBound(aryHorz, 2)) = CStr(rexMatches(0).Value)
'// Set/reset flag //
bolExitNow = False
'// Nest our loop, so that we can look for either a number (should exist//
'// according to example data), or the next DIM in case no number. //
Do While Not fsoText.AtEndOfStream _
And Not bolExitNow
strLine = fsoText.ReadLine
'// to find either (one or the other, not both) DIM-* or the first //
'// number in a line meeting conditions: i) must have a space in //
'// front, ii) may have a negative sign/hyphen, iii) word boundary, //
'// iv) 1+ digits, v) a decimal point, vi) 1+ digits, vii) trailing //
'// word boundary. //
.Pattern = "^\bDIM-\d+\b|\ \-?\b\d+\.\d+\b"
If .Test(strLine) Then
Set rexMatches = .Execute(strLine)
'// If after a few lines we run into another DIM-*, then we didn't//
'// find a number to go with the last one - so, we'll put an //
'// empty string in for the last number, increase the array //
'// size, and put this DIM-* in the next record. //
If rexMatches(0).Value Like "DIM-*" Then
aryHorz(2, UBound(aryHorz, 2)) = vbNullString
ReDim Preserve aryHorz(1 To 2, 1 To UBound(aryHorz, 2) + 1)
aryHorz(1, UBound(aryHorz, 2)) = CStr(rexMatches(0).Value)
'GoTo NoNumber
Else
'// Else we found a number, so plunk it in and get out of //
'// the inner loop. //
aryHorz(2, UBound(aryHorz, 2)) = _
CDbl(Replace(rexMatches(0).Value, Chr(32), vbNullString))
bolExitNow = True
End If
End If
NoNumber: Loop
End If
Loop
fsoText.Close
'// Size our transposed array based on size of aryHorz //
ReDim aryTransposed(1 To UBound(aryHorz, 2), 1 To 2)
'// Fill second array from first. //
For i = 1 To UBound(aryHorz, 2)
aryTransposed(i, 1) = aryHorz(1, i)
aryTransposed(i, 2) = aryHorz(2, i)
Next
End With
'// To go with your example wb. //
Range("A6:B" & Rows.Count).Clear
With Range("A6").Resize(UBound(aryTransposed), 2)
.Columns(1).NumberFormat = "@"
.Columns(2).NumberFormat = "0.000"
.Value = aryTransposed
End With
End Sub
Hope that helps,
Mark
hardlife
01-04-2010, 02:58 PM
Hi Oleg,
please try it now in my country is decimal separator ","
in Your country is probably decimal separator "."
this is probably now fixed.
Good Night for now, have a nice day, Pavel:hi:
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.