标题:VB从word中的字符串明明是和文件名匹配的,为何显示不匹配?
只看楼主
xingming022
Rank: 1
等 级:新手上路
帖 子:103
专家分:9
注 册:2015-1-26
结帖率:50%
已结贴  问题点数:20 回复次数:6 
VB从word中的字符串明明是和文件名匹配的,为何显示不匹配?
Private Sub Command6_Click()
    Dim i As Integer
    Dim j As Integer
    Dim tuhao As String
    Dim tuming As String
   
    Dim wrdapp As Object
    Dim wrddoc As Object
    Set wrdapp = CreateObject("word.application")
    Set wrddoc = wrdapp.Documents.Open(Text6.Text)


    Dim k As Integer
    Dim A As Integer
   
    Dim Myname As String
    Dim Mynamewuhouzhui As String
    Dim Mynamehouzhui As String
   
    Dim Myname2 As String
    Dim Mypath As String
    Dim Mypathname As String
    Dim Mypathname2 As String
    pltjtm.List2.Clear
   
    For k = 0 To List1.ListCount - 1
            Mypathname = List1.List(k)
            Mypath = Mid(Mypathname, 1, InStrRev(Mypathname, "\") - 1)
            Myname = Right(Mypathname, Len(Mypathname) - InStrRev(Mypathname, "\"))
            Mynamewuhouzhui = Mid(Myname, 1, InStrRev(Myname, ".") - 1)
            Mynamehouzhui = Right(Myname, Len(Myname) - InStrRev(Myname, "."))
            For i = 1 To 5
                For j = 13 To 28
                    tuhao = wrddoc.Tables(i).Cell(j, 2).Range.Text
                    tuhao = Left(tuhao, Len(tuhao) - 1)

                    A = InStr(Mynamewuhouzhui, tuhao)

                    If A > 0 Then
                        tuming = wrddoc.Tables(1).Cell(j, 3).Range.Text
                        tuming = Left(tuming, Len(tuming) - 1)
                    
                        Myname2 = Replace(Mynamewuhouzhui, Mynamewuhouzhui, Mynamewuhouzhui & " " & tuming & "." & Mynamehouzhui)
                        Name Mypath & "\" & Myname As Mypath & "\" & Myname2
                        pltjtm.List2.AddItem Mypath & "\" & Myname2
                        GoTo 11
                    End If
                Next
            Next

11:
    Next
   
    wrddoc.Close
    wrdapp.Quit

End Sub
pltjtm.rar (26.89 KB)
搜索更多相关主题的帖子: word 匹配 Dim Integer String 
2019-05-25 20:52
wufuzhang
Rank: 9Rank: 9Rank: 9
来 自:广州
等 级:贵宾
威 望:21
帖 子:206
专家分:1346
注 册:2017-8-9
得分:20 
回复 楼主 xingming022
tuhao = Left(tuhao, Len(tuhao) - 1)这一句有问题,
应该改为:tuhao = Left(tuhao, Len(tuhao) - 2)

同样tuming = Left(tuming, Len(tuming) - 1)
改为tuming = Left(tuming, Len(tuming) - 2)

应该就可以了

不经历千百遍的调试,怎能体会成功时那一刹那的喜悦。
2019-05-26 08:40
xingming022
Rank: 1
等 级:新手上路
帖 子:103
专家分:9
注 册:2015-1-26
得分:0 
能再问下,为何要  -2  ?您是如何发现这种解决办法的?
2019-05-26 22:20
wufuzhang
Rank: 9Rank: 9Rank: 9
来 自:广州
等 级:贵宾
威 望:21
帖 子:206
专家分:1346
注 册:2017-8-9
得分:0 
回复 3楼 xingming022
用Debug.Print在立即窗口中打印出来,你会发现-1的话,
tuhao里面有一个换行符,-2的话就可以把换行符去掉,
这样Mynamewuhouzhui才会等于tuhao


PS:调试的时候,提示框显示的值里面显示不了换行符,所以给你错觉,
明明两个字符相等,为什么还会报错。

不经历千百遍的调试,怎能体会成功时那一刹那的喜悦。
2019-05-26 23:57
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 
看你们提供的解释 ,-1 后有一个换行符,那就可以继续深入探讨了。

在WINDOWS平台下,字符串换行,使用的是 VBCRLF( CHR(13) & CHR(10) )
这个换行符是2个字节。

授人于鱼,不如授人于渔
早已停用QQ了
2019-05-27 10:19
wufuzhang
Rank: 9Rank: 9Rank: 9
来 自:广州
等 级:贵宾
威 望:21
帖 子:206
专家分:1346
注 册:2017-8-9
得分:0 
回复 5楼 风吹过b
确实是这样的,Chr(13)是回车符vbCr(Carriage Return),Chr(10)是换行符vbLf(Line Feed)
Chr(13) + Chr(10)就是回车换行vbCrLf

1.在窗体输出中,Chr(13) 、 Chr(10) 、 Chr(13) + Chr(10) 都是换一行;Chr(10) + Chr(13)、两个Chr(13)、两个Chr(10) 就是换两行。
2.在Text输出中,只有Chr(13) + Chr(10)可换一行,其余无换行。(换行的前提是Text控件的Multiline属性设置为True)



所以为了统一,微软规定在每行的最后面加上vbCrLf,这样在提取一行字符串时要减掉最后面两个字符。

不经历千百遍的调试,怎能体会成功时那一刹那的喜悦。
2019-05-27 11:39
xingming022
Rank: 1
等 级:新手上路
帖 子:103
专家分:9
注 册:2015-1-26
得分:0 
回复 5楼 风吹过b
也非常感谢您的指导,我之前有几篇帖子,您很早之前也都指点过。在这里表示下感谢。
2019-05-27 13:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-494942-1-1.html




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

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