安徽彩票大奖 欧洲百万乐透大奖 七星彩17049规律大奖 双色球中大奖领奖过程 3d近期中大奖故事 广州番禺中福彩大奖的 鸡男注定会中大奖 2016江苏彩民中大奖 趣彩网大奖网黑平台 大乐透4.97亿大奖 霍邱一彩民6元中双色球547万大奖 双色球黑龙江中大奖图 体育彩票中大奖名单 什么样的人能中大奖 彩票大奖作假

Access VBA调用Shell.Application出现对象不支持该动作错误

2017-09-06 14:29:00
zstmtony
原创
817

Access VBA使用以下的代码调用Shell.Application出现对象不支持该动作错误,错误号为445

使用各?#22336;?#27861;尝试解决,都不得要领,最后从Items的参数的数据类型入门,解决了问题


    Set   objShell   =   CreateObject( "Shell.Application ") 
        Set   objFolder   =   objShell.BrowseForFolder(0,   "select   folder ",   0,   0) 
        Set   myFolders   =   objFolder.Items() 
        Dim   i   As   Integer 
        For   i   =   1   To   myFolders.Count 
                MsgBox   myFolders.Item(i).Path 
        Next   i 

出现的错误提示如下:


 



原因有2个

1.i 必须 定义为Variant ,不能为 Integer ,即myFolders.Item(i) 里的参数类型必须为 Variant变量类型

2.i 是从0开始 而不是 从1 开始


修改后正常的代码:

Private Sub Command6_Click()
    Set objShell = CreateObject("Shell.Application")
        Set objFolder = objShell.BrowseForFolder(0, "select   folder ", 0, 0)
        Set myFolders = objFolder.Items()
        Dim i     As Variant
        For i = 0 To myFolders.Count - 1
                MsgBox myFolders.Item(i).Path
        Next i
End Sub 


或者直接不定义对象类型,像vbscript里一样


Sub MyBrowseFolder() 
On Error Resume Next 
Dim objFolder As Folder 
Set objShell = CreateObject( "Shell.Application ") 
Set objFolder = objShell.BrowseForFolder(0, "select folder ", 0, 0) 
Dim i As Integer 
For i = 1 To objFolder.Items.Count 
Debug.Print objFolder.Items.Item(i).Path 
Next i 
End Sub 

其它也可以的代码:
Set objShell = CreateObject( "Shell.Application ") 
Set objFolder = objShell.BrowseForFolder(0, "select folder ", 0, 0) 
Set myFolders = objFolder.Items() 
Set myFolder = myFolders.Item 
For Each myFolder In myFolders 
MsgBox myFolder.Path 
Next



    分享
    ? 1999-2019 Office交流网?? 中山市天鸣科技发展有限公司 粤ICP备10043721号-5 SQL查询:18
    内存占用:7.75MB
    PHP 执行时间:0.17
    双色球大奖2000年
    安徽彩票大奖 欧洲百万乐透大奖 七星彩17049规律大奖 双色球中大奖领奖过程 3d近期中大奖故事 广州番禺中福彩大奖的 鸡男注定会中大奖 2016江苏彩民中大奖 趣彩网大奖网黑平台 大乐透4.97亿大奖 霍邱一彩民6元中双色球547万大奖 双色球黑龙江中大奖图 体育彩票中大奖名单 什么样的人能中大奖 彩票大奖作假