|
いつもお世話になっております。 InternetExplorerで印刷したいのですが、うまく一枚に収まりません。 CREATEOLEOBJ("InternetExplorer.Application")でcomを使うのだろうと思いますが、 Excelのように資料も余りなく、「ExcelConst.uws」みたいなのもないので、 困っています。 実際には、「縮小して印刷」・「用紙の変更」をしたいのですが、どうすれば良いのでしょうか? ご教授いただけましたら幸いです。
|
No.2050 2016/01/19(Tue) 23:34:12
|
☆ Re: InternetExplorerで印刷書式の操作 / stuncloud |
|
|
sckey(id, VK_CTRL, VK_P) で印刷ダイアログを開いて、それを操作すれば良いのでは
|
No.2051 2016/01/20(Wed) 11:06:59
|
|
☆ Re: InternetExplorerで印刷書式の操作 / sen |
|
|
ありがとうございます。 sckey(id, VK_CTRL, VK_P)はうまくいきます。 ただ、希望は下記のような感じで、左の項目を選択して、メインのところだけ右端をきれずに印刷するのを繰り返したいのです。(実際は20くらい繰り返します。) 実際には、 ?@メインを選択→これがすでにうまくいきません。 ?Actrl+aで文字を選択→上のツールバーが灰色になります。 ?B印刷プレビューを実行 ?C選択されたフレームのみを印刷するを選択 ?D印刷 それでもぴったりこない場合は、用紙も変更 a4→a3 ?E書式設定 ?F用紙の選択 それを繰り返したいのですが、?@?Aから止まるのです。
いかがなものでしょうか?
Public IE IE = CreateOLEObj("InternetExplorer.Application") IE.Visible = True setOleEvent() IE.Navigate("http://webdb-tapita.appspot.com/login.py") BusyWait() IESetData(IE,"demo","cid") IESetData(IE,"demo","user") IESetData(IE,"demo","passwd") IELink(IE,"「たぴた online」のデモ") BusyWait() IESetData(IE,True,"","ログイン") BusyWait() IELink(IE,"メニュー") BusyWait() IELink(IE,"固定資産DB(サンプル)") BusyWait()
dim 一覧[1] = "資産一覧","リース一覧"
for i = 0 to length(一覧) - 1 IELink(IE,一覧[i]) BusyWait() id = GETID("たぴた - Internet Explorer", "IEFrame", -1) CTRLWIN(id, MAX) CTRLWIN(id, ACTIVATE) sckey(id, VK_CTRL, VK_P) msgbox(一覧[i]) next
// OleEvent(IE); IE.Quit() // OleEventクリア & IE終了
//------ DEF_DLL SendMessageA(Hwnd, Long, Long, Dword): bool: user32 CONST WM_ACTIVATE = $06 Public Pub_url, Pub_docc, Pub_BeforNav_cnt, Pub_DocComp_cnt, Pub_inp_flg Procedure BusyWait() Sleep(0.3) tm = GetTime() repeat ifb GetTime() - tm > 90 // TimeOut Pub_docc = ""; Pub_BeforNav_cnt=0; Pub_DocComp_cnt=0 IE.Navigate(Pub_url) tm = GetTime() endif Sleep(0.2) ifb Pub_inp_flg Pub_inp_flg = False continue endif if IE.busy then continue if Pub_url = "" then break // No read if (Pos("*"+Pub_url+"*",Pub_docc)) or (Pos("*"+IE.LocationURL+"*",Pub_docc)) or (Pub_BeforNav_cnt<=Pub_DocComp_cnt) then else continue errflg = False if IE.document.title = "503 Unavailable" then errflg = True if IE.document.title = "Service Unavailable" then errflg = True if IE.document.title = "503 Service Temporarily Unavailable" then errflg = True ifb errflg Sleep(90) // 503: Wait&Retry tm = 0 continue endif Sleep(0.3) until ! Pub_inp_flg Pub_url=""; Pub_docc=""; Pub_BeforNav_cnt=0; Pub_DocComp_cnt=0 SendMessageA(IE.Hwnd, WM_ACTIVATE, 0, 0) Fend Procedure setOleEvent() OleEvent(IE, "DWebBrowserEvents2", "BeforeNavigate2", "fucBeforNav") OleEvent(IE, "DWebBrowserEvents2", "DocumentComplete", "fucDocComp") OleEvent(IE, "DWebBrowserEvents2", "OnQuit", "fucQuit") Pub_url=""; Pub_docc=""; Pub_BeforNav_cnt=0; Pub_DocComp_cnt=0; Pub_inp_flg=False Fend Procedure fucBeforNav() ifb (Pos("javascript:",""+EVENT_PRM[1])=0) and ("about:blank"<>""+EVENT_PRM[1]) if Pub_url="" then Pub_url = ""+EVENT_PRM[1] Pub_BeforNav_cnt = Pub_BeforNav_cnt + 1 endif Pub_inp_flg = True Fend Procedure fucDocComp() ifb (Pos("javascript:",""+EVENT_PRM[1])=0) and ("about:blank"<>""+EVENT_PRM[1]) Pub_docc = Pub_docc + "*"+EVENT_PRM[1]+"*" Pub_DocComp_cnt = Pub_DocComp_cnt + 1 endif Pub_inp_flg = True Fend Procedure fucQuit() ExitExit Fend
|
No.2052 2016/01/21(Thu) 00:27:07
|
|
☆ Re: InternetExplorerで印刷書式の操作 / stuncloud |
|
|
>?@メインを選択→これがすでにうまくいきません。
資産一覧とリース一覧リンクのhrefを取得しておいて、ie.navigate()でそれぞれのメイン部分だけ直接開けばフレームに悩まされることはなくなります ----------------------- dim 一覧[1] = "資産一覧","リース一覧" hashtbl url
links = ie.document.frames.item("FrMenu").document.getElementsByTagName("a")
for link in getoleitem(links) for text in 一覧 if link.innerText = text then url[text] = link.href endif next next
for k in url ie.navigate(url[k]) // 資産一覧、リース一覧のメインページだけを順番に開く BusyWait() ie.ExecWB(6, 0) // 印刷ダイアログを出す 印刷id = getid("印刷")
// ここで印刷ダイアログを操作
next -----------------------
印刷ダイアログはプリンタによって画面が違ったりするので、そこの操作に関しては試行錯誤してもらうしかありません
|
No.2053 2016/01/21(Thu) 10:48:57
|
|
☆ Re: InternetExplorerで印刷書式の操作 / sen |
|
|
狐につままれたみたいですが、イメージ通りです。 すごく可能性が広がりました。 物凄いものを教えていただきありがとうございます。
|
No.2069 2016/01/23(Sat) 13:26:17
|
|