1 名前:デフォルトの名無しさん [2020/08/30(日) 11:55:27.33 ID:Oy/VxFsh0.net] !extend:checked:vvvvv:1000:512 ↑同じ内容を2行貼り付ける ExcelのVBAに関する質問スレです コード書き込みや作成依頼もOK ※前スレ Excel VBA 質問スレ Part67 https://mevius.5ch.net/test/read.cgi/tech/1593104489/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
401 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 17:34:22.53 ID:V5qiYsAI0.net] >>397 その辺は自作ライブラリでビブラートに包めばOK
402 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 18:37:04.65 ID:ZqjiPey8M.net] >>401 > >>397 > その辺は自作ライブラリでビブラートに包めばOK 震わせてどうすんのさ。オブラートだろって釣られた
403 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 18:40:59.82 ID:6iq7bspN0.net] >>400 マジか! xmlがどうとか、APIがないとダメなんだと思ってたわ。
404 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 18:44:20.59 ID:6iq7bspN0.net] ん? それだと、逆に何のためにGUI操作(IE制御)の方法があるの? 初心者用?
405 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 07:43:08.08 ID:VRZutR0gd.net] >>403 勘違いしてる。 別のAPI使ってるということだ。 で、別のAPIにもgetElemetByが出てくると言ってる。
406 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 13:09:33.23 ID:LAwWa5+y0.net] RPA的制御がなにかよくわからんが getElementしたくなかったら、API利用してxml取得しろみたいな話を言われたんじゃないか それでAPI使えないけどgetElementしない方法ないの?と 取得できるものがhtmlなら、すなおにgetElementしとけ 以上 ちなみにxmlだろうとhtmlだろうとcsvだろうと、それは多くの場合httpで取得してるだろうがな
407 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 15:51:42.57 ID:m7hqrCGdM.net] >>402 オブラートに包んでもおかしくないか 普通ラップするとかカプセル化するとか言うんじゃ・・・ >>404 どれもhttp通信でデータを取得できる共通点があるだけで、目的はそれぞれ違う IEクラスはブラウザを操作する為のコンポーネントの一部 mshttpクラスはIEがスクリプトでhttp通信をするためのコンポーネントの一部 WinHttpRequestクラスはWindowsがhttp通信をするためのコンポーネントの一部 (コンポーネントっていうのはプログラムの部品として使うのが想定されている小さいプログラムのこと) それぞれ色んなシステムで使えるようにCOMインターフェースっていう取説のようなものが実装されていて、VBAはそのおかげで間借り出来てるだけ どれもVBAの為だけに作ったプログラムではない ちなみにIEクラスの利点として、ブラウザ上でjsが実行されているページにアクセスすることができる点がある
408 名前:デフォルトの名無しさん [2020/09/28(月) 16:26:17.24 ID:gMLgNw+wd.net] それをVBAでやる意味は何? もっと他に簡単に出来る言語でやれは?
409 名前:デフォルトの名無しさん [2020/09/28(月) 16:37:22.01 ID:oE/worxcM.net] 結果をexcelで扱うならVBAが最適では?
410 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 18:37:13.13 ID:jqaTJ4CpM.net] CSVで吐いてExcelで開くだけだろう
411 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 19:21:37.82 ID:JyFvX52s0.net] あーい あーい ああああーい
412 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 21:25:16.14 ID:d76PIxro0.net] 質問させていただきます ユーザーフォームのテキストボックスにフォーカスがあたってる(入力状態)でwindowsのデスクトップがアクティブもしくは他アプリケーションがアクティブを検知することはできますでしょうか? タッチパネルなどでユーザーフォーム外をタッチしてしまった時を検出したいです。 できるのであればご教授願いたい…
413 名前:デフォルトの名無しさん [2020/09/29(火) 00:06:40.59 ID:bEee4vhd0.net] Windowオブジェクトにどんなプロパティがあるんだっけ
414 名前:デフォルトの名無しさん mailto:sage [2020/09/29(火) 00:29:27.68 ID:zU8eGPuC0.net] フォームのdeactivateイベント拾ってテキストボックスのフォーカス状態見て処理するとかどうかな
415 名前:デフォルトの名無しさん mailto:sage [2020/09/29(火) 00:32:40.28 ID:zjqvAHva0.net] deactivateは用途が違う
416 名前:デフォルトの名無しさん mailto:sage [2020/09/29(火) 00:49:54.82 ID:Iz7+ZlTk0.net] HTML, XML, CSV などのスクレイピングなら、 Ruby で、Nokogiri, Selenium Webdriver などが簡単 curl, wget でも、ファイルをダウンロードできるし Rubyで、nokogiri, curl を使った例 require 'nokogiri' html = `curl www.example.com/` doc = Nokogiri::HTML( html ) elements = doc.css( "h1" ) puts elements.first.content #=> Example Domain
417 名前:デフォルトの名無しさん [2020/09/29(火) 06:58:50.11 ID:iE38wEdU0.net] 外部プロセスの起動、待機、出力の取り込みまで実装してくださいよ
418 名前:デフォルトの名無しさん mailto:sage [2020/09/29(火) 09:56:21.75 ID:UZS7qkIf0.net] Rubyの自動運転は使いやすかったけど 早々にサポート切られたから印象悪い
419 名前:デフォルトの名無しさん mailto:sage [2020/09/29(火) 11:55:53.23 ID:NIgnBYPca.net] >>413 調べて見ましたがそれっぽいものは発見できませんでした… >>414 >>415 さんのおっしゃる通りブックやユーザーフォームのDeactivateイベントでは機能しませんでした。
420 名前:デフォルトの名無しさん mailto:sage [2020/09/29(火) 23:34:39.45 ID:Rcn+G4xKd.net] VBAでやる意味? VBA以外だとアホな操作が必要だぞ。 1.Excelを閉じる。 2.他言語で実行。 3.csvをExcelで開く。 全くアホらしい。 運用についての考え方がまるで違う。 他言語でやる場合ってのはバッチ処理なのか? それしか無いのか? そういうブツ切りでデータ加工していくというなら寧ろExcelなんぞ使わん。
421 名前:デフォルトの名無しさん [2020/09/30(水) 00:00:14.29 ID:BPaZHsLq0.net] >>407 jsしたかったらIEするしかないのね。 今時のHPほぼ全滅じゃん。
422 名前:デフォルトの名無しさん mailto:sage [2020/09/30(水) 00:36:25.50 ID:5bnpK3a00.net] >>419 WINAPIでポーリング https://i.imgur.com/NQMR2Km.png
423 名前:デフォルトの名無しさん mailto:sage [2020/09/30(水) 06:50:20.08 ID:RkFeWfqX0.net] イルカのカイル
424 名前:デフォルトの名無しさん [2020/09/30(水) 16:18:36.41 ID:7F4wikGt0.net] >>419 そのマルチタスク、マルチウィンドウを否定したい理由は何なの?
425 名前:デフォルトの名無しさん mailto:sage [2020/09/30(水) 16:57:41.88 ID:QOxpj5qw0.net] >>424 フォームのテキストボックスに機器の計測値が入るようになっており テキストボックスにフォーカスがあたってない状態で計測値が送られてくると値が取れないのでおじーちゃんたちにも気づくようにフォーカスが離れた時に警告ユーザーフォームを出したいのです。他アプリケーションなどを立ち上げる事も想定されます。 >>422 情報ありがとうございます 画像の通りやってみましたがイルカさんは働いてくれませんでした…
426 名前:デフォルトの名無しさん mailto:sage [2020/09/30(水) 20:43:21.94 ID:2p9V72Q+M.net] >>425 アホとしか言えんわ そもそも設計が間違えてる
427 名前:デフォルトの名無しさん mailto:sage [2020/09/30(水) 21:46:10.98 ID:d9KXZKY60.net] >>425 値を入れる部分を直せよ
428 名前:デフォルトの名無しさん mailto:sage [2020/09/30(水) 22:51:09.04 ID:wQcBlxXT0.net] RPAとか使ったらこんなおぞましいものができたりするのかな? でも普通はExcelぐらいサポートしてるよな。。。
429 名前:デフォルトの名無しさん mailto:sage [2020/09/30(水) 23:05:33.83 ID:FnwBo45S0.net] むしろRPA向きの案件だと思う
430 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 01:07:42.33 ID:lGabW6tFM.net] >>425 > フォームのテキストボックスに機器の計測値が入るようになっており wの前にデータ取得しとるわなw >テキストボックスにフォーカスがあたってない状態で計測値が送られてくると値が取れない wそんな業務データを取りこぼすとか意味不明w >のでおじーちゃんたちにも気づくように wなんだ?老害か?w
431 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 01:18:01.34 ID:eVzeZjSn0.net] 意味がわからないなら黙ってればいいじゃない
432 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 07:38:17.90 ID:v/kjpRq5M.net] 業務用ツール作るのってホント大変よな…… 使いたい人向けに配信するんじゃなくて、使わされる人に使ってもらうツールだからどんなに優しいUIにしても平気で想像を上回るイレギュラーな操作して動かなくなった!ポンコツめ!みたいなクレーム出してくる人もいるし 単純に新しい物を使いたくないからってワザとメチャクチャな操作したりもしてるんだろうけど ツールを要求してくる上の人達は現状の環境で対応出来るようにしたいからExcelのマクロでどうにかしてよ!とか言ってくるし、VBAはなんでも出来る魔法のツールだと思ってるし 長々と愚痴ってスマンな スレチだよな
433 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 07:49:06.10 ID:H0TKMoBwd.net] Windowsの標準のユーザーインターフェイスを意識しないと、使いやすいと思ったものが結局つかいにくくなる。 フォーカスがあたってなくても計測値が取れるように作るという発想が無いのが厳しい。 そんなこと出来ないなら根本から違うユーザーインターフェイスを採用すべき。 こういう処理でユーザーに何かさせる必要は無い筈。
434 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 10:04:49.32 ID:+ML6JMtp0.net] 初心者がツール作るように言われたら大変なんだろうな、俺は大変だと思ったことないが
435 名前:デフォルトの名無しさん [2020/10/01(木) 10:34:23.83 ID:6DJ6J+GDM.net] タブレットでバーコードリーダーのキーボード入力モードでも使ってるんだろうなと想像 COMで操作できるライブラぐらい付いているだろうからそれ使えば解決
436 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 16:54:34.45 ID:Ld5Ou2iR0.net] >>435 まさにおっしゃる通りで作業進捗をバーコードで管理するものを作りました。 次は工程内のチェックシートと計測値などのトレーサビリティです禿げそう とりあえず計測器具も試用で借りてる段階なのでメーカーにライブラリの事聞いてみます…
437 名前:デフォルトの名無しさん [2020/10/01(木) 17:12:49.41 ID:W6bAQtLIM.net] >>431 知ってた
438 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 18:58:16.32 ID:9Yax9dsIa.net] >>434 かっけぇ
439 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 21:36:53.69 ID:dM4yb7Ap0.net] 罫線で囲われてたり、色塗りされたりするセルをマウスでドラッグ移動した時移動した場所は何もなくるなるのを罫線のみを残す方法ってありませんか? 簡単に言うと罫線で作った表の形式を保持したい。
440 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 21:50:29.37 ID:5ESnmk3DM.net] >>439 テンプレートを隠しシートに保存しておいて、 ボタン押下で書式をコピペしてくるってどう?
441 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 22:00:05.10 ID:gLHdGUpR0.net] >>439 切り貼りじゃなくてコピーアンドペーストした後に元のところの数式と値をクリア(右クリック+N)すればよいのでは
442 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 23:26:28.37 ID:ywfP0KwV0.net] changeイベントで常に罫線引くことしか思いつかん
443 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 23:48:07.63 ID:2OGRwJxy0.net] 移動できないようにする
444 名前:デフォルトの名無しさん [2020/10/02(金) 01:42:30.77 ID:MWdBgx4Q0.net] セルをマウスでドラッグって何だよ? エクセルで将棋でもやるの?
445 名前:デフォルトの名無しさん [2020/10/02(金) 01:43:49.39 ID:ChxT/cO/0.net] >>425 それExcel VBAでやるものではない。 自分のやりたいようにやりたければ、Windows SDKでの開発をしてください。
446 名前:デフォルトの名無しさん [2020/10/02(金) 01:49:29.59 ID:ChxT/cO/0.net] >>439 そもそも手順というものを考えた方がいい。 移動する前の情報を移動先には持ってくるが、移動元にはその情報を適用しないのはなぜ?
447 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 10:09:18.16 ID:A7BNHAQE0.net] 指定したフォルダ内の全てのCVSファイルを配列に追記していき対のですが、コードを教えてください 配列の0列目(1次元目)にはそれぞれのCSVファイルのファイル名をいれたいです。 Sub Sptyou() Dim FolderPath As String, buf As String, TargetDate As String '■フォルダを指定する With Application.FileDialog(msoFileDialogFolderPicker) If .Show = 0 Then MsgBox "キャンセルされました。" Exit Sub End If FolderPath = .SelectedItems(1) End With '■指定されたフォルダ内の全てのCSVファイルを開いて、そのファイルA列からGH列を配列に入れていく ReDim BiforeArraybar(1, 190) As Variant
448 名前:447 mailto:sage [2020/10/02(金) 10:09:56.74 ID:A7BNHAQE0.net] つづき buf = Dir(FolderPath & "*.csv") Do While buf <> "" Open buf For Input As #1 'インプットモードでファイルを開く Line Input #1, TargetDate Do Until EOF(1) 'ファイルの終点まで Line Input #1, Tardt '開いたファイルを上から順に読み込んでいき、変数TargetDateに代入していく If Split(TargetDate, ",")(1) = "" Then Exit Do '配列に追記する ReDim Preserve BiforeArray(Ubound(BiforeArray) + 1 To ??, 1 To 190) = Sprit(TargetDate,",") Loop Close #1 buf = Dir() Loop End Sub
449 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 10:42:45.10 ID:cHoSzh9XM.net] ReDim Preserveで操作可能なのは最右端の次元だけだから2次元配列で1次元目に使いたいなら一旦反転させた状態で操作して出力時にWorksheetfunction.transpose使って吐き出す必要があるぞ いまいち最終目的が分からなかったから取り合えず読んでて気になった所だけ
450 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 10:56:02.65 ID:ooD45Zz30.net] Linux のcat なら、複数のファイルを連結できるけど
451 名前:デフォルトの名無しさん [2020/10/02(金) 12:25:22.61 ID:XdHW2/g2M.net] win dosならcopyで連結できるけど
452 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 12:29:54.55 ID:a296oIK60.net] >>448 内側のLoop内で Tardt ってのが気になった
453 名前:447 mailto:sage [2020/10/02(金) 13:32:21.66 ID:A7BNHAQE0.net] >>449 右端にファイル名を入れるにはどうしたらいいですか? それと、配列のUpperをどう設定したらいいですか?
454 名前:デフォルトの名無しさん [2020/10/02(金) 15:56:01.43 ID:7/1+1goB0.net] また馬鹿な質問者か。それともいつもの厚かましい馬鹿か?
455 名前:デフォルトの名無しさん [2020/10/02(金) 16:13:26.37 ID:XdHW2/g2M.net] 右端の次元と右端の列では話の次元が違うけどわざとやってんのかなー? excelなんだからとりあえずシートに格納すればいいと思うんだけどなー 配列に1行づつ追加するよりはやいんじゃね? VBは動的配列無いんだからパフォーマンス出すには頭を使わにゃいかんよ 行数をキーにしたDictionaryもいいかもね