| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2211 人关注过本帖
标题:各位大神可以帮我看下,我的问题出在哪里吗?可以帮我修改下吗感谢。
只看楼主 加入收藏
zxh48911805
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2022-7-9
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:27 
各位大神可以帮我看下,我的问题出在哪里吗?可以帮我修改下吗感谢。
原始数据.zip (50.03 KB)
   以前是用VBA做的,现在想用VB6。只能输出开头的部分,各位大神可以帮我看下,我的问题出在哪里吗?
搜索更多相关主题的帖子: 输出 VBA VB6 修改 
2023-01-16 10:55
阳光上的桥
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:38
帖 子:129
专家分:772
注 册:2023-1-12
收藏
得分:0 
VB6里面不要使用无头的Cells(1,42)访问单元格,至少应该xlsheet.Cells(1,42,应该考虑使用arr(1,42)才是最佳,前提是A1非空才正确。

另外,VBA.Format也不对吧。

强烈建立Option Explicit,这样这些语句就会编译报错,不会导致无法理解的逻辑问题。

程序代码:
        oExcel.Workbooks.Open File_Selected    '打开文件
        nm = Split(File_Selected, "\")(UBound(Split(File_Selected, "\")))    '获取工作簿名称
        Set xlBook = oExcel.Workbooks(nm)
        Set xlsheet = xlBook.Worksheets("数据")    '表名注意切换#######
        arr = xlsheet.UsedRange    '获取到数组
        a = UBound(arr)    '获取数量
        Form_Activate

     Open "D:\原始资料\" & Cells(1, 42) & "-CJ-" & myDate & ".txt" For Output As #1
    Text1.Text = "D:\原始资料\CS-1-WY-" & VBA.Format(Now(), "yyyymmdd") & ".dat,输出完成"
     Print #1, Cells(1, 1).Value & " "
2023-01-16 11:43
zxh48911805
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2022-7-9
收藏
得分:0 
回复 2楼 阳光上的桥
我修改过也不行,可以帮我改下嘛
2023-01-16 11:46
zxh48911805
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2022-7-9
收藏
得分:0 
回复 3楼 zxh48911805
代码我已修改了还是只能出来一点



Open "D:\原始资料\" & arr(1, 42) & "-CJ-" & myDate & ".txt" For Output As #1
    Text1.Text = "D:\原始资料\CS-1-WY-" & VBA.Format(Now(), "yyyymmdd") & ".dat,输出完成"
     Print #1, arr(1, 1) & " "
     If arr(2, 2) < 0 Then
      Print #1, arr(2, 1) & VBA.Format(arr(2, 2), "00000000") & " "
     Else
      Print #1, arr(2, 1) & "+" & VBA.Format(arr(2, 2), "00000000") & " "
     End If
   For b = 1 To C
     If arr(b * 3, 2) < 0 Then
      Print #1, arr(b * 3, 1) & VBA.Format(arr(b * 3, 2), "00000000") & " " & arr(b * 3, 3) & VBA.Format(arr(b * 3, 4), "00000000") & " "
     Else
      Print #1, arr(b * 3, 1) & "+" & VBA.Format(arr(b * 3, 2), "00000000") & " " & arr(b * 3, 3) & VBA.Format(arr(b * 3, 4), "00000000") & " "
     End If
     
     If arr(1 + b * 3, 2) < 0 Then
      Print #1, arr(1 + b * 3, 1) & VBA.Format(arr(1 + b * 3, 2), "00000000") & " " & arr(1 + b * 3, 3) & VBA.Format(arr(1 + b * 3, 4), "00000000") & " "
     Else
      Print #1, arr(1 + b * 3, 1) & "+" & VBA.Format(arr(1 + b * 3, 2), "00000000") & " " & arr(1 + b * 3, 3) & VBA.Format(arr(1 + b * 3, 4), "00000000") & " "
     End If
     
    If arr(2 + b * 3, 2) < 0 Then
     If arr(2 + b * 3, 6) < 0 Then
      Print #1, arr(2 + b * 3, 1) & VBA.Format(arr(2 + b * 3, 2), "00000000") & " " & arr(2 + b * 3, 3) & VBA.Format(Left(arr(2 + b * 3, 4), 8), "00000000") & " " & arr(2 + b * 3, 5) & VBA.Format(arr(2 + b * 3, 6), "00000000") & " "
     Else
      Print #1, arr(2 + b * 3, 1) & VBA.Format(arr(2 + b * 3, 2), "00000000") & " " & arr(2 + b * 3, 3) & VBA.Format(Left(arr(2 + b * 3, 4), 8), "00000000") & " " & arr(2 + b * 3, 5) & "+" & VBA.Format(arr(2 + b * 3, 6), "00000000") & " "
     End If
    Else
     If arr(2 + b * 3, 6) < 0 Then
      Print #1, arr(2 + b * 3, 1) & "+" & VBA.Format(arr(2 + b * 3, 2), "00000000") & " " & arr(2 + b * 3, 3) & VBA.Format(Left(arr(2 + b * 3, 4), 8), "00000000") & " " & arr(2 + b * 3, 5) & VBA.Format(arr(2 + b * 3, 6), "00000000") & " "
     Else
      Print #1, arr(2 + b * 3, 1) & "+" & VBA.Format(arr(2 + b * 3, 2), "00000000") & " " & arr(2 + b * 3, 3) & VBA.Format(Left(arr(2 + b * 3, 4), 8), "00000000") & " " & arr(2 + b * 3, 5) & "+" & VBA.Format(arr(2 + b * 3, 6), "00000000") & " "
     End If
    End If
   Next
      Print #1, ""
      Close #1
line1:
        xlBook.Close False    '关闭工作簿,结束进程
        Set xlBook = Nothing
        oExcel.Quit
        Set xlExcel = Nothing
    End If
End Sub


2023-01-16 11:52
zxh48911805
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2022-7-9
收藏
得分:0 
回复 2楼 阳光上的桥
代码我已修改了还是只能出来一点



Open "D:\原始资料\" & arr(1, 42) & "-CJ-" & myDate & ".txt" For Output As #1
    Text1.Text = "D:\原始资料\CS-1-WY-" & VBA.Format(Now(), "yyyymmdd") & ".dat,输出完成"
     Print #1, arr(1, 1) & " "
     If arr(2, 2) < 0 Then
      Print #1, arr(2, 1) & VBA.Format(arr(2, 2), "00000000") & " "
     Else
      Print #1, arr(2, 1) & "+" & VBA.Format(arr(2, 2), "00000000") & " "
     End If
   For b = 1 To C
     If arr(b * 3, 2) < 0 Then
      Print #1, arr(b * 3, 1) & VBA.Format(arr(b * 3, 2), "00000000") & " " & arr(b * 3, 3) & VBA.Format(arr(b * 3, 4), "00000000") & " "
     Else
      Print #1, arr(b * 3, 1) & "+" & VBA.Format(arr(b * 3, 2), "00000000") & " " & arr(b * 3, 3) & VBA.Format(arr(b * 3, 4), "00000000") & " "
     End If
     
     If arr(1 + b * 3, 2) < 0 Then
      Print #1, arr(1 + b * 3, 1) & VBA.Format(arr(1 + b * 3, 2), "00000000") & " " & arr(1 + b * 3, 3) & VBA.Format(arr(1 + b * 3, 4), "00000000") & " "
     Else
      Print #1, arr(1 + b * 3, 1) & "+" & VBA.Format(arr(1 + b * 3, 2), "00000000") & " " & arr(1 + b * 3, 3) & VBA.Format(arr(1 + b * 3, 4), "00000000") & " "
     End If
     
    If arr(2 + b * 3, 2) < 0 Then
     If arr(2 + b * 3, 6) < 0 Then
      Print #1, arr(2 + b * 3, 1) & VBA.Format(arr(2 + b * 3, 2), "00000000") & " " & arr(2 + b * 3, 3) & VBA.Format(Left(arr(2 + b * 3, 4), 8), "00000000") & " " & arr(2 + b * 3, 5) & VBA.Format(arr(2 + b * 3, 6), "00000000") & " "
     Else
      Print #1, arr(2 + b * 3, 1) & VBA.Format(arr(2 + b * 3, 2), "00000000") & " " & arr(2 + b * 3, 3) & VBA.Format(Left(arr(2 + b * 3, 4), 8), "00000000") & " " & arr(2 + b * 3, 5) & "+" & VBA.Format(arr(2 + b * 3, 6), "00000000") & " "
     End If
    Else
     If arr(2 + b * 3, 6) < 0 Then
      Print #1, arr(2 + b * 3, 1) & "+" & VBA.Format(arr(2 + b * 3, 2), "00000000") & " " & arr(2 + b * 3, 3) & VBA.Format(Left(arr(2 + b * 3, 4), 8), "00000000") & " " & arr(2 + b * 3, 5) & VBA.Format(arr(2 + b * 3, 6), "00000000") & " "
     Else
      Print #1, arr(2 + b * 3, 1) & "+" & VBA.Format(arr(2 + b * 3, 2), "00000000") & " " & arr(2 + b * 3, 3) & VBA.Format(Left(arr(2 + b * 3, 4), 8), "00000000") & " " & arr(2 + b * 3, 5) & "+" & VBA.Format(arr(2 + b * 3, 6), "00000000") & " "
     End If
    End If
   Next
      Print #1, ""
      Close #1
line1:
        xlBook.Close False    '关闭工作簿,结束进程
        Set xlBook = Nothing
        oExcel.Quit
        Set xlExcel = Nothing
    End If
End Sub
2023-01-16 11:53
阳光上的桥
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:38
帖 子:129
专家分:772
注 册:2023-1-12
收藏
得分:0 
你好像只看了第一句,我看你代码里面还有大量的VBA.Format呀,为什么不加Option Explicit呢
2023-01-16 12:19
zxh48911805
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2022-7-9
收藏
得分:0 
回复 6楼 阳光上的桥
Option Explicit怎么加?
2023-01-16 13:27
yuma
Rank: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1934
专家分:3012
注 册:2009-12-22
收藏
得分:0 
不就是导出xlsx里的内容到txt文件吗?是吧?

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2023-01-16 13:49
zxh48911805
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2022-7-9
收藏
得分:0 
回复 8楼 yuma
txt dat都可以
2023-01-16 13:58
yuma
Rank: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1934
专家分:3012
注 册:2009-12-22
收藏
得分:0 
很奇怪,我的代码只能处理我的xls xlsx文件,无法处理你的xlsm文件。转换格式也不行。

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2023-01-16 14:19
快速回复:各位大神可以帮我看下,我的问题出在哪里吗?可以帮我修改下吗感谢。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031553 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved