• 締切済み

VBAに変換してほしい

java でプログラムして何とか完成できました。 var links = document.getElementsByTagName( "link" ), filtered = [], i = links.length; while ( i-- ) { links[i].rel === "prev" && filtered.push( links[i] ); } alert( filtered[0].href ); このjavaプログラミングをVBAで動作させるためにはどのようにすればよいですか? VBAに詳しいどなたか おしえてください。

みんなの回答

noname#212058
noname#212058
回答No.2

> 実は私はVBAがわかりません。そのため、JAVAの > コードをVBAに作り変えるための方法がわかりません。 改めて質問のコードを見て気づいたのですが、このコー ドは java ではなく、javascript ですね? VBA を動かすソフトウェア(EXCELなど)は当然ブラウザ ではありませんので、このようなコードを実現するため には、VBAからブラウザを制御するためのコードを色々 と作る必要があり、それはこの狭い回答欄に『無償で』 回答できるレベルを超えます。 横着せず VBA を学習してください。 VBA からブラウザを制御するための参考サイトは提示 しておきます。 http://vba-code.net/ie/

noname#212058
noname#212058
回答No.1

JAVA のプログラムをVBAから直接動かす方法はありません。 JAVA のプログラムを『コンソールアプリケーション』として作り、 VBA から呼び出すことになります。 ※コンソールアプリケーションの作り方、実行のしかたはご自分   で調べてください ※VBA からは以下のように起動します。   http://www.moug.net/tech/exvba/0100034.html もっとも、この程度のコードでしたら、最初から全部 VBA で作っ たほうが簡単そうな気がしますが…。

ikukochan2014
質問者

補足

さっそくのご回答ありがとうございます。 実は私はVBAがわかりません。そのため、JAVAのコードをVBAに作り変えるための 方法がわかりません。

関連するQ&A

  • 外部CSSの@charasetの取得

    外部CSSに@charsetがある場合と無い場合で、そのCSSを読み込んでいるlink要素に対して同じcharaset属性を追加したいと思っています。 (@charasetは必ずcssの1行目にあります。) 以下途中までは書いたのですが、肝心の@charasetを参照する部分がわかりませんでした。 window.onload = function() { var Link=document.getElementsByTagName('LINK'); for (var i=0;i<Link.length;i++){ var Rel= Link[i].getAttribute("rel"); if(Rel=='stylesheet' || Rel=='alternate stylesheet'){ Link[i].setAttribute("charaset", ); }}}; 対応させたいブラウザがSafariのみなのでIEに対応したりする必要はとくにありません。 よろしくお願いします。

  • javascriptについて

    現在HPを作成していてjavaのプルダウンメニューを設置していますが 最初からメニューが開いた状態になります。ちなみにsdmenu.jsを使用しています。 最初開いた時にメニューが閉じるようにできますでしょうか? function SDMenu(id) { if (!document.getElementById || !document.getElementsByTagName) return false; this.menu = document.getElementById(id); this.submenus = this.menu.getElementsByTagName("div"); this.remember = true; this.speed = 4; this.markCurrent = true; this.oneSmOnly = false; } SDMenu.prototype.init = function() { var mainInstance = this; for (var i = 0; i < this.submenus.length; i++) this.submenus[i].getElementsByTagName("span")[0].onclick = function() { mainInstance.toggleMenu(this.parentNode); }; if (this.markCurrent) { var links = this.menu.getElementsByTagName("a"); for (var i = 0; i < links.length; i++) if (links[i].href == document.location.href) { links[i].className = "current"; break; } } if (this.remember) { var regex = new RegExp("sdmenu_" + encodeURIComponent(this.menu.id) + "=([01]+)"); var match = regex.exec(document.cookie); if (match) { var states = match[1].split(""); for (var i = 0; i < states.length; i++) this.submenus[i].className = (states[i] == 0 ? "collapsed" : ""); } } }; SDMenu.prototype.toggleMenu = function(submenu) { if (submenu.className == "collapsed") this.expandMenu(submenu); else this.collapseMenu(submenu); }; SDMenu.prototype.expandMenu = function(submenu) { var fullHeight = submenu.getElementsByTagName("span")[0].offsetHeight; var links = submenu.getElementsByTagName("a"); for (var i = 0; i < links.length; i++) fullHeight += links[i].offsetHeight; var moveBy = Math.round(this.speed * links.length); var mainInstance = this; var intId = setInterval(function() { var curHeight = submenu.offsetHeight; var newHeight = curHeight + moveBy; if (newHeight < fullHeight) submenu.style.height = newHeight + "px"; else { clearInterval(intId); submenu.style.height = ""; submenu.className = ""; mainInstance.memorize(); } }, 30); this.collapseOthers(submenu); }; SDMenu.prototype.collapseMenu = function(submenu) { var minHeight = submenu.getElementsByTagName("span")[0].offsetHeight; var moveBy = Math.round(this.speed * submenu.getElementsByTagName("a").length); var mainInstance = this; var intId = setInterval(function() { var curHeight = submenu.offsetHeight; var newHeight = curHeight - moveBy; if (newHeight > minHeight) submenu.style.height = newHeight + "px"; else { clearInterval(intId); submenu.style.height = ""; submenu.className = "collapsed"; mainInstance.memorize(); } }, 30); }; SDMenu.prototype.collapseOthers = function(submenu) { if (this.oneSmOnly) { for (var i = 0; i < this.submenus.length; i++) if (this.submenus[i] != submenu && this.submenus[i].className != "collapsed") this.collapseMenu(this.submenus[i]); } }; SDMenu.prototype.expandAll = function() { var oldOneSmOnly = this.oneSmOnly; this.oneSmOnly = false; for (var i = 0; i < this.submenus.length; i++) if (this.submenus[i].className == "collapsed") this.expandMenu(this.submenus[i]); this.oneSmOnly = oldOneSmOnly; }; SDMenu.prototype.collapseAll = function() { for (var i = 0; i < this.submenus.length; i++) if (this.submenus[i].className != "collapsed") this.collapseMenu(this.submenus[i]); }; SDMenu.prototype.memorize = function() { if (this.remember) { var states = new Array(); for (var i = 0; i < this.submenus.length; i++) states.push(this.submenus[i].className == "collapsed" ? 0 : 1); var d = new Date(); d.setTime(d.getTime() + (30 * 24 * 60 * 60 * 1000)); } };

  • lengthが読めない理由が分からない

    lengthが読めない理由が分からない var divs = document.getElementsByTagName("div"); alert(divs); for(var i=0; i < divs.childNodes.length; ++i){   if(divs.childNodes[i].tagName == "h2"){     a.push = divs[i];     b.push = divs[i].h2.nodeValue;     divs[i].style.display = "none";   } } JavaScriptです。 こんなコードを実行すると、forのとこのchildNodes.lengthが読めないとエラーになります。 divsの中身はあるはずだから、読めるんじゃないかと思うのですが。 ちゃんと[object NodeList]と表示されます。 htmlの方には、divは5つぐらいかいてあります。 JavaScriptの挙動がよく分からない……。 chromeでやってますが、firefoxでも動きませんでした。 理由を教えていただけるとうれしいです。 なんか他につっこみたいこともあれば……。 h2をあんな読み方できない、とか。

  • rel属性を複数使用したい

    XHTML 1.0 Strictなのでtarget="_blank"の代用で外部jsに function externalLinks() { if (!document.getElementsByTagName) return; var anchors = document.getElementsByTagName("a"); for (var i=0; i<anchors.length; i++) { var anchor = anchors[i]; if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external") anchor.target = "_blank"; } } window.onload=externalLinks; として読み込みリンクに<a rel="external" ..........>としています。 その他にhighslide.jsを使用しているのですがrel属性が重複しているためか highslide.jsの動作は正常なのですがtarget="_blank"の代用の効果がありません。 rel属性が重ならないようにしたいのですが解決策はありますでしょうか? highslide.jsのURLです↓ http://vikjavev.no/highslide/

  • VBAでリンクを踏みたい

    とあるサイトにログインした後に、「このページを印刷する」というリンクをVBAでクリックしたいのですが ソースは <div class="section sideinfo"> <a href="#" class="print" onClick="JavaScript:openPrintWindow('CG017_001', 'CG018'); return false;">このページを印刷する</a> </div> こうなっています。 VBAコードで objIE.Document.all.Item("JavaScript:openPrintWindow('CG017_001', 'CG018')").Click をすると、「オブジェクト変数または With ブロック変数が設定されていません。」になります。 For i = 0 To objIE.Document.Links.Length - 1 'Debug.Print objIE.Document.Links(i).innerHTML If objIE.Document.Links(i).innerHTML = "このページを印刷する" Then objIE.Document.Links(i).Click Exit For End If Next i これで踏むことはできるのですが、 ソースから文字を探してそれをVBAコードにあてて踏むことはできないのでしょうか?

  • XMLの空白要素をJavascriptのif文で条件分けする

    JavascriptもXMLも始めたばかりの者です。 分からないことがあり、皆様にご教授頂ければと思い投稿しました。 XMLで生成したファイルから各要素を取り出してHTMLに置き換えるスクリプトをJavascriptで作ろうと思います。 ~XMLファイル~宣言省略 <links> <link> <url>http://www.○○○.com/</url> <title>○○○~</title> <ban>http://www.○○○.com/XX.gif</ban> </link> <link> <url>http://www.×××.com/</url> <title>×××~</title> <ban></ban>//←画像データ空欄 </link> </links> ~Javascript~前後省略 var a = obj.responseXML; var xmlDoc = a.documentElement; var links = xmlDoc.getElementById("links").length; for(var i=0; i<links; i++) { var link = xmlDoc.getElementsByTagName("link")[i].firstChild.nodeValue; var title = xmlDoc.getElementsByTagName("title")[i].firstChild.nodeValue; var image = xmlDoc.getElementsByTagName("image")[i].firstChild.nodeValue; var html = Html(link,title,image); } function Html(link,title,image) { ~中略~ if(image != ""){ html += '<a href="' + link + '"><img src="' + image + '" alt="' + title + '" /></a>'; } return html; } この後、html内の「<div id="html"></div>」に表示させるのですが、function Html(~)では、画像の有無は絶対条件ではない為if文で条件分けしています。 ですが、この「if(image != "")」で「has no properties」エラ-になります。 ちなみに空欄だった画像データ欄に文字列を入れるときちんと動作します。 XMLタグに文字列が入らない場合、配列には""(空)が返されないのでしょうか? 何か良い方法はありましたら、よろしくご教授くださいませ。 よろしくお願いいたします。

    • ベストアンサー
    • XML
  • nullまたはオブジェクトではありません

    どなたかよろしくお願いします。 以下のスクリプトで動作確認中にエラーが表示されます。 13行目「'src'はnullまたはオブジェクトではありません」とでます どうやって直したら良いのかわかりません。 IEの「スクリプトのエラーを表示しない」をすれば 一応希望通りに動くので、問題ないとは思うのですが気になります。 どうすれば解消できるでしょうか。 function setLinkListener () { var links = document.links; for (var i = 0; i < links.length; i++) { var link = links [i]; if (link.linkees) { link.onmouseover = function () { for (var i = 0; i < this.linkees.length; i++) { var linkee = this.linkees [i]; // changePseudoLinkClassName (linkee); if (linkee.tagName == "IMG") changeImage (linkee, linkee.src.replace ("_over.gif", ".gif").replace (".gif", "_over.gif")); if (linkee.tagName == "TD") { var image = linkee.getElementsByTagName ("img")[2]; changeImage (image, image.src.replace ("_over.gif", ".gif").replace (".gif", "_over.gif")); } } }; link.onmouseout = function () { for (var i = 0; i < this.linkees.length; i++) { var linkee = this.linkees [i]; // restorePseudoLinkClassName (linkee); if (linkee.tagName == "IMG") restoreImage (linkee); if (linkee.tagName == "TD") restoreImage (linkee.getElementsByTagName ("img")[2]); } }; } } }

  • 分からないプログラムの流れ

    外部ファイル function changeCSS(sURL) { var obj = document.getElementsByTagName("link"); for (var i=0, cnt=0; i<obj.length; i++) { if (obj[i].type == "text/css") obj[i].href = sURL[cnt++]; } } 本体 <a href="#" onClick="changeCSS(['main.css','sb.css'])">1</a> <a href="#" onClick="changeCSS(['main.css','sb2.css'])">2</a> <a href="#" onClick="changeCSS(['main2.css','sb.css'])">3</a> cntがいらない様に思えるのですが消すと動作しなくなってしまいます どのように使われているのかプログラムの流れを教えてください

  • domについていまいちわからないので教えていただきたいのですが

    <link rel="stylesheet" href="default.css" type="text/css" /> 例えばこのタグで rel要素のstylesheetという値を取得したいのですが webbrowser1.document.getelementsByTagname("link") の後にどのように記述すれば取得できるのでしょうか?教えてください。お願いします。

  • cssの振り分けについて

    下記のjavascriptの内容でわからないのでおしえてください。 if(cssFile){ if (document.getElementById && !opera5 && !opera6 && !(mac && ie5) && !icab){ var head = document.getElementsByTagName('HEAD').item(0); var newLink = document.createElement('LINK'); newLink.rel = "stylesheet"; newLink.type = "text/css"; newLink.href = cssFile; head.appendChild(newLink); }else{ document.open(); document.write('<link rel="stylesheet" href="' + cssFile + '" type="text/css">'); document.close(); } } よろしくお願いします。

専門家に質問してみよう