吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1479|回复: 33
收起左侧

[求助] 将数控文件以文本文件的形式打开并导入到excel中

[复制链接]
cherrycdh 发表于 2021-12-31 11:08
大家好,请教个问题,我这边有一些数控程序的文件,然后需要将数控文件以文本文件的形式打开并导入到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
 楼主| 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程序不一样

我也不知道,是同事发给我的,然后他们要导入到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)

[Visual Basic] 纯文本查看 复制代码
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吾爱币 +1 热心值 +1 收起 理由
cherrycdh + 1 + 1 谢谢@Thanks!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 16:44

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表