Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 使用VBA将文件上载到站点_Excel_Vba_Internet Explorer - Fatal编程技术网

Excel 使用VBA将文件上载到站点

Excel 使用VBA将文件上载到站点,excel,vba,internet-explorer,Excel,Vba,Internet Explorer,我正在使用VBA自动将IE文件上载到站点 我找到了“文件”类型的按钮,但在设置路径时似乎画了一个空白 我当前的VBA: Dim btnInput As Object ' MSHTML.HTMLInputElement Dim ElementCol As Object ' MSHTML.IHTMLElementCollection . . . Set ElementCol = appIE.Document.getElementsByTagName("input") For Each bt

我正在使用VBA自动将IE文件上载到站点

我找到了“文件”类型的按钮,但在设置路径时似乎画了一个空白

我当前的VBA:

Dim btnInput As Object ' MSHTML.HTMLInputElement
Dim ElementCol As Object ' MSHTML.IHTMLElementCollection
.
.
.
Set ElementCol = appIE.Document.getElementsByTagName("input")
     For Each btnInput In ElementCol
        If btnInput.Type = "file" Then
            btnInput.Value = "C:\temp\text.csv"
            Exit For
        End If
    Next btnInput
它正在阅读的HTML:

<div id="upload-assignments-modal" class="modal hide fade in" tabindex="-1" role="dialog" aria-hidden="false" style="display: block;">
    <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
        <h3 id="myModalLabel">Upload order changes</h3>
    </div>
    <form id="upload-form" enctype="multipart/form-data" action="" method="post" accept-charset="utf-8">
        <div class="modal-body">
            <div style="display:none"><input type="hidden" name="csrfmiddlewaretoken" value="abcde"></div>


                <input type="hidden" name="partner" value="488" id="id_partner">

            <p><label for="id_feed_file">Feed file</label><input type="file" name="feed_file" id="id_feed_file"></p>
            <input type="hidden" name="feed_type" value="390" id="id_feed_type">
        </div>
        <div class="modal-footer">
            <button class="btn" data-dismiss="modal">Cancel</button>
            <button name="action" value="upload" type="submit" class="btn btn-primary">Upload</button>
        </div>
    </form>
</div>

×
上载订单更改
馈送文件

取消 上传
它在单步执行时查找类型并设置值,但是屏幕上没有任何更改(我将IE实例显示为可见以供测试),并且没有添加文件

我是否可以假设“文件”输入类型的输入需要的不是
.Value

Set ElementCol = appIE.Document.getElementsByTagName("input")
     For Each btnInput In ElementCol
        If btnInput.Type = "file" Then
            btnInput.Value = "C:\temp\text.csv"
            btnInput.FireEvent ("onclick")
            Exit For
        End If
    Next btnInput

补充一点,我使用的是Excel2007和IE11(尽管在XP中可能也需要使用任何解决方案,所以IE8),但您不能。从设计上来说,这是一种安全功能,理论上(我相信)是为了防止恶意脚本从用户计算机上传文档。如果它是只读属性,我不会感到惊讶,但肯定有另一种方法可以做到,希望也一样简单:)我很确定没有。我很久以前就看到过这个问题,结果是直接将文件发布到服务器(这是一个更好的解决方案),最终可能会这样。在一天结束时,这是一个有效的解决方案,但为了最终用户的利益,希望尝试让这种方法更有效(至少如果他们看到实际的站点加载等情况,他们知道它“正在做一些事情”,另外,这是一个备份系统,用于上传文件的主要方法(FTP)不起作用时)。此外,这项工作也有助于满足我自己的好奇心:P@bmgh1985是否可以共享该链接?无法在您必须登录的站点上共享该链接。在脚本alread中设置登录部分和导航部分,只需要这一点。将更改OP以包含更多HTML,从而使其更容易