cherrycdh 发表于 2021-12-31 11:08

将数控文件以文本文件的形式打开并导入到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

lixiaoqiang 发表于 2021-12-31 11:25

filter = "Text Files(*.*),*.txt "
把这里改掉
filter = "Text Files(*.*),*"

52896009 发表于 2021-12-31 11:25

你这是啥数控文件,咋和我认识CNC程序不一样

cherrycdh 发表于 2021-12-31 11:31

lixiaoqiang 发表于 2021-12-31 11:25
filter = "Text Files(*.*),*.txt "
把这里改掉
filter = "Text Files(*.*),*"

恩,我这里的后来发现有问题,已经改掉了,现在就是我怎么这样按照首字是%,最后一个是)的形式将他们导入到excel然后在分别放入到相应的单元格中

cherrycdh 发表于 2021-12-31 11:32

52896009 发表于 2021-12-31 11:25
你这是啥数控文件,咋和我认识CNC程序不一样

:rggrg我也不知道,是同事发给我的,然后他们要导入到excel中,文件非常多,如果使用复制粘贴的形式不现实,所以现在就是要么使用文件导入的方式导入

lixiaoqiang 发表于 2021-12-31 11:38

本帖最后由 lixiaoqiang 于 2021-12-31 11:39 编辑

cherrycdh 发表于 2021-12-31 11:31
恩,我这里的后来发现有问题,已经改掉了,现在就是我怎么这样按照首字是%,最后一个是)的形式将他们导 ...
你随便发一个数控文件,应该使用EXCEL—VBA开发的吧?还有什么问题?

cherrycdh 发表于 2021-12-31 11:49

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文本文件中,然后不加后缀就可以了

cmbslgn 发表于 2021-12-31 12:18

daisypojie 发表于 2021-12-31 12:31

lixiaoqiang 发表于 2021-12-31 12:49

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


页: [1] 2 3 4
查看完整版本: 将数控文件以文本文件的形式打开并导入到excel中