注册 登录
编程论坛 VB6论坛

(已经解决)敬请高手解决用vb6代码打开局域网文件夹的问题。谢谢。

HVB6 发布于 2016-10-20 22:40, 9842 次点击
已经解决问题,是本人在把VBA的用手输入的方法,导致vb6的代码空格少也无法查出而运行不对,用复制VBA的方法,vb6运行和VBA的结果就一致了。谢谢大家的热心帮忙。
以下两段vba代码均可以打开共享的局域网文件夹,但作为vb6代码则不中,打开共享的局域网文件夹的vb6代码如何写?
1、
Set fso = CreateObject("Scripting.FileSystemObject")
  If FSO.folderexists("\\172.20.31.32\123") then 'vb6不能正确判断
    Ret = Shell("explorer.exe  \\172.20.31.32\123", vbNormalFocus)'打开文件夹
        MsgBox "存在"
    Else
        MsgBox "不存在"
    End If
    Set fso = Nothing
End Sub
2、
shell "cmd /c start \\172.20.31.32\123",vbhide '打开文件夹
        


[此贴子已经被作者于2016-10-22 10:04编辑过]

20 回复
#2
xiangyue05102016-10-21 08:52
确实,我用Excel的VBA测试了一下,可以用的。但是我电脑上没有VB。这种编译环境造成的问题,暂时帮不上忙了。
另外,我用VBA代码  
If Dir("\\192.168.31.198\e\", vbDirectory) <> "" Then 'vb6不能正确判断
测试可用。你在VB下试试看
帮顶

[此贴子已经被作者于2016-10-21 09:07编辑过]

#3
风吹过b2016-10-21 09:09
FSO.folderexists("\\172.20.31.32\123")
这种的我测试可用。

FSO.folderexists("\\172.20.31.32\")
这种的我测试不可用。

IDE环境测试的。

Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
  MsgBox fso.folderexists("\\10.92.29.2\Anonymous")


#4
HVB62016-10-21 10:00
回复 2楼 xiangyue0510
"\\192.168.31.198\e\",打开这个局域网文件夹的vb6代码如何写?
#5
HVB62016-10-21 10:03
回复 3楼 风吹过b
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
  MsgBox fso.folderexists("\\10.92.29.2\Anonymous")'此代码运行的结果为:  MsgBox True
打开"\\10.92.29.2\Anonymous"文件夹的vb6代码如何写?
#6
xzlxzlxzl2016-10-21 10:51
回复 4楼 HVB6
如果隐性共享打开则好像是 file:\\\\192.168.31.198\e$
#7
风吹过b2016-10-21 11:05
列出所有的文件

程序代码:
Dim fso As Object
Dim ts As Object
Dim DPath As String

DPath = "\\10.92.29.2\Anonymous\"

Set fso = CreateObject("Scripting.FileSystemObject")

Set ts = fso.GetFolder(DPath)

Dim a As Variant
For Each a In ts.Files
    List1.AddItem a.Name
Next


IDE测试通过
-----------------
For Each a In ts.SubFolders
    List1.AddItem a.Name
Next
返回子目录,IDE测试通过

[此贴子已经被作者于2016-10-21 11:06编辑过]

#8
ZHRXJR2016-10-21 12:04
我在我的系统中临时创建了IP地址为192.168.0.1的局域网的本地地址,使用fso对象访问,发现fso对象没有目录操作属性(就是说fso对象不能打开目录),只能判断目录是否存在。
因此我想是否可以使用CommonDialog1文件操作对话框来操作局域网的共享文件夹,在C盘创建了一个Anonymous目录,并且共享名也是Anonymous,在共享目录中创建了几个文件,其中aaa.txt是其中的一个。
下面的代码是在VB中调试的代码,由于我没有局域网,仅仅将本机的IP地址修改,因此在局域网中是否可以,没有调试,代码也只能给你提供参考:
程序代码:
Dim fso As Object, JYWML As String
Set fso = CreateObject("Scripting.FileSystemObject")
JYWML = "\\192.168.0.1\Anonymous"
    On Error GoTo ABC
    Text2.Text = JYWML
    CommonDialog1.InitDir = JYWML
    CommonDialog1.Filter = "全部文件(.*)|*.*"
    CommonDialog1.CancelError = True
    CommonDialog1.ShowOpen
    Text1.Text = CommonDialog1.FileName
    Exit Sub
ABC:
    If Err.Number = 32755 Then
        MsgBox "你点击了取消按钮!"
        Exit Sub
    Else
        MsgBox Err.Number
        Exit Sub
    End If

只有本站会员才能查看附件,请 登录
上面文本框是局域网的共享目录地址,下面的文本框是共享目录中需要操作的文件
#9
xiangyue05102016-10-21 13:40
以下是引用HVB6在2016-10-21 10:00:39的发言:

"\\192.168.31.198\e\",打开这个局域网文件夹的vb6代码如何写?

啥意思?这个是我这个路由下的地址。你的要自己改啊
#10
HVB62016-10-21 15:38
回复 9楼 xiangyue0510
都怪我1楼的说明中没详细交代清楚,在此交代1次:1楼中的“\\172.20.31.32\123”,其中“172.20.31.32”是本单位(假设的)局域网中某1计算机的IP号,“123”是其(假设的)下的1个文件夹,1楼的问题是用vb6代码打开“\\172.20.31.32\123”文件夹。
#11
wube2016-10-21 15:53
以下是引用HVB6在2016-10-20 22:40:32的发言:

以下两段vba代码均可以打开共享的局域网文件夹,但作为vb6代码则不中,打开共享的局域网文件夹的vb6代码如何写?
1、
Set fso = CreateObject("Scripting.FileSystemObject")
  If FSO.folderexists("\\172.20.31.32\123") then 'vb6不能正确判断
    Ret = Shell("explorer.exe  \\172.20.31.32\123", vbNormalFocus)'打开文件夹
        MsgBox "存在"
    Else
        MsgBox "不存在"
    End If
    Set fso = Nothing
End Sub
2、
shell "cmd /c start \\172.20.31.32\123",vbhide '打开文件夹
        


VB6可以....Excel2007 VBA也可以
#12
风吹过b2016-10-21 16:21
你打开文件夹,干什么?
调用 窗口打开?还是 列出文件夹里的 子目录和文件。如果是列出子目录和文件,我测试结果是可以,看7楼的代码。

10.92.29.2 是局域网中另一个计算机,
Anonymous  是共享名,并不一定就代表一个实际的目录名,有可能与实际目录名不同。

-------------------------------
如果FSO完全没用,那就可能需要去研究对等网里的文件共享协议,使用 winsock 来访问了。


#13
HVB62016-10-21 16:57
回复 11楼 wube
在win7系统不中。
#14
HVB62016-10-21 17:02
回复 12楼 风吹过b
以下两段vba代码均可以打开共享的局域网文件夹,但作为vb6代码则不中,打开共享的局域网文件夹的vb6代码如何写?
1、
Set fso = CreateObject("Scripting.FileSystemObject")
  If FSO.folderexists("\\172.20.31.32\123\a\b\c") then 'vb6不能正确判断
    Ret = Shell("explorer.exe  \\172.20.31.32\123\a\b\c", vbNormalFocus)'打开文件夹
        MsgBox "存在"
    Else
        MsgBox "不存在"
    End If
    Set fso = Nothing
End Sub
2、
shell "cmd /c start \\172.20.31.32\123\a\b\c",vbhide '打开文件夹
        在以上的代码中,增加红色部分,也许有助于问题的理解。其中\123\a\b\c是文件夹。

[此贴子已经被作者于2016-10-21 17:04编辑过]

#15
风吹过b2016-10-21 17:09
你看了我三楼的结果吗?
我就是在 VB6 IDE 里测试的。

FSO.folderexists("\\10.92.29.2\Anonymous")
返回,真

FSO.folderexists("\\10.92.29.2\")
返回 假


[此贴子已经被作者于2016-10-21 21:15编辑过]

#16
xiangyue05102016-10-21 19:31
回复 10楼 HVB6
服了,我把代码给你,替换有问题的那句就可以,局域网文件夹地址换一下就可以了
你居然拿我的局域网文件夹地址来问我怎么做。
然后来给我解释你的局域网文件夹地址是什么意思。你以为别人跟你一样的?
你的表述能力,理解能力,我真的无语。 你还是告别VB吧。
#17
风吹过b2016-10-21 21:16
smb协议,认真研究一下吧,可以运行在 TCP/IP 上面,使用 UDP 。
#18
HVB62016-10-21 21:43
回复 11楼 wube
我把代码分别用vba和vb6运行,vba可以,vb6不中。在winXP和win7系统运行。现在我就在单位的电脑的局域网中不断地测试,的确是vba可以,vb6不中。
#19
HVB62016-10-21 21:44
回复 16楼 xiangyue0510
现在我就在单位的电脑的局域网中不断地测试,的确是vba可以,vb6不中。
#20
HVB62016-10-21 23:02
回复 17楼 风吹过b
没有想到vba可以用如此简单的代码,就可以打开共享局域网中的文件夹,而vb6却不行。
#21
HVB62016-10-22 10:02
已经解决问题,是本人在把VBA的用手输入的方法,导致vb6的代码空格少也无法查出而运行不对,用复制VBA的方法,vb6运行和VBA的结果就一致了。谢谢大家的热心帮忙。
1