这是弹出框的html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!-- BEGIN /layouts/new_empty_layout.jsp -->
<html>
<head>
<title>SERFF - System for Electronic Rate and Form Filing</title>
<!-- Copyright 2016 National Association of Insurance Commissioners -->
<link rel="stylesheet" type="text/css" href="/styles/serff-core.css"/>
<link rel="stylesheet" type="text/css" href="/styles/core-header.css"/>
<link rel="stylesheet" type="text/css" href="/styles/core-content.css"/>
<link rel="stylesheet" type="text/css" href="/scripts/jquery-ui-css/custom-theme/jquery-ui-1.10.4.custom.css"/>
<script type="text/javascript">
var staticUrlPath = '/';
var appUrlPath = '/serff/';
</script>
<script type="text/javascript" src="/scripts/jquery-1.12.1.min.js"></script>
<script type="text/javascript" src="/scripts/jquery.textarea.pack.js"></script>
<script type="text/javascript" src="/scripts/jquery-ui-1.10.0.min.js"></script>
<script type="text/javascript" src="/scripts/datepicker.js"></script>
<script type="text/javascript" src="/scripts/default_layout.js"></script>
<script>
// custom SERFF dimensions:
// dimension1 = SERFF User Type custom GA dimension
var analyticsEnabled = true;
// insert the analytics script and initialize the Google Analytics "ga" object
if(analyticsEnabled){
var currentScript = document.currentScript || (function() {
var scripts = document.getElementsByTagName('script');
return scripts[scripts.length - 1];
})();
var gaScript = document.createElement('script');
gaScript.async = true;
gaScript.src = '/public/lib/ga/analytics.js';
document.getElementsByTagName("head")[0].insertBefore(gaScript, currentScript);
var ga = window.ga = window.ga || function(){(window.ga.q = window.ga.q || []).push(arguments)};
window.ga.l = +new Date();
window.GoogleAnalyticsObject = 'ga';
ga('create', 'UA-5133885-7', 'auto');
}
function analyticsPageView()
{
doSendAnalytics(function() {
ga('send', 'pageview');
});
}
function analyticsPageViewWithUserType()
{ doSendAnalytics(function() {
ga('send', 'pageview', {
'dimension1' : getUserType()
});
});
}
function analyticsEvent(eventCategory, eventAction, callback){
if(callback){
doSendAnalytics(function() {
ga('send', 'event', eventCategory, eventAction, {'hitCallback': callback});
});
} else {
doSendAnalytics(function() {
ga('send', 'event', eventCategory, eventAction);
});
}
}
function analyticsEventWithUserType(eventCategory, eventAction, callback){
if(callback){
doSendAnalytics(function() {
ga('send', 'event', eventCategory, eventAction, {'hitCallback': callback, 'dimension1' : getUserType()});
});
} else {
doSendAnalytics(function() {
ga('send', 'event', eventCategory, eventAction, {'dimension1' : getUserType()});
});
}
}
function getUserType(){
var userType = 'I';
if(userType == 'S'){
userType = 'State User';
} else if(userType == 'I') {
userType = 'Industry User';
} else if (userType == 'N') {
userType = 'NAIC Admin User';
}
return userType;
}
// only send a message to GA if enabled in the INI file
function doSendAnalytics(method){
if(analyticsEnabled){
method();
}
}
</script>
<link rel="stylesheet" type="text/css" href="/styles/forms2.css"/>
<!-- BEGIN /layouts/iefixes.jsp -->
<!-- END /layouts/iefixes.jsp -->
</head>
<body>
<div id="content">
<div id="main" style="background: none;">
<!-- Copyright 2014 National Association of Insurance Commissioners -->
<!-- BEGIN /filing/ -->
<html>
<head>
<title>SERFF - System for Electronic Rate and Form Filing</title>
<link rel="stylesheet" type="text/css"
href="/styles/serff-core.css" />
<link rel="stylesheet" type="text/css"
href="/styles/core-header.css" />
<link rel="stylesheet" type="text/css"
href="/styles/core-content.css" />
<link rel="stylesheet" type="text/css"
href="/styles/forms2.css" />
<!-- BEGIN /layouts/iefixes.jsp -->
<!-- END /layouts/iefixes.jsp -->
<script language="javascript">
var uploadSubmitted = false;
$( document ).ready(function() {
$( 'form' ).submit(function( event ) {
if (uploadSubmitted) {
alert( "You have already performed this action. Please wait for the page to refresh." );
event.preventDefault();
} else {
uploadSubmitted = true;
}
});
});
var skipcycle = false;
function updateAttachments() {
var groupId = window.opener.selectedAttachmentGroup;
if (uploadForm.groupId.value == null || uploadForm.groupId.value ==''){
uploadForm.groupId.value = groupId;
}
var index = window.opener.selectedIndex;
if (uploadForm.index.value == null || uploadForm.index.value ==''){
uploadForm.index.value = index;
}
}
function focusOnMe(){
if (!skipcycle){
window.focus();
}
mytimer = setTimeout('focusOnMe()', 500);
}
</script>
</head>
<body onload = "mytimer = setTimeout('focusOnMe()', 500);updateAttachments();">
<h2>SERFF File Attachment Upload</h2>
<div class="documentArea">
<form name="uploadForm" method="POST" action="/serff/uploadFileAttachment.do" class="styled" enctype="multipart/form-data" id="uploadForm">
<input type="hidden" name="groupId" />
<input type="hidden" name="index" />
<input type="hidden" name="attachmentType" value="0">
<div class="uploadWarning" style="width:325px">
Attachments larger than 3MB or Microsoft Word(tm) documents cannot be uploaded to SERFF.
</div>
<div class="fieldgroup">File 1: <input type="file" name="contentIndexed[0]" value="" onfocus="skipcycle=true" class="inputFile"></div>
<div class="fieldgroup">File 2: <input type="file" name="contentIndexed[1]" value="" onfocus="skipcycle=true" class="inputFile"><br />
</div>
<div class="fieldgroup">File 3: <input type="file" name="contentIndexed[2]" value="" onfocus="skipcycle=true" class="inputFile"><br />
</div>
<div class="fieldgroup">File 4: <input type="file" name="contentIndexed[3]" value="" onfocus="skipcycle=true" class="inputFile"><br />
</div>
<div class="fieldgroup">File 5: <input type="file" name="contentIndexed[4]" value="" onfocus="skipcycle=true" class="inputFile"><br />
</div>
<br />
<div class="actionButtons">
<input type="submit" value="Upload" class="inputSubmit">
<input type="button" class="inputButton" onclick="window.close();" value="Cancel" />
</div>
</form>
</div>
</body>
</html>
<!-- END /filing/fileUpload.jsp -->
</div> <!-- end main div -->
</div> <!-- end content div -->
</body>
</html>
<!-- END /layouts/new_empty_layout.jsp -->
&#13;
我正在尝试使用vba来显示上传文件对话框&#34;点击&#34;在其中一个浏览按钮上。问题是vba不会让我在uploadForm中找到输入标签。
我自己的代码:
Set uploadForm = ieUpload.document.getElementById("uploadForm")
For Each inputTag In uploadForm.getElementsByTagName("input")
If inputTag.Name = "contentIndexed[0]" Then inputTag.Click
Next inputTag
Vba引发一个&#34;对象变量或者没有设置块变量&#34; for循环出错。
答案 0 :(得分:1)
原来文件还没有完成加载。检查ieUpload.Busy
就可以了。例如,请this question查看Busy
循环中的DoEvents
。
首先:
Option Explicit
。CreateObject
! Dim
为所有变量提供特定类型,而不是Variant
或Object
。现在,假设您使用MSHTML
,则没有功能document.get
Elements
ById
。您想要的是get
Element
ById
,而“元素”上没有“s”。单步执行代码 - 当您点击For循环时,我怀疑uploadForm
为Nothing
,因此uploadForm.getElementsByTagName
会引发错误。
修改那么为什么我提到添加上面的参考?因为如果您添加了引用,并且您说过Dim uploadForm as MSHTML.IHTMLElement2
,则VBA编辑器会自动将案例更改为uploadForm.getElementsByTagName
。既然没有,我认为你没有Dim
,或者它不是特定的Dim
。
(当然,除非你创建了一个名为getelementsbytagname
的变量,你不应该这样做:))
Here's一个MSHTML示例,链接自this answer。