将数控文件以文本文件的形式打开并导入到excel中
大家好,请教个问题,我这边有一些数控程序的文件,然后需要将数控文件以文本文件的形式打开并导入到excel的每一行中该怎么办呢?因为数控文件有点乱,具体如下?
一个数控文件是这样的
%123445(654263)(52341)(256478)(653214)(524123)()()124124434325545454345后面还有很多数据
一个数控文件呢是这样的
%6544122
(353535)
(432523536)
(7567575477)
(654675477)
6565121454
然后呢我需要的是这样的,比如第一个文件中
%123445(654263)(52341)(256478)(653214)(524123)()()这几个数据,%12345是一个单元格,后面呢一个括号就是一个单元格内容,相同第二个数控文件也是这样
我想要的功能是
点击按钮,出来浏览文件功能,打开后跳出是否导入,点击确认后将需要的从%到最后的)数据依次导入到单元格中比如从A7以上有数据,那就是从A8打开导入,以此往下点击导入顺延往下
我一开始打算使用以下代码操作,但是发现第一个如果使用文本文件的形式的话,那就是文件类型不对,数控文件的文件类型就是o25这样,么有后缀的,我只能使用所有文件的方式,但是使用所有文件的方式吧,就没有使用后续的
Private Sub CommandButton1_Click()
Dim d, i, sr$, temp
Dim filter As String
Dim fileToOpen
filter = "Text Files(*.*),*.txt "
fileToOpen = Application.GetOpenFilename(filefilter:=filter, FilterIndex:=2, Title:="请选择文件")
Set d = CreateObject("scripting.dictionary") '引用字典
With Sheets("sheet2")
.UsedRange.ClearContents '清除原有的数据
i = 1
Open fileToOpen For Input As #1 '使用open语句输入
Do While Not EOF(1) '运行到文件的结尾结束
Line Input #1, sr '按行读取数据
If Len(sr) Then
d(i) = Split(sr, "_") '以_分割字符串
i = i + 1
End If
Loop
Close #1 '关闭文本文件
temp = Application.Transpose(d.Items) '转置字典的项
.Range("a1").Resize(d.Count, UBound(temp)) = Application.Transpose(temp) '将数组写入单元格
End With
Set d = Nothing
End Sub filter = "Text Files(*.*),*.txt "
把这里改掉
filter = "Text Files(*.*),*" 你这是啥数控文件,咋和我认识CNC程序不一样 lixiaoqiang 发表于 2021-12-31 11:25
filter = "Text Files(*.*),*.txt "
把这里改掉
filter = "Text Files(*.*),*"
恩,我这里的后来发现有问题,已经改掉了,现在就是我怎么这样按照首字是%,最后一个是)的形式将他们导入到excel然后在分别放入到相应的单元格中 52896009 发表于 2021-12-31 11:25
你这是啥数控文件,咋和我认识CNC程序不一样
:rggrg我也不知道,是同事发给我的,然后他们要导入到excel中,文件非常多,如果使用复制粘贴的形式不现实,所以现在就是要么使用文件导入的方式导入 本帖最后由 lixiaoqiang 于 2021-12-31 11:39 编辑
cherrycdh 发表于 2021-12-31 11:31
恩,我这里的后来发现有问题,已经改掉了,现在就是我怎么这样按照首字是%,最后一个是)的形式将他们导 ...
你随便发一个数控文件,应该使用EXCEL—VBA开发的吧?还有什么问题? lixiaoqiang 发表于 2021-12-31 11:38
你随便发一个数控文件,应该使用EXCEL—VBA开发的吧?还有什么问题?
我这里试了一下,不能上传,那个文件是没有后缀的,内容如下:
%
O0092(9544.025.909)(2015-B)
(586)(2021-12-29)
(A40)(2021-A)()
()()
M95
/M98P0002
M96
M90092
M500
G40G00T0G99
M11
G4U0.2
G300X0.0Z49.0T0606
G150Z0.0
M98P1
G4U0.2
M10
G4U0.2
G0W-1.X138.0
M3S1000P1
M01
N1
G99T0505M03S2300P1
G0X36.Z0.
G1X0.F0.1
G0X29.Z-0.5
G1Z7.95
G0X29.Z-0.5
X23.
G1Z0.F0.13
X24.85Z1.0
Z8.
X33.
G1Z16.
X33.5
G0Z-1.
X138.0
M01
N2
T1414M03S2300P1
G0Z-3.
M76
X0.
G1Z29.0F0.1
G0Z-3.
G0X138.
M77
M01
N3
G18
T0707M03S1500P1
G0X28.Z-2.
G92X24.5Z7.9F1.5
X24.
X23.5
X23.1
X23.
G0X138.0
M01
N4
G19
T2222M03S2300P1
G0X0.Z-1.
Y11.43
G1Z0.0F0.13
G02Y10.43Z1.R1.
G1Z12.F0.15
G0Y9.5Z-3.
X138.
W-20.0
G18
M01
N5
T2727M3S1800P1
G0X36.0Z-1.0
Z7.8
G1X23.2F0.08
Z9.0
X23.0
Z7.6
G0X26.0
Z-1.0
G0X138.0
M01
N6
G99T0505M03S2300P1
G0X33.5Z-1.
Z8.03
G1X27.0F0.12
G0Z7.0
G1X23.0
G0X25.
Z1.2
G1X22.5Z0.F0.12
X19.
G0Z-1.
X138.0
M05
M01
N7
G99T0909M3S0P1
G0X38.Z-3.
Z26.9
M510
M56
M520
M20
G04X0.5
M3S2000P1
M53
G1X17.F0.07
M42
M530
M57
M05
G0W-30.
G0X100.0
T0606
G0X0.0
M97
M540
M30
%
你可以把它保存在txt文本文件中,然后不加后缀就可以了 cherrycdh 发表于 2021-12-31 11:49
我这里试了一下,不能上传,那个文件是没有后缀的,内容如下:
%
O0092(9544.025.909)(2015-B)
Private Sub CommandButton1_Click()
Dim d
Dim i, sr$, temp
Dim filter As String
Dim fileToOpen
filter = "Text Files(*.*),* "
fileToOpen = Application.GetOpenFilename(filefilter:=filter, FilterIndex:=2, Title:="请选择文件")
Set d = CreateObject("scripting.dictionary") '引用字典
With Sheets("sheet1")
.UsedRange.ClearContents '清除原有的数据
i = 1
Open fileToOpen For Input As #1 '使用open语句输入
Do While Not EOF(1) '运行到文件的结尾结束
Line Input #1, sr '按行读取数据
ssr = ssr & sr
i = i + 1
If i = 50 Then Exit Do
Loop
Close #1 '关闭文本文件
i = 2
For j = 1 To Len(ssr)
If Mid(ssr, j, 1) = "(" Then
If i = 2 Then
d(1) = Mid(ssr, 1, j - 1)
End If
Dim aaa As String
aaa = Mid(ssr, j, InStr(j, ssr, ")") - j + 1)
d(i) = aaa '以_分割字符串
i = i + 1
End If
Next
For i = 1 To d.Count + 1
.Cells(1, i) = d(i)
Next
End With
Set d = Nothing
End Sub