简体   繁体   English

使用 VBA 将文件上传到站点

[英]Upload a file to a site using VBA

I am using VBA to automate IE to upload a file to a site.我正在使用 VBA 自动将 IE 上传到站点。

I found the button with the "file" type, but then seem to draw a blank when setting the path.我找到了“文件”类型的按钮,但在设置路径时似乎画了一个空白。

My current VBA:我当前的 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

The HTML it is reading:它正在阅读的 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>

It finds the Type when stepping through and does go to set the value, but then there is no change on screen (I have the IE instance shown as visible for testing) and the file is not added.它在单步执行时找到了 Type 并确实设置了值,但是屏幕上没有任何变化(我将 IE 实例显示为可见以进行测试)并且未添加文件。

Would I be right to assume that the "file" input type requires something other than .Value for it's input?我是否正确假设“文件”输入类型需要.Value以外的其他内容作为输入?

Give it a try试试看

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM