[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2ch.scのread.cgiへ]
Update time : 10/02 16:58 / Filesize : 123 KB / Number-of Response : 456
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part68



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

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もいいかもね






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<123KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef