Excel VBA 質問スレ Part68

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ dbda-8BP0)
垢版 |
2020/08/30(日) 11:55:27.33ID:Oy/VxFsh0
!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
2020/09/19(土) 10:25:54.04ID:fwfEHGdP0
>>259
遅くなってしまいましてごめん。自分の欲しかった情報がこれで取れる
事ができました。

ありがと!
2020/09/19(土) 15:00:02.54ID:TN+kKyJDd
>>320
その判断は結構難しい。
今動いてるものは、そのままにしておくというのが通常だ。

Accessでレコードセットループで回してる最中にその値でもって別のレコードセット開いたりを7、8回やって10分かけてデータ作ってるプログラムが有るんだけど、コレ、クエリ1つで出来るんじゃね?と思って試しに作ったら一瞬で出来る。

それでも、正式に変更することになるかと言えばならない。
こっちだってその辺は分かってる。
何かの時に、きちんと作り直しましょうという話になるまで置いとくもんで、むしろそんな話にならずにずっ―とそのままというのが殆ど。
2020/09/19(土) 15:56:27.98ID:nGfYM+wGM
>>322
なら
> でもcにbが代入されてそのままaにbが
> 代入されるとか思って書いてたらしく
> システムバグらせてそのままにしてたりとか
> テストどうしてたんだとか思うよねー
とか書くなよ
どうせ盛々で語ってるだけだろw
2020/09/19(土) 15:59:42.46ID:TN+kKyJDd
>>323
いやいや、俺はその人じゃないから。
2020/09/19(土) 16:24:18.56ID:oBjg4zik0
>>322
重要な変更とは別で、こまかい高速化や最適化として変更するんだよ
それができないなら他人のコードを悪くいってはいけない
2020/09/19(土) 18:06:32.97ID:kGiNzl5D0
そうかーみんなそんな具合に考えてるのかー
でも悪いけどその場でチャチャっと直すことはしないよ
もちろん上に話を通すのは当然だけど
こんなぐちゃぐちゃな行き当たりばったりのコード書いてんだから直すんなら他への影響調査の時間貰う
まぁ当たり前だよねー
2020/09/19(土) 18:37:26.04ID:e5zvgWAXM
>>324
本人でもないのに
> でもcにbが代入されてそのままaにbが
> 代入されるとか思って書いてたらしく
> システムバグらせてそのままにしてたりとか
> テストどうしてたんだとか思うよねー
に対して
> 今動いてるものは、そのままにしておくというのが通常だ。
って言うの?
アホの上塗りにしかなってないけど… w
2020/09/19(土) 18:39:28.33ID:DdZzGNwy0
>>319
実際にそういう動きをする言語もあるからな

>>325
それは開発方法とフェーズによる
いつでも好き勝手コード弄れるような環境ばかりではない
まあ、VBAではあまりないだろうけど
2020/09/19(土) 18:41:22.13ID:HTxR1ogMM
>>326
お前の会社のレベルが低いだけだろ
まあそんな会社にしかいられない自分を省みたほうがいいなw
2020/09/19(土) 20:51:03.26ID:kGiNzl5D0
>>329
ふーん
そっちの会社ではそういうの見つけたら
調べないでチャチャっと直しちゃうのかー
よっぽど優秀なんだねー
俺みたいな無能にはとても怖くて出来ないやーw
2020/09/19(土) 21:40:33.28ID:b3MmLDI3M
>>326
お前以外にチャッチャッと直すなんて言ってる奴いないんだけどw

レベルの話は
> こんなぐちゃぐちゃな行き当たりばったりのコード書いてんだから
の部分な
2020/09/19(土) 22:13:23.39ID:TN+kKyJDd
>>325
いや、そうじゃなくて…
そうか、確かにVBAはそれでメシ食ってる奴は少ないから分からんかもしれんな。

ウォーターフォールでやってて、プロジェクトの目的が決まってるのに、いくら高速化しても余計なことすれば怒られるのが当然なんだよ。
それが原因で不具合が出てみろ。
大変なことになるんだから。

確かに、思いつきでどんどん改変してく仕事も結構やったことある。
2020/09/19(土) 22:16:29.20ID:TN+kKyJDd
>>327
開発全般によくある話として言ったまで。
cとかbとかの話に参加したわけじゃない。

動いてるなら、触らないというのはよくあることだ。
2020/09/19(土) 22:21:26.21ID:TN+kKyJDd
>>328
確かに少ないかもね。
考えてみれば俺も今の職場で初めて。

でも他言語じゃよく聞く話だよな。
2020/09/19(土) 22:26:15.60ID:cNAZP0Op0
>>333
話の流れが読めないバカということはよくわかった
2020/09/19(土) 22:48:23.19ID:RlUx9i/e0
どんなに簡単な修正でも、思い込みやミスは誰にでもある
うっかりエンバグする可能性があるから、先方から高速化などの要求がない限りは動いてる物を勝手に修正はしないのが基本かなあ
2020/09/19(土) 23:01:33.58ID:Q45ivJBB0
修正するか確認してからじゃないとしないな
2020/09/20(日) 01:28:31.38ID:Hljg9CcL0
>>332
それは逆だ、今のコードが悪いかのを直したせいで不具合がおきるのは直し方が悪いせい
自分できちんと直す能力もない奴が今のコードが悪いとか語るなよ
2020/09/20(日) 01:34:05.40ID:Hljg9CcL0
というのは言い過ぎなのかもしれんな、直せる自信がないなら直さないでいいんじゃね
2020/09/20(日) 01:38:55.36ID:Hljg9CcL0
俺から見れば細かい変更もできない人が重要な処理を変更する方が不具合が起きるだろって思うが
2020/09/20(日) 03:34:03.51ID:G6tFT8m8M
なんで動いてるものの話になってるのかわからんけど元々の話は
> システムバグらせてそのままにしてたりとか
> テストどうしてたんだとか思うよねー
だから、修正ありきだろ
修正の手順はその組織で違うだろうけど
2020/09/20(日) 08:02:49.76ID:MxR9qqIJa
ここの会話見てると仕事してる時に戻ったみたいでイヤになる
2020/09/20(日) 08:29:09.75ID:lYpGB0SB0
技術的に可能(can)なのと
プロジェクトとして可能(may)なのはべつだって言ってるんだが

VBA使いを悪く言う気はないが
まともなプロジェクトでやってないから理解できないんだろうな
2020/09/20(日) 09:11:52.63ID:jB/qzKKfa
内製なら結構気軽に弄るもんだよ
俺は以前はSIにいて今は自社サービス兼社内SEだから両方の立場がわかるけど、
システムって君のような外の人が思ってるほど重要なものでも神聖なものでもない
2020/09/20(日) 09:13:39.89ID:WRa/xy2u0
だれも技術的に可能かどうかなんて言ってないのに意味不明なことを言い出してて笑う
2020/09/20(日) 10:58:42.70ID:uHe9qv/N0
企業や仕事がどういうものかを理解していない馬鹿ばっかりで草
2020/09/20(日) 11:39:55.26ID:bN/HvUsh0
内製でも気軽に弄らないなぁ
2020/09/20(日) 12:04:24.67ID:WRa/xy2u0
自分とか周りの数人しか使わないとかならリファクタリングで弄るケースもあるし全社レベルのシステムとかなら影響調査からってケースもあるわな
そのプログラムがおかしくなった時の影響度とかも関係するし
要はケースバイケース
2020/09/20(日) 16:05:38.71ID:Q2tD94P+d
>>338
>>339
先のAccessの話なら直せる自信ならある。
というか、ここにいる奴で俺が出来ないんだったら出来る奴はいないと思うぜ。
それぐらい自信ならある。

ただし、まとも奴なら誰でも言うがバグを出さない自信は無い。
2020/09/20(日) 16:13:52.61ID:WRa/xy2u0
ふと、

日本人のできません
韓国人のできます
中国人のできました

を信用しちゃダメ
って言うのを思い出した… w
2020/09/20(日) 16:52:11.86ID:qZo3Wq6A0
>>348
だよな、さすがに自分とか周りの数人しか使わないとかなら
時間見て許可取ってリファクタリングするわ
自分が作ったツールやシステムなら空き時間見て少しづつリファクタリングだな

さすがに全社レベルのシステムで勝手にリファクタリングはないな
そもそも許可取るのが大変
2020/09/20(日) 20:23:41.76ID:r+WJtgDsM
VBAの後継言語がExcelに標準搭載されると知識も勉強時間も無駄になる
と考えてしまいVBAの学習が捗らないのですが、どうしたらよいでしょうか
2020/09/20(日) 20:29:51.63ID:w1btmlsr0
開発する能力と言語の習熟は別と考えた方がいいと思うよ
弘法筆を選ばずって言うし
2020/09/20(日) 20:39:12.03ID:Q2tD94P+d
>>352
そんな風に考えたことは無いなあ。
その時に必要だから覚えるんだよ。
2020/09/20(日) 20:46:14.34ID:IR23Mwdta
VBAなんて勉強するもんじゃなくて使っていくうちにわかるもんだし
356デフォルトの名無しさん (アウアウエー Sadf-8NzO)
垢版 |
2020/09/20(日) 20:55:59.15ID:6QmidxOBa
セルの中身が
--------------------------
あああ325gsdsが|
aaaojgwe |
33333 |
|
いいksが |
bbb93502g |
^^^^^^^ |
|
|
888っふぁふぁ |
aaawopfjw |
f−bgんlsgさ |
-------------------------|
のような感じの際、「あああ325gsdsが」や「aaaojgwe」のように1行づつ取得する方法はあるでしょうか?
2020/09/20(日) 21:02:07.06ID:bN/HvUsh0
vblfで分割
2020/09/20(日) 21:04:12.62ID:w1btmlsr0
セル内の改行コードはCRとLFとCRLFがあるのでどれかに統一して
統一した改行コードでsplitすれば
2020/09/20(日) 21:09:38.60ID:ce1O3kmIH
VBAやっててもオブジェクト指向が全然身につかないんだけどどうしよう
2020/09/20(日) 21:30:48.40ID:Q2tD94P+d
>>358
セル内の改行はLFだよ。
キーボード入力ならの話だけど。
2020/09/20(日) 21:31:49.13ID:Q2tD94P+d
>>359
VBAとは別にオブジェクト志向に親和性のある言語勉強すれば?

それがVBAにも役に立つよ。
2020/09/20(日) 21:35:54.17ID:w1btmlsr0
>>360
よそからコピペしたりするとLF以外も混じるよ
念のため統一する方が安心
2020/09/20(日) 22:02:19.77ID:BARJaSzG0
>>359
オブジェクト指向を身につけるためにVBAをやっているのか?
2020/09/20(日) 22:16:21.98ID:ce1O3kmIH
>>361
>>363
フローチャートは書けても
オブジェクト指向というものがあるということがなんとなく判っていても
じゃあオブジェクト指向できっちり設計しようという発想が浮かばないというかまだ怖さがあるんだよね
MVCって言葉もネットサーフィンをして先週巡り合ったくらいの素人だから
とりあえず新たな設計手法を試そうと思っても
何に手をつければいいかわからん
2020/09/20(日) 22:48:07.21ID:lUm0Ft460
=EVALUATE()を使ったらマクロだよって保存するときに言われた。
見た目関数なのに実はマクロっていうものが他にどんなのがあるか知りたいんだけど、こういうのなんて言うの?
検索ワードが思い付かないんだけど知ってたら教えて。
2020/09/20(日) 22:53:39.67ID:Q2tD94P+d
>>364
いや、VBAはあまりオブジェクト志向とは親和性がないんだよ。
VBAそのものの根幹はオブジェクトそのものを扱うし親和性も有るんだけど、それで何かを作る時には俺はあまりオブジェクト志向で作らないな。

それでも、感覚的にピッタリ来るときもある。
そういう感覚の為にも他言語の経験が役に立つ。

でも、VBAでオブジェクト志向って上級者じゃないとピッタリ来ないんじゃないかな。
2020/09/20(日) 23:22:55.87ID:szIFBvS40
>>365
Excel 4.0 マクロ
2020/09/20(日) 23:26:29.37ID:lUm0Ft460
>>367
さんきゅー
2020/09/20(日) 23:28:59.95ID:bN/HvUsh0
>>358
crでセル内改行はしない
2020/09/20(日) 23:29:16.08ID:pX+ICxi/0
フレームワークどうするよ
2020/09/20(日) 23:30:38.40ID:szIFBvS40
そもそもVBAが古いMS-BASICの言語仕様をほとんどそのまま踏襲してるもんだからオブジェクト指向との親和性はあんまり高くない
まだVB.netの方が色々やりやすい
2020/09/20(日) 23:38:32.30ID:wTyEOUZY0
>>369
セルをアクティブにするとCRでも改行するらしいよ
自分はそういうよくわからない挙動に振り回されたく無いから変換するよ
2020/09/20(日) 23:40:59.31ID:XhiE7Cxv0
>>372
らしいよ
2020/09/20(日) 23:44:11.30ID:wTyEOUZY0
LFとCRLFが混在するのは確かめたよ
なので片方に寄せてる
CRも混ざる可能性はあるのでついでに処理してるよ
2020/09/20(日) 23:47:19.77ID:GTzW+qv5H
>>366
なるほどそうなんですね
別言語で勉強してみます
2020/09/20(日) 23:51:14.87ID:bN/HvUsh0
セル内で改行するとlfが入る
テキストファイルとかでcrlfで改行されたものをセルにコピペすればcrlfがそのまま貼り付けられるが、lf部分が改行されるだけでcrは無視される
377デフォルトの名無しさん (ワッチョイ 775f-VvsD)
垢版 |
2020/09/21(月) 23:04:27.19ID:lAfdaJg/0
もともとマック用のソフトウェアだから、改行コードが揃っていないんだ。
2020/09/22(火) 09:46:47.28ID:9vuxubOza
で、そのままの仕様で残すんだろ
2020/09/22(火) 09:47:44.43ID:9vuxubOza
変に直すと他で問題が起きるかもしれんし
2020/09/23(水) 18:03:19.32ID:a1crOWFAM
今開いてるエクセル3つを左右で3分割させるマクロとかありますか?
2020/09/23(水) 18:23:33.24ID:18wwGwYm0
表示→整列じゃだめなのか?
2020/09/23(水) 19:23:23.78ID:nN1KQy3b0
あるけど、マクロっていうかWindowsAPIで画面サイズ調整だろうな。
3画面用意する方が楽かも。
2020/09/23(水) 20:26:43.04ID:kiC/kEHG0
Windows.Arrange ArrangeStyle:=xlVertical
2020/09/23(水) 20:34:38.55ID:Dfniq8Ns0
>>381
ありがとう
>>383
本当にありがとう

馬鹿すぎる質問して親切に教えてくれて本当に感謝
教えてくれたコードの方を頂きます
3画面揃ったときについでに分割させたら良い動きしてくれました

めちゃくちゃ後付けですみませんが
これを一番右でこいつは真ん中とか
任意の配置は流石に無理ですか?
出来そうなら自分でも何とか調べてみます
2020/09/23(水) 21:30:49.65ID:kiC/kEHG0
>>384
できる
386デフォルトの名無しさん (ワッチョイ 126d-6H/P)
垢版 |
2020/09/23(水) 22:06:19.89ID:gKXTj3UI0
こういう馬鹿の特徴は、少し教えるとつけあがって自分で考えることもせずあれもこれもとねだること
少しは頭を使えよ
2020/09/23(水) 22:26:51.67ID:uvIhcfbN0
特徴っていうかこれいつもの人
2020/09/25(金) 20:09:48.08ID:48EvNsnc0
accdb   → 問題なく型指定出来る。
csv    → schema.iniで型指定出来る。
自シート → どうすんの? IMEX=1も利いたり効かなかったりで当てにならん。
2020/09/25(金) 21:07:06.86ID:1nrszLVg0
そういう報告はいらないです
2020/09/25(金) 21:36:41.69ID:WSuN06d1F
罫線の所属するセルについて質問です

セルの値を条件にして罫線の種類を変えようと考えているのですが、
隣合うセルの境界線はどちらのセルの罫線が優先されて表示されるのでしょうか?
よろしくお願いします
2020/09/25(金) 22:18:01.90ID:JBJKUwWVM
>>390
実験して報告よろしく
2020/09/25(金) 22:34:46.55ID:48EvNsnc0
後から指定した方だな。
思いっきり拡大すれば、線が2本引いてあるのが見えるのかと思ったが、そんなことはなかった。
ちなみに、ストIIで2人同時に投げ技をかけた場合、どちらが優先されるのかはランダムで50%/50%らしい。
2020/09/25(金) 23:34:29.90ID:3gugGrYy0
>>390
これ、たしか罫線の種類で、基本ごっつい順に優先順位があったはず
ついでに、セルの書式設定で罫線設定すると、隣のセルの罫線設定も消えたり変わったりする
2020/09/26(土) 11:57:49.22ID:aYgi9d/P0
太いほうだった(Excelばーじょん2016)
https://i.imgur.com/kfSAyHL.png

印刷境界とかは分けて認識されてるから、なんだかんだ自分のコードを検証したほうがいいな
2020/09/26(土) 13:23:27.50ID:aYgi9d/P0
あ、宣言とかしときながらシート指定するん忘れてやがる
2020/09/26(土) 19:01:46.19ID:J5kcfwi60
ワラタ
2020/09/26(土) 20:07:30.98ID:wDXyaCpN0
getElementBy飽きたんだけど、RPA的制御じゃなくて、htttp通信を駆使してどうにかする、みたいのない?
APIとか使えない古いシステムに対して。
2020/09/27(日) 07:29:13.82ID:KJpIeh7z0
htttp通信がわからんがセキュリティー的に問題起きるんじゃね
2020/09/27(日) 15:17:02.78ID:a7rnW+2W0
htttpは、ハイパー・トンマ・トンチンカン・タコ・( ´,_ゝ`)プッの略かな
2020/09/27(日) 15:27:50.06ID:o5RjmHqkd
>>397
アセンブラやりたいってこと?
というのと同じ話。
InternetExplorer.Applicationじゃ無くてもみんなgetElementBy使う。

こういう便利なものを放棄するならhtmlのソースを自前テキスト処理で頑張るしかないと思うが。

普通はmsxml2.xmlhttpとかでソース取得して、それをDocumentに入れてgetElemetsByだな。
2020/09/27(日) 17:34:22.53ID:V5qiYsAI0
>>397
その辺は自作ライブラリでビブラートに包めばOK
2020/09/27(日) 18:37:04.65ID:ZqjiPey8M
>>401

> >>397
> その辺は自作ライブラリでビブラートに包めばOK

震わせてどうすんのさ。オブラートだろって釣られた
2020/09/27(日) 18:40:59.82ID:6iq7bspN0
>>400
マジか!
xmlがどうとか、APIがないとダメなんだと思ってたわ。
2020/09/27(日) 18:44:20.59ID:6iq7bspN0
ん?
それだと、逆に何のためにGUI操作(IE制御)の方法があるの?
初心者用?
2020/09/28(月) 07:43:08.08ID:VRZutR0gd
>>403
勘違いしてる。
別のAPI使ってるということだ。
で、別のAPIにもgetElemetByが出てくると言ってる。
2020/09/28(月) 13:09:33.23ID:LAwWa5+y0
RPA的制御がなにかよくわからんが
getElementしたくなかったら、API利用してxml取得しろみたいな話を言われたんじゃないか
それでAPI使えないけどgetElementしない方法ないの?と

取得できるものがhtmlなら、すなおにgetElementしとけ 以上
ちなみにxmlだろうとhtmlだろうとcsvだろうと、それは多くの場合httpで取得してるだろうがな
2020/09/28(月) 15:51:42.57ID:m7hqrCGdM
>>402
オブラートに包んでもおかしくないか
普通ラップするとかカプセル化するとか言うんじゃ・・・

>>404
どれもhttp通信でデータを取得できる共通点があるだけで、目的はそれぞれ違う

IEクラスはブラウザを操作する為のコンポーネントの一部
mshttpクラスはIEがスクリプトでhttp通信をするためのコンポーネントの一部
WinHttpRequestクラスはWindowsがhttp通信をするためのコンポーネントの一部
(コンポーネントっていうのはプログラムの部品として使うのが想定されている小さいプログラムのこと)

それぞれ色んなシステムで使えるようにCOMインターフェースっていう取説のようなものが実装されていて、VBAはそのおかげで間借り出来てるだけ
どれもVBAの為だけに作ったプログラムではない

ちなみにIEクラスの利点として、ブラウザ上でjsが実行されているページにアクセスすることができる点がある
408デフォルトの名無しさん (スップ Sd32-PD9b)
垢版 |
2020/09/28(月) 16:26:17.24ID:gMLgNw+wd
それをVBAでやる意味は何?
もっと他に簡単に出来る言語でやれは?
409デフォルトの名無しさん (ラクッペペ MMde-T5KC)
垢版 |
2020/09/28(月) 16:37:22.01ID:oE/worxcM
結果をexcelで扱うならVBAが最適では?
2020/09/28(月) 18:37:13.13ID:jqaTJ4CpM
CSVで吐いてExcelで開くだけだろう
2020/09/28(月) 19:21:37.82ID:JyFvX52s0
あーい
あーい
ああああーい
2020/09/28(月) 21:25:16.14ID:d76PIxro0
質問させていただきます

ユーザーフォームのテキストボックスにフォーカスがあたってる(入力状態)でwindowsのデスクトップがアクティブもしくは他アプリケーションがアクティブを検知することはできますでしょうか?
タッチパネルなどでユーザーフォーム外をタッチしてしまった時を検出したいです。
できるのであればご教授願いたい…
413デフォルトの名無しさん (ワッチョイ b35f-OzOo)
垢版 |
2020/09/29(火) 00:06:40.59ID:bEee4vhd0
Windowオブジェクトにどんなプロパティがあるんだっけ
2020/09/29(火) 00:29:27.68ID:zU8eGPuC0
フォームのdeactivateイベント拾ってテキストボックスのフォーカス状態見て処理するとかどうかな
2020/09/29(火) 00:32:40.28ID:zjqvAHva0
deactivateは用途が違う
2020/09/29(火) 00:49:54.82ID:Iz7+ZlTk0
HTML, XML, CSV などのスクレイピングなら、
Ruby で、Nokogiri, Selenium Webdriver などが簡単

curl, wget でも、ファイルをダウンロードできるし

Rubyで、nokogiri, curl を使った例

require 'nokogiri'

html = `curl http://www.example.com/`

doc = Nokogiri::HTML( html )

elements = doc.css( "h1" )
puts elements.first.content #=> Example Domain
417デフォルトの名無しさん (ワッチョイ 23e6-T5KC)
垢版 |
2020/09/29(火) 06:58:50.11ID:iE38wEdU0
外部プロセスの起動、待機、出力の取り込みまで実装してくださいよ
2020/09/29(火) 09:56:21.75ID:UZS7qkIf0
Rubyの自動運転は使いやすかったけど
早々にサポート切られたから印象悪い
2020/09/29(火) 11:55:53.23ID:NIgnBYPca
>>413
調べて見ましたがそれっぽいものは発見できませんでした…

>>414
>>415さんのおっしゃる通りブックやユーザーフォームのDeactivateイベントでは機能しませんでした。
2020/09/29(火) 23:34:39.45ID:Rcn+G4xKd
VBAでやる意味?
VBA以外だとアホな操作が必要だぞ。

1.Excelを閉じる。
2.他言語で実行。
3.csvをExcelで開く。

全くアホらしい。
運用についての考え方がまるで違う。

他言語でやる場合ってのはバッチ処理なのか?
それしか無いのか?
そういうブツ切りでデータ加工していくというなら寧ろExcelなんぞ使わん。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況