21/05/25 12:48:01.06 mepUVc/i0.net
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付けるナリ
ExcelのVBAに関する質問スレナリ
コード書き込みや作成依頼もOKナリ
※前スレ
Excel VBA 質問スレ Part70
スレリンク(tech板)
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2:デフォルトの名無しさん
21/05/25 14:39:07.41 Eok9KjPbM.net
↑おつ
3:デフォルトの名無しさん
21/05/25 15:29:32.37 9esnpvbXF.net
>紙の表を目で追いながら画面を見ずにどんどん入力するとか普通にある
下手に補完機能とか発動するとうざいよな
4:デフォルトの名無しさん
21/05/26 13:42:07.91 LJxSJ8rb0.net
時々画面も見たほうがいいぞ
5:デフォルトの名無しさん
21/05/26 18:56:30.36 mkbiTVsAd.net
画像のような処理をするコードを書きたいのですが・・・
整理番号に対してアルファベットがランダムに振られており、それをまとめるというようなコードです。
ただし、まとめたい整理番号は行が飛び飛びになっており固定されております。
forやifなどを少しかじっただけのため、頑張ってみましたが全くできませんでした。
何卒宜しくお願いいたします。
URLリンク(i.imgur.com)
6:デフォルトの名無しさん
21/05/26 19:27:52.83 DrPaJmjh0.net
いつものあいつ
7:デフォルトの名無しさん
21/05/26 20:40:38.47 YzhdN1Yma.net
のんびりやろうぜ
8:デフォルトの名無しさん
21/05/26 20:43:32.54 FIJmCPPEH.net
>>5
法則がまったくわからん
9:デフォルトの名無しさん
21/05/26 20:57:38.79 mkbiTVsAd.net
>>5ですがウンコしてたら閃いてできました。でももしどなたか書いてくださってたら、参考のために見せていただけると嬉しいです。
>>8
整理番号に対してくっついているアルファベットを、重複削除して横向きに整頓したという感じです。
10:デフォルトの名無しさん
21/05/26 22:04:20.25 VymsA87rM.net
ID:mkbiTVsAdはとにかく繊維質と水分を十分に摂って山ほどウンコしろ
そうすればこのスレを必要とする事も無くなるだろ
11:デフォルトの名無しさん
21/05/26 22:11:44.89 XGTO2klA0.net
入力データは違うけど、Ruby で作ってみた
require 'csv'
tmp_hash = { }
input_ary = CSV.read( "input.csv" ) # 2次元配列
input_ary.each do | row | # 1行ずつ処理する
if tmp_hash.has_key? row[ 0 ] # 既に、その数字が存在すれば
# 文字列が存在しない時だけ、その文字列を追加する
tmp_hash[ row[ 0 ] ][ row[ 1 ] ] = true unless
tmp_hash[ row[ 0 ] ].has_key? row[ 1 ]
else
tmp_hash[ row[ 0 ] ] = { row[ 1 ] => true }
end
end
result_ary = tmp_hash.map do |num, hash|
ary = hash.map { |str, b_true| str }
[ num, *ary ] # 配列展開
end
# p result_ary # 2次元配列
# [["1", "A"], ["2", "B", "C"], ["3", "X"]]
csv_str = result_ary.map( &:to_csv ).join # 2次元配列を、CSV 文字列に変換する
print csv_str
出力
1,A
2,B,C
3,X
12:デフォルトの名無しさん
21/05/26 22:16:14.20 FIJmCPPEH.net
>>9
1と3は、整理前と整理後で同じ行にあるけど、2と4が上に移動してる理由がわからん
移動量も違うし
条件は全部文章で書いて
13:デフォルトの名無しさん
21/05/26 22:55:47.72 Ca/oJ0kCM.net
いつものあいつ=ruby馬鹿
14:デフォルトの名無しさん
21/05/26 23:30:39.65 CbYT3Zs7M.net
>>5
Dictioraryを使わずにデータを1列目~2列目、出力先を4列目以降であると仮定する
配列 = Range(Cells(出力先の1番上の行,4),Cells(出力先の1番下の行,4))
For i = LBound(配列,1) to UBound(配列,1)
For j = データの一番上の行 to データの一番下の行
If Cells(j,1).Value = 配列(i,LBound(配列,2) Then
If 配列(i,UBound(配列,2) <>″″ Then
ReDim Preserve 配列(LBound(配列,1) to UBound(配列,1),LBound(配列,2) to UBound(配列,2)+1)
End If
For k = LBound(配列,2) to UBound(配列,2)
If 配列(i,k) = Cells(j,1),Value Then
Exit For
Else If 配列(i,k) = ″″ Then
配列(i,k) = Cells(j,1),Value
End If
Next
Next
Next
ってやって出力するとか?
思いつきで適当にやったから動かなかったらゴメンね
15:デフォルトの名無しさん
21/05/27 01:00:26.94 hl6lLSzud.net
>>12
移動後の整理番号の位置は決まっているだけ という話なのですが... というかそれは書いてあるのですが
16:デフォルトの名無しさん
21/05/27 01:01:43.36 hl6lLSzud.net
>>14
おお ありがとうございます
参考にさせていただきます
>>11
このバカはなんですか?
17:デフォルトの名無しさん
21/05/27 08:26:53.22 f+HvaIKyM.net
>>5
ピボットテーブルでいいやん
18:デフォルトの名無しさん
21/05/27 11:03:53.72 hl6lLSzud.net
>>17
添付画像は簡略化してあるだけなので...
本当に画像みたいなデータしかないんだったらいいかもしれないですが...
19:デフォルトの名無しさん
21/05/28 11:25:16.55 EVw9ke/Wd.net
>>11
頭が悪いの?
大丈夫?
日常生活は遅れてる?
20:デフォルトの名無しさん
21/05/28 12:11:04.92 akPeanIUM.net
>>19
聞いても無駄
自覚できてないからずっとこんなこと続けてるんだろ
21:デフォルトの名無しさん
21/05/28 14:13:31.59 wSpOVLhu0.net
A列がKey、B列がItemが入っていたとして、一括でDictionaryに代入する方法はありますか
今はForで処理していますが、
For r = 1 To 10000
dic.Add Cells(r, 1), Cells(r, 2)
Next r
だと読み込みに時間がかかり、配列のほうが早いくらいです
22:デフォルトの名無しさん
21/05/28 15:04:21.04 TV0Jrg4dM.net
どう頑張っても配列のほうが速いよ
23:デフォルトの名無しさん
21/05/28 16:57:29.10 VcGAYAhXH.net
配列を経由してDicに入れると多少は速くなると思う
確認はしてない
Sub Macro1()
Dim Dic As Object
Set Dic = CreateObject("Scripting.Dictionary")
Dim aa()
aa = Range("A1:B10000")
For r = 1 To 10000
Dic.Add aa(r, 1), aa(r, 2)
Next
End Sub
24:デフォルトの名無しさん
21/05/28 17:29:35.83 ZW1biLGGa.net
そもそもDictionaryにRange型も入れられるんじゃないっけ?
だから「配列の方が速い」という使い方ならCellsの後にValue付けなきゃいかんのでは
25:21
21/05/28 18:05:19.20 wSpOVLhu0.net
>>23
ありがとうございます。
26:デフォルトの名無しさん
21/05/28 18:55:00.91 dVrlPf170.net
>>21
スピードを求めているの?
ならシートにSQL投げた方が速い場合もあるよ
格納場所はRecordsetになるけど
27:デフォルトの名無しさん
21/05/29 00:17:36.64 EOgZ8Zck0.net
>>24
それだと重複時に例外が出るメリットが生かせないのでは
配列でいいって言ってるから保証出来てるのかも知れないが
(最終的な目的次第では不要な可能性もあるけど)Dictionaryが必須だとしたら、
使用しない行を予めオートフィルターで弾いて読み込む行自体を減らすのがいいと思う
28:デフォルトの名無しさん
21/05/29 09:21:11.45 u1rl2gESM.net
>>23
配列を使うとセルへのアクセスが一万分の一なるね
29:デフォルトの名無しさん
21/05/29 12:21:19.40 tq3mFxPFH.net
>>27
非表示になってるセルもRange型一括だと配列に代入されてしまう
1つずつチェックしながらForで回すしかなくなるから、どっちが速いかなあ
30:デフォルトの名無しさん
21/05/29 12:22:00.64 tq3mFxPFH.net
>>28
2列あるから2万分の一だよ
31:デフォルトの名無しさん
21/05/29 17:06:38.14 7OwGsnto0.net
つかまずディクショナリに入れたいのはRange型なのかそのセルの値なのか
なんにしてもこの程度は一瞬で終わったけどな
32:デフォルトの名無しさん
21/05/29 21:19:22.31 nUzcb4+O0.net
>>26
シートにSQLはよく使うが、
数字が入ってると数字と判定されやすいの何とかならんかな。
IMEX=1も利かないときあるし。
(セルの書式設定で文字列にするのは全然効かん)
33:デフォルトの名無しさん
21/05/29 22:40:30.37 hG567TCp0.net
>>32
あー、あるあるだね
その辺はSQLの書きっぷりで例えば
数値として判断させるならケツに*1くっつけるとか
文字列としてならケツにブランクくっつけてやることで何とかなるけど確かにあまり綺麗な形とは言い難いかもね。
34:デフォルトの名無しさん
21/05/29 22:58:50.78 WsLgMeGM0.net
VBAのユーザーフォームについて、
プロパティウィンドウ上でフォントサイズを変更しようとした場合、
Fontの右側に出てくる[...]ボタンを押して、フォントウィンドウ上でサイズを選択するのが普通ですが、
ボタンを押すとなるとマウス操作が必要になります。
フォントサイズを変更する時に使えるキーボードのショートカットってないですか?
35:デフォルトの名無しさん
21/05/29 23:27:11.67 tq3mFxPFH.net
>>34
F4でプロパティウィンドウに移動、↓でフォントの行に飛んでからAlt+↓を押すとフォント選択ダイアログが開く
36:デフォルトの名無しさん
21/05/30 00:06:02.75 mvwOdKaH0.net
Alt+↓では開きませんでした。
ForeColor等のように、右側に出るボタンが ▼ の項目については、
Alt+↓で選択候補がプルダウンで表示されました。
これは知らなかったので、一つ知識が増えました。ありがとうございます。
37:デフォルトの名無しさん
21/05/30 00:29:48.27 WJGvMidO0.net
>>36
ただの馬鹿だろ
38:デフォルトの名無しさん
21/05/30 00:38:38.89 MeqMpkJCM.net
数が多いときはforで回してフォントサイズを変えた方が楽
39:デフォルトの名無しさん
21/05/30 00:54:31.57 G4EUHehCd.net
>>36
フォントが大量にインストールされてると、ダイアログが開くのに時間がかかる
ほかにも、PictureプロパティとかIconプロパティなんかの[...]ボタンもAlt+↓で押せるはずだから試してみて
それも開かないとなると、何かがおかしい
40:デフォルトの名無しさん
21/05/30 03:54:35.99 wQMimd0a0.net
ところがLinuxなら一瞬で開きます。
41:デフォルトの名無しさん
21/05/30 04:10:38.43 dB+xSga20.net
>>40
そういうことはubuntuでEXCELが使えるようになってから言おうね
42:デフォルトの名無しさん
21/05/30 04:22:57.14 wQMimd0a0.net
なんのために?
ベンダーロックインされてM$の奴隷になりたいの?
43:デフォルトの名無しさん
21/05/30 08:12:15.17 dB+xSga20.net
>>42
やっぱりあわしろ教信者の荒らしか
こいつらとRuby信者はわざわざ自分の巣から出張して来て無関係のスレ荒らすから分かり易い
EXCELが動かなきゃEXCEL VBA動かすことが出来ないだろ?
お前が来ているこのスレの名前を100回読み返してみようか。そうすれば多少頭に血の巡りが悪くても少しは理解出来るだろ
44:デフォルトの名無しさん
21/05/30 10:36:06.08 Qv4D53KHp.net
前スレでボロクソに言われた質問(↓)が解決しないので
再度投稿失礼します。
URLリンク(i.imgur.com)
在庫管理でクロス集計表を使ってるんだけど
配列で取り込んだデータをデータがあったセル位置に戻す時って
どう指定してあげればいいの?
【用途】
納期毎に設定される納品数を在庫から引いて
いつ欠品になるか知りたい
伝わるか分からないけど↓
使ってるフォーマット形式
縦列
部品名
在庫
横
納期
納品数
45:デフォルトの名無しさん
21/05/30 13:00:04.14 dinHe+wGM.net
Cells(1,2)=123
46:デフォルトの名無しさん
21/05/30 18:38:27.00 Jcut2Kf60.net
>>44
命綱なしで62階建てのビルの屋上からぶら下がり懸垂をすると閃くかもしれんぞ
保証はしないけど
47:デフォルトの名無しさん
21/05/30 18:55:32.31 XECinZnN0.net
わざわざVBA使わなくてもワークシート関数で出来そうだけど
48:デフォルトの名無しさん
21/05/30 19:13:48.00 jqEflkUS0.net
>>44
まるでまだ欠品していないみたいな書き込みだな
そんなことやるひまがあるならさっさと発注しとけよ
49:デフォルトの名無しさん
21/05/30 22:39:10.44 UG6QJe9S0.net
変数 = セルの範囲 を
セルの範囲 = 変数 と逆にするだけ
50:デフォルトの名無しさん
21/05/31 01:50:09.05 BNAesGOH0.net
>>49
そのセルの範囲の指定の仕方がいまいちピンと来ません...
51:デフォルトの名無しさん
21/05/31 02:41:09.27 dSNiA0NIM.net
>>50
2000ボルトの電気ショックでわかるようになるかもよ
52:デフォルトの名無しさん
21/05/31 07:47:27.27 mbhQyuQq0.net
>>50
配列の変数名をTgtAryとするならば
Range(Sheet1.Сells(LBound(TgtAry,1),LBound(TgtAry,2)),Sheet1.Сells(UBound(TgtAry,1),UBound(TgtAry,2)))
で範囲指定できないかな?
53:デフォルトの名無しさん
21/05/31 09:27:03.82 q4AGCTmE0.net
>>52
そいつはsubからend subまで書いてやらんと分からんやろ
54:デフォルトの名無しさん
21/05/31 11:04:15.17 siYzGVpEa.net
>>34
遅まきながら横からながら
マジありがとう! これ知らなかった! 心底欲しかった!
55:デフォルトの名無しさん
21/05/31 11:07:53.40 siYzGVpEa.net
>>54
△>34
◎>35
連投すまんアンカ間違った
56:デフォルトの名無しさん
21/05/31 20:55:53.72 WHx69Kzap.net
>>52
>>53
ありがとう!
ちょっと試してみます!
57:デフォルトの名無しさん
21/06/01 10:59:42.70 FQ8UQ8zIM.net
Workbook_Openで表の処理とその上書き保存(ActiveWorkbook.Save)を同時にこなしてるのですが、直後になぜか.savedがTrueになりません。
しかしその後もう一度手動でWorkboon_Openの中身を実行すると、今度はTrueになります。
上書き保存の可否を聞かれずにファイルを閉じたいのにいちいち聞かれて困っております。どうしたらよいのでしょうか?
58:デフォルトの名無しさん
21/06/01 11:40:20.38 5+ZhhpdnM.net
ひとまずOpenイベントの頭にStop書いてブレイクポイント作ったら開き直してイミディエイトウィンドウにDebug.Print Workbook.Savedって書いたら
F8押して、イミディエイトのDebug.Printの行末をクリックしてEnter、F8押して、イミディエイトのDebug.Printの行末をクリックしてEnter
ってやってみてもWorkbook.Saveの行でTrueになってないか見てみ?
59:デフォルトの名無しさん
21/06/01 13:01:26.91 FQ8UQ8zIM.net
>>58
Savedの行以降、確かにFalseからTrueになってるし、
Workbook_OpenのEnd Sub直前にStop入れてDebugで確認してもTrueでした。
なのに、End SubをまたぐとFalseになります。
60:デフォルトの名無しさん
21/06/01 13:02:39.34 FQ8UQ8zIM.net
>>59
× Savedの行
○ ActiveWorkbook.Saveの行
61:デフォルトの名無しさん
21/06/01 13:31:04.27 sclbkM2r0.net
>>57
こんな感じの参考になる?
URLリンク(officetanaka.net)
62:デフォルトの名無しさん
21/06/01 14:22:21.55 XqGhUQMKa.net
Openの時はActiveじゃないんじゃない
63:デフォルトの名無しさん
21/06/01 15:42:35.04 5+ZhhpdnM.net
ActiveWorkbookじゃなくてThisWorkbookの方が確実ではあると思うけどEnd Subを跨いだ瞬間に変更フラッグが立ってるのがいまいち分からんなぁ
64:デフォルトの名無しさん
21/06/01 16:11:11.07 Mb6qCGemH.net
裏で動かすマクロは、常にオブジェクトを明示しないとバグの元になる
ActiveSheetとか使うと高確率で誤爆する
65:デフォルトの名無しさん
21/06/01 17:18:36.32 Oa7oH/5MM.net
ThisWorkbookにしたり、わざわざSavedにTrueを代入してやっても、End sub をまたぐとやはりFalseになってる……
皆さん指摘の通りなんかブックの指定にミスがあるかもしれないので、もう少し色々試してみます
66:デフォルトの名無しさん
21/06/01 17:24:45.60 5+ZhhpdnM.net
まずないとは思うがSaveの前にDoEvents挟んでみるとかはどう
67:デフォルトの名無しさん
21/06/01 17:57:51.45 Mb6qCGemH.net
わからない時はdebug.printしまくる
68:デフォルトの名無しさん
21/06/01 18:14:30.31 XqGhUQMKa.net
Openイベントが終わったの後に変更があるとか?
例えばピボットの「開いた時に更新する」とか
69:デフォルトの名無しさん
21/06/01 18:44:16.50 sclbkM2r0.net
>>65
だから>>61のリンク先に書いてあるように
Application.Displayalerts使っちゃダメなの?
70:デフォルトの名無しさん
21/06/01 19:21:51.78 lbMsn5ZmM.net
VBAでIEを操作したい。エレメント内のonclickにJavaScriptが設定されてて、引数がthisなんだ。これはどういうコードかいたらJavaScriptがうごく?
71:デフォルトの名無しさん
21/06/01 19:24:00.82 vHFZ5Ijm0.net
いまだにIEとか
72:デフォルトの名無しさん
21/06/01 19:45:29.62 J2N8rWTYM.net
スクリプト動かす必要があるなら泥沼だからやめとけ
SeleniumかRPAかなんかでクリックをエミュレートしろ
73:デフォルトの名無しさん
21/06/01 20:08:45.76 Mb6qCGemH.net
>>70
JacascriptそのままNavigateでたいがい動くけど、実際に試してみた?
74:デフォルトの名無しさん
21/06/01 20:57:47.91 e0ELXQMnM.net
VBAでChromeを動かす方法はありますか?
75:デフォルトの名無しさん
21/06/01 22:41:37.93 u+h0cgO6d.net
VBA Chromeでググれば色々でるが
お前がどう動かしたいか答えるのはエスパーしか無理
76:デフォルトの名無しさん
21/06/01 23:08:53.66 h5EIZiJKM.net
Chrome使っていいんだったらエクステンション作ればよくね
VBAに固執する意味がない
77:デフォルトの名無しさん
21/06/02 10:29:31.20 6cAiGaxYd.net
A列は途中で未記入の行は無し。B列以降は行によって列範囲は不明。途中の抜けは無し。この条件で一番右まで記入されている列は何列目なのかを知る方法をご教示願います。
この列の右に別の列を追加したいのです。
78:デフォルトの名無しさん
21/06/02 11:11:55.45 Xo9eImhQH.net
>>77
UsedRange.Column
79:デフォルトの名無しさん
21/06/02 11:20:06.26 Kwk6Ddry0.net
VBAでIE動かしたいっていうのは社内システムの操作じゃね
自動化しようにもそれしか選択肢がないっていうケース
80:デフォルトの名無しさん
21/06/02 11:27:04.16 Xo9eImhQH.net
そういうのは末端の社員が勝手に自動化して楽しようとしてるケースに限られる
そうでなければシステム部とか管理部がちゃんと対応してくれるはずだし
81:デフォルトの名無しさん
21/06/02 11:35:10.46 Kwk6Ddry0.net
末端しかこんなところにはこねーよ
82:デフォルトの名無しさん
21/06/02 11:40:00.72 IWT/q5/E0.net
IEが2022/6/15にサポート終了する件なんだけど、VBAのIE操作もできなくなるの?
83:デフォルトの名無しさん
21/06/02 11:40:36.31 y9OF8J1M0.net
>>74
これでいいんじゃね?
URLリンク(note.com)
84:デフォルトの名無しさん
21/06/02 12:15:32.36 Xo9eImhQH.net
>>82
サポートの終了と使用の禁止はまた別の話だと思うけどなあ
サポート外のWinXPが起動不可能になったとか聞かないし
85:デフォルトの名無しさん
21/06/02 12:23:59.65 IWT/q5/E0.net
>84
そうだとありがたいんだよね。
ただ記事で「2022年6月16日になっても、iexplore.exeは削除されないものの、アクセスしようとするとIE11は起動せずEdgeにリダイレクトされる」って書いてあったから不安なんだ
86:デフォルトの名無しさん
21/06/02 13:20:52.87 JznBaFAoM.net
createObjectで呼び出すんじゃないの?
87:デフォルトの名無しさん
21/06/02 16:05:40.28 Xo9eImhQH.net
アプリは起動できなくされるけど、オブジェクトはさわれると予想
MS-Officeがもともとそういう構造だったし
88:デフォルトの名無しさん
21/06/02 16:34:22.01 5rGltuVI0.net
ieが来年サポート終了するからchromeとseleniumで動かして見ようと思ったら
webdriverが若干古いのしか公開されてなくて詰んだ
頻繁に更新するchromeをどうやって制御すりゃいいんだよ…
89:デフォルトの名無しさん
21/06/02 23:09:59.70 qivQYfz/r.net
すみません、教えてください
配列の一部の最大値を取得する方法ってないでしょうか?
例えば二次元配列で
a(1,1)=1
a(2,1)=2
a(3,1)=3
‥
a(100,1)=100
という配列があったとして、a(10,1)~a(20,1)の間の最大値を出す方法です
for文で調べたい配列すべて調べて最大値を出す方法しか思い付かないのですが、他に方法はないでしょうか?
90:デフォルトの名無しさん
21/06/02 23:12:53.59 GkUPJJQl0.net
それはギャグで言ってるのか
91:デフォルトの名無しさん
21/06/02 23:43:12.68 y9OF8J1M0.net
Rubyなら何ちゃらかんちゃらの前置きだろ
92:デフォルトの名無しさん
21/06/02 23:59:28.51 6j/qqwIU0.net
>>89
全部の配列を一旦シートにコピーして関数つかえばいいんじゃね
93:デフォルトの名無しさん
21/06/03 00:15:46.47 bA/gzbc70.net
>>89
死ね
94:デフォルトの名無しさん
21/06/03 02:19:06.04 Ers5yK+g0.net
>>88
Ruby には、Webdriver を自動的にダウンロードする、モジュール・gem がある。
タスクランナーみたいなもの
ブラウザの起動前に、ブラウザのバージョンを調べて、
Webdriver のバージョンが、それと一致しない場合、
それと一致するWebdriver をダウンロードしてから、処理を開始する
95:デフォルトの名無しさん
21/06/03 03:06:46.55 WSKbBpAyd.net
まともな企業のLANだとネットアクセスとかダウンロードに制限かかってそう
96:デフォルトの名無しさん
21/06/03 10:13:44.82 oKNqyVQK0.net
臀痛は5ch繋がらないω
97:デフォルトの名無しさん
21/06/03 11:26:30.81 jnApLDzu0.net
>>95
これな
Rubyで使ってる環境はその辺のとこ甘いのかも知れないな
98:デフォルトの名無しさん
21/06/03 11:51:09.60 B6Wkxzx6M.net
申請なしに何かをインストールする事も出来ないし、申請しても通らないから業務の効率化ってなるとソフトウェア開発の部署に発注するかVBAで作る以外の選択肢がない
99:94
21/06/03 12:27:51.20 Ers5yK+g0.net
自動更新するのは、個人のサイトとか
ちゃんとした企業の本番環境では、毎週1回テストしてから、モジュール・gemを更新する。
そもそも、ブラウザも自動更新しない
gemの更新を貯めないように。
基本は、毎週1回テストしてから更新する
これをやっていない会社は、運用しているとは言えない。
ほったらかし
100:デフォルトの名無しさん
21/06/03 12:29:19.02 OO42x4fga.net
そう上司にいえばやらんですむんじゃね
101:デフォルトの名無しさん
21/06/03 12:47:20.61 jnApLDzu0.net
>>99
はー、都度テストするとはご苦労なこった
つまり大きなシステムになるとその分、
Rubyの場合は毎週テストに労力と人員割いて
金掛けて実施しないとダメってことか
かなり大きな会社じゃないとそこまで融通効かないだろうな
102:デフォルトの名無しさん
21/06/03 13:13:14.99 4GINtqWnd.net
>>98
PowerShell便利だぞ
103:94
21/06/03 13:36:20.37 Ers5yK+g0.net
毎週、モジュールを更新するのは基本。
更新を貯めたら、保守・修正できなくなるので、ダメ。
こまめに・ちょくちょく更新
例えば、サイボウズ・Kintone は、
Kubernetes で毎日システムを作り直しているとか、
Netflix は毎日、わざとシステムを攻撃して、落としてテストしたりする
ちゃんと運用していない会社は、更新をほったらかしにしてる
104:94
21/06/03 13:46:13.92 Ers5yK+g0.net
毎週1回、OS の更新も大変だから、
サーバーレス・自分でOSを管理しない、AWS Fargate を使えと言われる。
AWSが、OSの更新をやってくれるから
だから、YouTube で有名な、雑食系エンジニア・KENTA の、
Ruby on Rails 初心者用コースに、AWS Fargate も入っている
それで皆、くろかわこうへいのサロンで、AWSを勉強する
Railsも今まで1人で、Heroku で作っていたのが、
Fargate, Terraform に変わってきてる
今の1年の未経験者は、10年以上のプロよりも、技術力が上になってる
105:デフォルトの名無しさん
21/06/03 14:22:18.35 jnApLDzu0.net
>>104
大変だな
確かに新しいことを学ぶのは大事だけど
10年やって来た人が1年やってる人に負けるって
その人の10年は何だったのって話になるわな
俺、Rubyやらなくて正解だったわ
106:94
21/06/03 14:37:37.44 Ers5yK+g0.net
KENTA・くろかわこうへい、Udemy の人気講師・山浦清透などが現れて、
Ruby on Rails の教育革命が起こった
ものすごい短期間で、効率的に学べる。
それで、1年ぐらい勉強した未経験者が、10年以上のプロよりも、技術力が上になった
東大合格マンガ「ドラゴン桜」みたいなもの
今の未経験者は、Docker Compose も必須
107:デフォルトの名無しさん
21/06/03 19:23:17.96 TUnqxA7B0.net
>>89
VBAで配列にして・・・ってのが前提になっちゃってるパターンだな
その配列もRangeから取得した奴だと思うが、素直にMax関数使いましょう
108:デフォルトの名無しさん
21/06/03 20:56:05.21 uLpHnOIZ0.net
効率化できるけど使うやつらが池沼で勉強した意味なかったな
109:デフォルトの名無しさん
21/06/03 21:12:55.36 L0NZ98mH0.net
効率化よりもいかにシートの内容を壊されないようにするかの工夫ばかり必要なパターンだな
110:デフォルトの名無しさん
21/06/03 22:14:51.09 D5fnCzXq0.net
自力でできることを質問した場合、解答がなくても困らんだろ
111:デフォルトの名無しさん
21/06/03 22:50:40.18 TUnqxA7B0.net
>>98
発注出来る開発部署があるなら、そっちに投げた方が楽なんじゃ?
112:デフォルトの名無しさん
21/06/04 01:48:20.45 JjzCcUaXH.net
朗報
やっぱりオブジェクトは残る
> MSHTML(Trident)エンジンに関しても、互換性維持のため
> すぐに削除されることはない。OS内部に「IE 11」由来の
> 機能は残る。「WebBrowser」コントロールを利用するアプリも
> 引き続き利用できる。
URLリンク(i.imgur.com)
113:デフォルトの名無しさん
21/06/04 01:56:50.63 /SvJ4cKr0.net
>>111
別部署とのお金のやり取りが発生するからメチャクチャ渋るぞ
114:デフォルトの名無しさん
21/06/04 02:06:55.76 ggq9OdP30.net
>>113
そんなん会社ごとによるし俺に言われても
115:デフォルトの名無しさん
21/06/04 12:36:18.19 tGFTJ4F20.net
最初は、動いていたのですが、
そのうち、毎回6行目でエラーが出るようになってしまいました。
例えば
D5セルに入力した3桁の数字をした時に
D7に百の位、E7に十の位、F7に一の位を表示させたいのです。
入力した結果を見て、再入力することもあるので
関数⇒値貼り付けはやりたくないのです。
できれば、どなたかご教授をお願いします。
ファイルのシートは1枚のみです。
【1 OSの種類 】 Windows10
【2 Excelのバージョン】 office365
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Long
If (Target.Row >= 5 And Target.Row <= 161) And (Target.Row Mod 4 = 1) And (Target.Column = 4) Then
r = Target.Row
Cells(r + 2, 4) = Cells(r, 4) \ 100
Cells(r + 2, 5) = Cells(r, 4) \ 10 Mod 10 ← 実行時エラー1004
Cells(r + 2, 6) = Cells(r, 4) Mod 10
End If
End Sub
116:デフォルトの名無しさん
21/06/04 12:48:38.27 tGFTJ4F20.net
>>115
補足
最初、エラーが出たやつ
Cells(r + 2, 4) = Left(Cells(r, 4).Text, 1)
Cells(r + 2, 5) = Mid(Cells(r, 4).Text, 2, 1)
Cells(r + 2, 6) = Right(Cells(r, 4).Text, 1)
修正しても
Cells(r + 2, 4) = Cells(r, 4) \ 100
Cells(r + 2, 5) = Cells(r, 4) \ 10 Mod 10 ← 実行時エラー1004
Cells(r + 2, 6) = Cells(r, 4) Mod 10
117:デフォルトの名無しさん
21/06/04 12:49:56.32 UUHTR6cxF.net
>>115-116
そのうちまた動くようになるさ
118:デフォルトの名無しさん
21/06/04 12:50:19.85 4IT3M2Hh0.net
シートを保護したまま動かす前提で、何か色々修正したときに
E7のロックをうっかりONにしてしまったとか。
119:デフォルトの名無しさん
21/06/04 13:06:45.09 tGFTJ4F20.net
>>118
ありがとうございます。
どうやらそれらしいです。
頑張ってみます。
120:デフォルトの名無しさん
21/06/04 16:43:12.67 0sw3CVWxd.net
>>115
Private Sub Worksheet_Change(ByVal Target As Range)
Dim n, n1, n2, n3 As Integer
If Target.AddressLocal = "$D$4" Then
If IsNumeric(Target.Value) Then
n = Target.Value
n1 = n \ 100
n2 = n \ 10 Mod 10
n3 = n Mod 10
Me.Range("D7").Value = n1
Me.Range("E7").Value = n2
Me.Range("F7").Value = n3
End If
End If
End Sub
もう見てないかもしれないけど、どうぞ。
121:デフォルトの名無しさん
21/06/04 17:55:39.07 Ca/vMZLe0.net
それだとn3 だけがintegerになるんじゃね
122:デフォルトの名無しさん
21/06/04 18:05:42.24 Bit4dpt50.net
>>120
n3以外Variantでいいの?
123:デフォルトの名無しさん
21/06/05 09:03:08.07 rlNy9EJ3M.net
基本が出来てない典型
124:デフォルトの名無しさん
21/06/05 09:19:02.29 6nlrivgRp.net
基本が出来ていなくても何となく動いてしまう
それがVBA
125:デフォルトの名無しさん
21/06/05 10:37:53.55 qQr0HMbe0.net
あの書き方でよしとするネット情報が多くておれも最初間違えてたわ
126:デフォルトの名無しさん
21/06/05 11:01:57.88 w++2yo+P0.net
VBAで、QueryTableを使ってUTF-8のCSVを読み込ませてるんですが、
この読み込みのマクロを使った後に、そのxlsmファイルを開いたままの状態で、何か別のCSVファイルを手動で開くと
中の2バイト文字がグチャグチャに文字化けされてしまいます
xlsmを閉じてからだと何の問題もないんですが、作業してるとちょっと不便なんですが原因は何なのでしょうか?
127:デフォルトの名無しさん
21/06/05 13:08:34.35 X22osQ9q0.net
これかな
URLリンク(www.ipentec.com)
128:デフォルトの名無しさん
21/06/05 13:18:33.33 +aLYn71C0.net
>>126
後段の「何か別のCSVファイルを手動で」は、
・別のbook(.xlsx)からPowerQueryでのcsv読込み?
・それともcsvファイルをダブルクリックで直接開き?
PowerQueryでのcsv読込みなら
エンコードを一度自動認識で読み込んでも
後からステップの「ソース」の設定(歯車または詳細エディター)で
固定することも出来るけど・・・
129:デフォルトの名無しさん
21/06/05 13:51:45.19 PrzcCeEoH.net
入力の手間や長くなるのが嫌なら
Dim n%, n1%, n2%, n3%
で全部Integerになる
130:デフォルトの名無しさん
21/06/05 14:28:09.00 w++2yo+P0.net
>>128
済みません、VBAでQueryTableを使ってUTF-8のCSVをシートに読み込んだ後、適当なShift-JISのCSVファイルをダブルクリックして直に開くと
開いたCSVの中の2バイト文字が文字化けしています
Excelで開いてるウィンドウを全部閉じてから、CSVを開き直すと文字化けしていません
131:デフォルトの名無しさん
21/06/05 15:56:52.45 Ko2adBFs0.net
マクロだけじゃない、Excel全体は基礎ができてないとすぐ壁にぶち当たる
132:デフォルトの名無しさん
21/06/05 16:25:26.38 eGJ4gYzF0.net
基礎って何ですか?
133:デフォルトの名無しさん
21/06/05 16:45:34.26 QYWEL8gWM.net
>>132
私もそう思いました
基礎って何ですか?
134:デフォルトの名無しさん
21/06/05 22:09:51.31 fW5GrJR10.net
例えばVBAの基礎と言えば
・モジュールの先頭にはOption Explisit書いて全ての型は明示的に記述すること。
・行、列を扱うときは使用範囲の最大値を考慮してIntegerでなくLong型で定義すること。
・モジュール、関数、変数の名称は一見して何を意味しているのか分かるようにつけること。
・モジュール、メソッド、関数には複数の役割を持たせて作らないこと。
・基本、ひとつの変数に複数の型のインスタンスを代入する場合、Object型を使わずにインターフェースを作成して代入すること。
・グローバル変数は使用せず、プロパティを使用すること。
・VBA上では四捨五入を求めるROUNDは銀行丸めなので必要に応じてWorksheetFunctionのROUNDを使うこと
小数点以下の計算を行う場合、DoubleやSingle型は浮動小数点数扱いでIEEE754準拠のため誤差が発生
することがあることを念頭においておくこと。
まだまだ沢山あるけど
人や会社の厳しさや緩さによって多少は変わるけど
こういった最初の内から押さえていないとマズいことだと思う。
135:デフォルトの名無しさん
21/06/05 22:10:33.71 X22osQ9q0.net
>>130
問題が起きないように使えばいいのでは?
136:デフォルトの名無しさん
21/06/05 22:37:56.35 NS39OhGXd.net
>>134
めんどくさいって思ったことないですか?
137:デフォルトの名無しさん
21/06/05 22:53:56.98 zpL5HDoS0.net
RowがLongなのはわかるけど、
ColumnはIntegerで足りね?
138:デフォルトの名無しさん
21/06/05 22:58:04.78 OxA9wcds0.net
WindowsAPIのmciSendString関数を使おうとサンプルコードを見ているのですが、
Callで呼び出さずにrc=と記述されたものばかり見受けられます。
rc=の意味を調べてもなかなか回答が見つからず…これって何なのでしょうか。
139:デフォルトの名無しさん
21/06/05 23:01:50.30 PrzcCeEoH.net
>>138
return code
140:デフォルトの名無しさん
21/06/05 23:05:55.78 +aLYn71C0.net
1つのbookにシート数44、1シートに1クエリーがあり、
「すべて更新」ボタンでやると部分的にクエリー更新に失敗
141:することが多いため、 一覧表作ってシート名とクエリー名を変数にして For To Next で順番にクエリーを更新していくマクロを組んだ。 それまではちゃんと機能していたものの、シートの改造・追加・並び替えをしたら、 実行時エラー '-2147319767 (80028029)': オートメーション エラーです。 無効な前方参照か、コンパイルされていない種類への参照です。 と、エラーが出て途中で止まったでござる。 検索すると「メモリーの使いすぎ?」みたいな話はヒットするも、よくわからず。 プロジェクトエクスプローラー眺めてて、 「シートの順番入れ替えたりしたので、シート名の順番がぐちゃぐちゃになってるな・・・」 と、各シートのプロパティで、 sheet01 (○○○)、sheet02 (□□□)、sheet03 (△△△)・・・ と直してみたら、今度はエラーも出ず、1発で44クエリーが最後までマクロが実行されてもうた。 Dim tblQ As ListObject ' 対象となるクエリーの変数宣言 Dim ws As String ' sheet名の文字列変数宣言 Dim q As String ' クエリー名の文字列変数宣言 (中略) Set tblQ = ThisWorkbook.Worksheets(ws).ListObjects(q) ←ここで止まった tblQ.QueryTable.Refresh BackgroundQuery:=False としてたのだけど、sheet名がマクロの実行順に並んでいないと、 VBAはwsやqの検索に失敗することがある (特にシート数が多い場合) という理解でいいのかな?
142:デフォルトの名無しさん
21/06/05 23:06:05.26 HEfJq5i50.net
>>138
その程度の馬鹿頭でWindows APIなんか使うなよ
143:デフォルトの名無しさん
21/06/05 23:09:38.86 OxA9wcds0.net
>>139
ご回答ありがとうございます!
rcという変数に関数を格納する、というのがいまいち理解できません。
Callで関数を呼び出しても問題ないはずですよね?
144:デフォルトの名無しさん
21/06/05 23:22:29.75 fW5GrJR10.net
>>135
問題が起きにくくするようにのための決めごとだよ
もっとも、やってる仕事場のプログラマーが歩んできた経験則に大きく左右されたりもするから
そこは仕事場ごとのコーディング規約に基づいて組めばいいんじゃないかな。
それはプログラマーのお仕事としての基本になるかな。
>>136
面倒くさいよ。でも他の言語とは比較にならないくらい楽な方だよ。
>>137
またいつシートの行や列が増えないとも限らないじゃん。とある銀行系のところは行や列が増える以前からそんな想定をしてて最初からLong型を使うことがコーディング規約に記載されてたよ。
それにどうせInteger型はLong型を半分マスクしたものだからLong使って処理が遅くなったり容量余計食ったりすることないしね。
145:デフォルトの名無しさん
21/06/05 23:35:33.21 NS39OhGXd.net
>>142
乱暴だけどw Functionと一緒だよ。
146:デフォルトの名無しさん
21/06/06 00:10:56.51 AEt8vzaWM.net
いつものruby馬鹿の自演
147:デフォルトの名無しさん
21/06/06 01:19:16.01 X88mu3QB0.net
>>144
ありがとうございます!
148:デフォルトの名無しさん
21/06/06 02:19:15.47 rqYM4O//d.net
いつものあいつ
149:デフォルトの名無しさん
21/06/06 04:32:20.52 V1i0NaJEa.net
>>140
シート順を駄目な順に戻して再現するならそうかも
150:デフォルトの名無しさん
21/06/06 10:05:15.65 s0YManYn0.net
Ruby信者はあわしろいくやという人の手先らしい
こんなスレまでわざわざ荒らしに来るちょっと頭が残念な人
151:デフォルトの名無しさん
21/06/06 11:13:17.21 GvzTzrtAM.net
>>134
> こういった最初の内から押さえていないとマズいことだと思う。
うんうん、ドヤるなら綴りぐらいはまともに書けないとマズいわなw
> ・モジュールの先頭にはOption Explisit
152:デフォルトの名無しさん
21/06/06 11:44:13.88 kiIZdW9jp.net
まーたあわしろいくやか
153:デフォルトの名無しさん
21/06/06 13:08:52.04 JiG+HYt80.net
基礎ってなんですか?って質問している時点で恐ろしいわ。。。
基本を知らずにExcelを操作している社員がいる職場のシートは難解なんだろうなきっと。。。
154:デフォルトの名無しさん
21/06/06 13:48:07.37 g5KkmiV+a.net
>マクロだけじゃない、Excel全体は基礎ができてないとすぐ壁にぶち当たる
と言われたらまず基礎がどのぐらいか定義してもらわないと
何言ってるか分からないからだ
155:デフォルトの名無しさん
21/06/06 14:25:18.18 +MyNHKVga.net
グローバル変数は許せよ
156:デフォルトの名無しさん
21/06/06 15:13:22.89 WJZoQhbE0.net
その変数の問題だと思うんですが、subの中からFunctionをコールして、String型変数を引数で渡しても
Functionの中でその変数が空っぽになります。どうして文字列が渡せないんでしょうか
Function aaa(ByVal hoge As String) As Long を Call aaa(hoge) と書くとaaa内でhogeが空っぽです
Public hoge とかしてみても駄目でした
157:デフォルトの名無しさん
21/06/06 15:52:47.68 1YH+vaIj0.net
それ自分を呼び出してるだけじゃね
158:デフォルトの名無しさん
21/06/06 16:34:01.92 vQVSsWXH0.net
また
159:デフォルトの名無しさん
21/06/06 17:16:44.69 PdUE2wOEH.net
>>155
まずはモジュールの先頭にOption Explisitって書いてみ
160:デフォルトの名無しさん
21/06/06 17:31:48.02 efAmahNiM.net
値渡しするならCall aaa((hoge))が望ましい
っていうか返り値があるFunctionってCallで呼び出す?返り値と同じ型の変数に代入とか演算に使ったりしない?
161:デフォルトの名無しさん
21/06/06 18:21:18.04 pNkKMnVc0.net
VBAだけではないと思うんだけど、コードって使い回すじゃん?切った貼ったの繰り返しで完成後汚えなぁと思うことない?
あと、コードを保管方法ってなんかないかな?使ったエクセル開いてコピーとかメモ帳とかいろいろやったけど不便でならない。
162:デフォルトの名無しさん
21/06/06 18:26:33.85 WJZoQhbE0.net
FunctionとSubの違いもよく分かってなかったんですが、Functionの返り値を変数で受けようとした所
そもそも渡したい文字列がFunctionに渡せなくて困ってました
単に、自作の関数を呼び出す時に引数を渡してやればいいだろと思ってたんですが、それが出来ないので
VBAはその辺が厳密なんですかね……?
163:デフォルトの名無しさん
21/06/06 18:32:25.23 efAmahNiM.net
例えばFunctionで返り値をString型が欲しい場合求める場合
Public Function aaa(ByVal hoge)As String
ってString型を指定してやってFunction内でaaa = 【返したい文字列】ってやる必要があるのは分かる?
164:デフォルトの名無しさん
21/06/06 18:35:37.03 efAmahNiM.net
Functionを呼ぶ側は
bbb = aaa((hoge))
ってやるんよ
参照渡し(ByRef)の場合は変数をダイレクトに書いて良いけど、値渡し(ByVal)の場合は変数を括弧でくくってやらんと上手く渡せない場合がある。
165:デフォルトの名無しさん
21/06/06 19:11:37.69 s0YManYn0.net
>>160
コピーして切った貼ったして使うことを使い回しとは言わない
どっちにしろ使い回したい部分をモジュールや関数単位に纏めてそれを呼び出せ。
それが使い回しというものだ。
166:デフォルトの名無しさん
21/06/06 19:27:28.02 HeHF5+P0d.net
場合って何よ 具体的に書きなよ
167:デフォルトの名無しさん
21/06/06 19:56:36.98 efAmahNiM.net
>>165
参照渡しと値渡しを同時に行う際、値渡しの変数に括弧をつけておらず、尚且つ変数のみである場合、参照渡しとして認識されるが呼び先では値渡し指定なので不一致であるとエラーを吐いて停止する(但し変数に対して演算を行っていた場合は値渡しとして認識される)から値渡しする時は括弧つける癖をつけろ。その方が可読性もあがる。
って言えば満足か?
168:デフォルトの名無しさん
21/06/06 20:01:57.50 PdUE2wOEH.net
>>164
言うか言わないかは個人の認識の問題
169:デフォルトの名無しさん
21/06/06 20:28:43.00 s0YManYn0.net
>>166
うん?
それ何か違う気がする
演算した後値渡しでエラーになると言うことは、そもそも渡す引数の呼び出す側の値が呼び出さ�
170:黷驫ヨ数の引数の型で許容されるものでは無かったってことじゃないの? 例えば呼ぶ側でVariant型を定義した変数に“1”という文字列を入れていて、それを受ける呼び出される側の引数が Integer型に宣言されていた場合は型違いでエラーになるけど、呼び出し前にその変数に対して+1したものを代入すればその時点で暗黙の変化によりVariantの 内部型はIntegerになるから型が合ってエラーにはならない。という状況で、 括弧の話とはあまり関係ない気がするんだけど認識違う?
171:デフォルトの名無しさん
21/06/06 20:30:46.16 s0YManYn0.net
暗黙の変化ってなんだよ暗黙の変換ね
172:デフォルトの名無しさん
21/06/06 20:42:48.07 aS7dMAuf0.net
Public Sub aaa()
Dim aa As String, bb As String, cc As Long
bb = ″b″
cc = 2
aa = bbb(bb, cc)
End Sub
Public Function bbb(ByRef b As String, ByVal c As Long)As String
(中略)
End Sub
ってやるとFunction入る前にエラーで弾かれて
aa = bbb(bb, (cc))ってやったりaa = bbb(bb, cc + 1)ってやったりすると通るんだがおま環だった?
173:デフォルトの名無しさん
21/06/06 20:47:53.29 1YH+vaIj0.net
なにエラー?
174:デフォルトの名無しさん
21/06/06 21:00:41.59 qWOh0TID0.net
>>148
やってみた。
やっぱエラーで止まった。
sheet番号がぐちゃぐちゃでもちゃんと動作するような、
クエリーを変数にした記述の仕方があるかもしれないけど、
少なくとも >>140 のやり方では、どうもオートメーションエラーになるみたい。
175:デフォルトの名無しさん
21/06/06 21:34:20.79 s0YManYn0.net
>>170
コピーして実行してみたけど
まず“b”のダブルクォーテーションが全角なのと、Functionを閉じているところがEnd Subになっている。
コンパイルした時点でエラーで弾かれたよ。
そこを修正したらエラーが出なくなった。
176:デフォルトの名無しさん
21/06/06 22:08:04.98 vQVSsWXH0.net
>>170
ファイル壊れてんじゃね
177:デフォルトの名無しさん
21/06/06 22:13:12.19 s0YManYn0.net
関数やメソッドに括弧が必要なのは確か
・Functionで戻り値を受ける場合
・Subで頭にCallを付けない場合
じゃなかったっけ?
後、括弧で括らないと順序関係なく
個別に引数を設定することが
出来るんじゃなかったっけか?
まぁ自分としては何であれ括弧を付けて
Subの場合は頭にCall付けて関数やメソッドが
呼ばれていることを明示する
必要があると思うけど。
あまり引数が多い関数は引数そのものを
抱えるエンティティクラスを作って
そのインスタンスを引数で渡してやれば
いい気がするしその方が可読性高いよね。
178:デフォルトの名無しさん
21/06/06 23:50:30.47 WJZoQhbE0.net
>>162-163
ありがとうございます、値渡しがどうしても上手く行かなかったので試してみます
179:デフォルトの名無しさん
21/06/07 10:20:45.70 nhaEx8Ewa.net
大きな声で言えないけど、おれoption explicit付けたこと無いしグローバルじゃない変数は宣言しないで使ってる。グローバルな変数大好き
180:デフォルトの名無しさん
21/06/07 10:24:31.34 La1yJ3oH0.net
え?option explicit付けない人見たことない。。。
181:デフォルトの名無しさん
21/06/07 10:27:14.26 nhaEx8Ewa.net
だって俺お前と会ったことねーもん
182:デフォルトの名無しさん
21/06/07 10:45:43.81 /bT+ATEvp.net
まーたあわしろいくやの手下のRuby信者か
183:デフォルトの名無しさん
21/06/07 10:49:48.00 1dhF/BUe0.net
ゆうてそういうことしないよって人はプログラマとかじゃないんやろ
プログラマやってたら不安になると思うし
184:デフォルトの名無しさん
21/06/07 11:02:15.80 BLDePS2QF.net
>>160
VBAを使わない
pythonで外からexcelを操作する
pythonのコードはgithubで管理
185:デフォルトの名無しさん
21/06/07 11:36:42.90 5JFCMcJv0.net
Ruby に option explicit は無いからな
186:デフォルトの名無しさん
21/06/07 11:53:27.33 faCSe2qcM.net
>>178
普通にいるよ
流石にソフトウェア開発者にはいないと思うけどVBAは事務屋さんも作ったりするからそう言う人はそもそもOption Explicit自体を知らなかったりする
知ってて使わない>>177みたいのは単なるアホ
187:デフォルトの名無しさん
21/06/07 12:02:42.50 /bT+ATEvp.net
>>182
Pythonなんか使う意味が分からん
188:デフォルトの名無しさん
21/06/07 12:06:17.59 nhaEx8Ewa.net
俺みたいな事務屋さんは知ってても必要ないんだってば。事務屋さんだから>>184みたいに大きな声は出さないけど
でも流石にRubyの人と同一視するのはやめて。けっこう傷付くし悲しい
189:デフォルトの名無しさん
21/06/07 12:39:03.71 /bT+ATEvp.net
知らないで使わないのはただの無知
知ってて使わないのは悪質なバカ
190:デフォルトの名無しさん
21/06/07 12:46:48.42 8ILcpsz2M.net
VBAって宣言せずに使ったらローカルになるんだっけ?
プロと違って適当にかくから強制ひっすだわ
こういうところに書くのは省略しまくるけどな
191:デフォルトの名無しさん
21/06/07 13:32:24.67 faCSe2qcM.net
>>160
> あと、コードを保管方法ってなんかないかな?使ったエクセル開いてコピーとかメモ帳とかいろいろやったけど不便でならない。
普通にエクスポートすればいいだけじゃねーの?
192:デフォルトの名無しさん
21/06/07 19:28:59.24 9yldYH/70.net
>>73 すごい亀レスだが、dispatchEventでなんとかなったわ でもいつできなくなるかドキドキ ieは終わりの圧力に屈しそう
193:デフォルトの名無しさん
21/06/08 01:11:20.22 gtN4dmk3H.net
>>186
存在を知ってるのと正しい使い方を知ってるのは別
入力ミスが見つけやすくなるという大きなメリットがあるんだから、使わないのは無知と言われても仕方がない
194:デフォルトの名無しさん
21/06/08 02:25:46.24 1f6b7zm30.net
普通さ、最初に覚えるだろoption explicitは?
それらを参考書とかで勉強してこなかった人とかいるのかなと?
まあ、どう運用しようがその人の勝手だろうけどさ。
195:デフォルトの名無しさん
21/06/08 04:42:23.25 RLQzdArC0.net
option explicitは知ってるが
いちいち書かんし設定もせん
宣言は常にやる、それだけ
196:デフォルトの名無しさん
21/06/08 05:09:06.45 bCI8JHzDM.net
>>193
いちいち書く?
まあその程度のオツムならたいしたコードは書いてないだろうから使わなくてもいいかもねw
URLリンク(itsakura.com)
197:デフォルトの名無しさん
21/06/08 08:18:59.91 GIt8+gr30.net
>>193
俺も宣言は他言語同様やるがOptionは気にしないな
下手するとそれがあるせいで変な場所で宣言してる例をよく見る
198:デフォルトの名無しさん
21/06/08 08:20:58.32 wrp61arm0.net
Task オブジェクトってなんでWordだけなん?
199:デフォルトの名無しさん
21/06/08 09:07:28.17 3w2dwJfs0.net
>>194
自動構文チェックONにしているんだ。
別にどっちがいいって訳じゃないけど俺はOFF派。
コード書いてる最中にどこかのコードコピーして持って来たいときカーソル当てると
エラーのメッセージボックスが上がって元の位置に戻されるのが鬱陶しいのと
他の開発で使ってるVisual Studioが元々そんな感じだからそっちに合わせてる。
ただそうするとエラー部分が赤くなるだけでどんなエラーかは表示しないから一長一短。
OFFはパッと見でどんなエラーか分かる人向けでそれ以外の人にはお勧め出来ない。
200:デフォルトの名無しさん
21/06/08 09:12:57.77 3w2dwJfs0.net
>>195
Option Explicitの設定してて変な場所で宣言って聞いたことないな。
そんな具合になったコード晒せる?
201:デフォルトの名無しさん
21/06/08 09:19:38.53 rnKdyaoGM.net
>>195
> 下手するとそれがあるせいで変な場所で宣言してる例をよく見る
意味わからん、例示してくれ
202:デフォルトの名無しさん
21/06/08 09:24:20.65 rnKdyaoGM.net
>>197
> 自動構文チェックONにしているんだ。
まあこれは人によるかな
あんたも書いてるようにエラーになった時にいちいちダイアログが表示されて鬱陶しいとは俺も思う
203:デフォルトの名無しさん
21/06/08 09:56:53.56 zTVPbGTxa.net
変な場所って、プロシージャの真ん中あたりに宣言がポッと出てくるやつか?
いちいち上に戻って書き足すのがクソダルい気持ちは分かる
204:デフォルトの名無しさん
21/06/08 10:01:13.33 3w2dwJfs0.net
>>201
見たことないなぁ
どんな操作をするとそうなるの?
そもそも最初に設定しておけば必ずモジュール作ったときに一番上に出てくると思うけど
205:デフォルトの名無しさん
21/06/08 10:10:38.85 zTVPbGTxa.net
違う違う、そうじゃなくて、初心者がコード書く時にエラー吐かれる度にその場で直した結果として変なところで宣言してるやつってこと
206:デフォルトの名無しさん
21/06/08 10:32:12.38 3w2dwJfs0.net
>>203
Option Explicitとは関係ない話?
だったら本題と内容がズレるな。
>違う違う、そうじゃなくて、初心者がコード書く時にエラー吐かれる度にその場で直した結果として変なところで宣言してるやつってこと
これは初心者というか.Net系やJavaとかやってる人に書かせてもそう書くときがある
関数内で定義したVBAのDimとかのスコープが関数単位で効くものでなくて
If とか For とかのブロック単位で効くものと勘違いしているらしい。
207:デフォルトの名無しさん
21/06/08 10:36:39.71 zPjYlIziM.net
>>203
使う直前に宣言するって言うのは別に変な流儀じゃないけどな
むしろ先頭で宣言しろと言うのは老害の可能性もあるし
208:デフォルトの名無しさん
21/06/08 10:47:13.49 3w2dwJfs0.net
>>205
それは可読性の問題
あくまで俺だったらだけど同一スコープの先頭に書くな。後で変数定義して既に使われてる変数書いてエラーになって「あ」ってなるの嫌だし
一々コードから何の型で宣言しているのか探しにいくのも面倒くさい。
209:デフォルトの名無しさん
21/06/08 10:51:37.03 zTVPbGTxa.net
>>204
いやいやズレてないよ、>>195がそういう話をしてるんじゃないかって話だったでしょ
ありがとう勉強になる…そうか俺老害側か…
210:デフォルトの名無しさん
21/06/08 11:03:04.11 3w2dwJfs0.net
>>207
よく嫁
>俺も宣言は他言語同様やるがOptionは気にしないな
>下手するとそれがあるせいで変な場所で宣言してる例をよく見る
Optionがあるせいで変な場所に宣言してる例をよく見るって書いてあるだろ?
そっちの話はOptionの話と関係ある?
後、宣言する場所に関しては老害とかないから安心していいぞ。何故ならもっと新しい言語のVB.NetやC#でも効くスコープの先頭に書くのが一般的だから。
211:デフォルトの名無しさん
21/06/08 11:06:06.39 zTVPbGTxa.net
>>208 >>203
option付けたら変数宣言しないとエラー出すじゃないですか
212:デフォルトの名無しさん
21/06/08 11:07:57.69 3w2dwJfs0.net
>>209
Optionつけようがつけまいが
変数宣言するのは基本だと思うけど?
してないの?
213:デフォルトの名無しさん
21/06/08 11:09:49.36 GIt8+gr30.net
>>201
まさにそれ
214:デフォルトの名無しさん
21/06/08 11:10:37.61 bCI8JHzDM.net
>>206
別にお前さんに強要するつもりはないから自分の好きな様に書いてくれ
ただIDEの使い方位は覚えておいた方がいいんじゃないかな
> 一々コードから何の型で宣言しているのか探しにいくのも面倒くさい。
215:デフォルトの名無しさん
21/06/08 11:15:14.30 zTVPbGTxa.net
>>210
俺とお前と>>195がしてても、それが基本でも、>>195が良く見るというコードを書く人たちが基本が身についているとは限らないじゃない
だから>>203でわざわざ初心者って言及したんですってば
216:デフォルトの名無しさん
21/06/08 11:16:08.53 3w2dwJfs0.net
>>212
Visual Studio辺りであればカーソル合わせると
定義した型が表示されるから分かるが
VBAの場合は一々「型の定義」でそこまで
飛ばないといけないし、何度か最寄りの型まで
調べると元の位置に戻ってくるのも
面倒だと思ってるんだけど認識違う?
違うんならそのIDEの使い方とやらを
提示して頂けると有り難いんだけどな
217:デフォルトの名無しさん
21/06/08 11:20:57.88 Bz/vS+dRM.net
変数の宣言って頭でまとめて宣言するより使う場所で宣言するのが今の主流だった気がするけどウチの会社だけなんかな
218:デフォルトの名無しさん
21/06/08 11:24:56.38 3w2dwJfs0.net
>>213
よく分からないな
初心者だから変数定義をしていないといいつつ
変数定義しているところがポッと出てくるという。
変数定義してたりしてなかったりというのであれば
もうそういう次元の話ではなくなってくる。
219:デフォルトの名無しさん
21/06/08 11:25:51.75 RLQzdArC0.net
>>194
だから「設定」と書いてあるだろアホ
220:デフォルトの名無しさん
21/06/08 11:32:15.16 3w2dwJfs0.net
>>215
状況がよく分からないけど
「使う場所で宣言する」というのは
スコープ毎に纏めていないと言うことだろうか
少なくとも俺が今までやった言語では
そんな流行りは見たことないなぁ
というか見辛いもの
221:デフォルトの名無しさん
21/06/08 11:47:18.41 eotEY1L4M.net
>>217
おじいちゃん、もうそのレベルの低い話は終わってるからw
222:デフォルトの名無しさん
21/06/08 12:12:36.32 zTVPbGTxa.net
>>211
ごめん
>>216
してないとは言ってないよ。option付けたら必ずさせられるじゃん。してたりしてなかったりにはなり得ない
初心者だから変数定義を最初に必ずするクセがついていないんじゃないかって話です
vba不慣れな人が宣言してない変数を使おうとして、実行時にoptionどおりエラーを言い渡され、慌ててエラー箇所の直前に変数宣言をぶち込む。その結果コードの真ん中に変数宣言がポッと出てくるやつになるんじゃないかってこと
223:デフォルトの名無しさん
21/06/08 12:44:31.31 3w2dwJfs0.net
>>220
言いたいことはやっと伝わった
では話を戻そう。そのコードを見てどう思った?
変数宣言強制設定して変数宣言書き込まないとエラーが出るようにするのが悪いと思った?
そんな奴がポッとそんなところに変数宣言を書き込んだ奴が悪いと思った?
前者というのであればここで話はもう終わり。
恐らくこれ以上話してもお互い得られるものは何もないと思う。
後者と言うのであれば、変数宣言強制した際に少なくとも変数が宣言されていないことは発覚する。これだけで恩恵があることは理解出来るかな?
その辺にポッと書いてしまったことはそれ自体が問題であり、その人に促せばいいんじゃないかと思うけど?
224:デフォルトの名無しさん
21/06/08 12:53:13.82 RLQzdArC0.net
>>219
自分の間違いが顕わになって、反論できないバカ
225:デフォルトの名無しさん
21/06/08 12:59:24.76 iJBocUpIM.net
くだらないタイプミスで時間を無駄にしたことはありませんか?
226:デフォルトの名無しさん
21/06/08 13:04:42.37 5PCuzcGlM.net
設定のことを含めた話ということすら読み取れてなかった7vXXが一番レベル低かったな
227:デフォルトの名無しさん
21/06/08 13:09:06.95 3w2dwJfs0.net
>>223
ない・・・と言いたいところだけどどうやっても0にはならんわなw
いつも思うのがOption ExplicitがあるんだからOption Strictも用意しといてくれればいいのにと。
変換に際して暗黙の変換をさせずにどれも明示的な変換を漏らさずさせられるようになれば
テストする際も安心して走らせられるのにって思う。
もっとも、人によっては面倒くさいと思う人が出るんだろうなぁ・・・
228:デフォルトの名無しさん
21/06/08 13:09:33.83 iJBocUpIM.net
>>218
C#でvar使うなら型の確定する現地じゃないとだめじゃね?
229:デフォルトの名無しさん
21/06/08 13:14:50.72 zTVPbGTxa.net
>>203は>195の言うコードを予想したものだということを踏まえて、それでも話を続ける?
230:デフォルトの名無しさん
21/06/08 13:17:48.89 3w2dwJfs0.net
>>226
そもそも型定義出来る言語であまりvarは使わない。まぁ厳密な書き方しない人は使うんだろうけど。
それにそれもスコープが効いてる頭でやる。
むしろC#のvarはVBAのVariantと違う。
別の内部型を使うことによって違う扱いをするようなことは出来ない。
最初に設定された値により使用する型が確定されるため、一度設定したらその型として定義される。
例外があるとすれば無名型とかレイトバインディングにより型が確定するもの。
231:デフォルトの名無しさん
21/06/08 13:21:07.44 3w2dwJfs0.net
>>227
では「見た」と言うのを「予測した」というのに置き換えて考えればいい。
そう言ったコードをどう判断するか、と言うことにかわりはない。
232:デフォルトの名無しさん
21/06/08 13:22:00.36 iJBocUpIM.net
>>228
だからC#では途中で宣言するvarが流行ってますよと
233:デフォルトの名無しさん
21/06/08 13:23:01.01 gtN4dmk3H.net
VBAの場合、変数は先頭で宣言するのが望ましいとされるけど強制ではない
そして、スコープ内ならどこに書いても効力は同じ
だから使用直前に書くコーディングルールでも動作に支障はない
別人が保守する可能性がある時に、ルールをどう伝えるかが問題になるだけ
コードの先頭にコメントで書いてもいい
参考、「通常、Dim ステートメントをプロシージャの最初に配置します。」
URLリンク(docs.microsoft.com)
234:デフォルトの名無しさん
21/06/08 13:26:59.27 gtN4dmk3H.net
いちいち先頭に戻って確認するのが面倒と言ってる人がいるけど、ウィンドウが分割できることを知らないのか
あるいはよっぽど狭いモニターでやってるのか
そもそも設計がきちんとできてれば、型も自然と決まってくるんだから確認する必要なんかないだろう
どっちにしろ自己責任で片付く問題でしかない
235:デフォルトの名無しさん
21/06/08 13:32:59.72 3w2dwJfs0.net
>>230
流行ってない。
C#やVB.Netの場合はそもそも変数の定義と一緒に値を設定出来るからスコープの頭で定義してvarの場合一緒に型を決める頭を設定する。
そしてスコープも関数単位ではなくIfやCase、For文等の細かいブロックに分かれるからそれが最小単位だ。
もしC#で他の誰かが組んだコードが確認出来るならしてみればいい。
236:デフォルトの名無しさん
21/06/08 13:35:48.75 XYNVs0qfM.net
>>214
そんなに型知りたいときある?
あとそれ先頭で宣言しても似たようなもんじゃね?
237:デフォルトの名無しさん
21/06/08 13:36:47.28 XYNVs0qfM.net
>>222
終わった話に粘着する爺乙w
238:デフォルトの名無しさん
21/06/08 13:38:33.25 zTVPbGTxa.net
>>229
おーけー、じゃあ戻るというか新しい会話だね。
別にどっちも悪くないんじゃない? 少なくともoption付けて悪いってことはないでしょ
可読性の問題については頭にまとめて書くのが当然だとは思ってたし、途中にあったら変だと感じるけど、悪いかは分からん。今日は勉強させて貰った
239:デフォルトの名無しさん
21/06/08 13:40:15.13 3w2dwJfs0.net
>>232
ウィンドウ分割なんて一つしか出来ない。
ソースを確認するのは有効かも知れないが、そんなんで一々散り散りになった変数の型確認などしていたら大変な手間だ。まだ定義の確認で飛ばした方がマシ
設計どうのと言っているが、そんなコードや型までこと細かく書くことはまずない。
それは設計書ではなくコードそのものをただ日本語の資料におとしたというだけ。コードを見ればいいのだから無駄な作業だ。
240:デフォルトの名無しさん
21/06/08 13:48:16.57 3w2dwJfs0.net
>>234
何か沢山の人とやり取りしてると話がごっちゃになって・・・すまんな。
俺は使うスコープの先頭に書く派だけど、そっちは何の先頭と言ってるのだろうか。
話はそれによりけりかな。
241:デフォルトの名無しさん
21/06/08 13:55:51.97 3w2dwJfs0.net
>>231
最初に言った
これは可読性の問題だと。
動作に支障がないからと言って関数単位のスコープであればそこだけ確認すれば良いものを
わざわざ大風呂敷広げてそのモジュール単位にする理由が分からない。
242:デフォルトの名無しさん
21/06/08 14:04:14.95 3w2dwJfs0.net
>>236
とりあえずそこまででも理解して頂ければこちらとしても嬉しいし有り難い。
243:デフォルトの名無しさん
21/06/08 14:06:51.56 xXU8pzBkM.net
>>238
>>201からの流れだからSub/Functionの先頭でしょ
244:デフォルトの名無しさん
21/06/08 14:10:03.51 3w2dwJfs0.net
>>241
なるほど、ありがとう。
それなら基本俺も最初からそう言ってるしそれでいいと思う。
モジュール単位で使う必要のあるものはモジュールの頭で書けばいいしね。
245:デフォルトの名無しさん
21/06/08 14:14:48.37 zTVPbGTxa.net
>>240
なんかほんと、ごめん。色々ありがとう
246:デフォルトの名無しさん
21/06/08 14:16:57.43 3w2dwJfs0.net
>>243
いえいえ、楽しかったよ
247:デフォルトの名無しさん
21/06/08 14:36:31.75 ECc03QiG0.net
ちゃんと教科書通りにやれ!
と怒鳴られたらどうする?
248:デフォルトの名無しさん
21/06/08 14:52:20.28 3w2dwJfs0.net
後、varで思い出したけど、これは余談になるんだけど、以前ExcelでPythonが使えるようになるかも知れないって話があって、結局のところ塩漬けになってしまったから残念ではあるけれど
つい五月の終わり辺りにExcel webが解放されたね。
使用言語はJavascript、Webのものだから今後HTML、CSS、クライアントやWebサーバー、IISや場合によってはJqueryやDBサーバーの知識が必要になる可能性がある。
いや、お客さんやエンドユーザーさんが「Webで確認したいなぁ」とか言い出しそうな人がいたら要注意だ。
まだどのような影響があるかは分からないけど、場合によってはおじいちゃんでその辺の理解がないと淘汰される可能性があるかも、とだけ言っておこう。
URLリンク(www.google.co.jp)
249:デフォルトの名無しさん
21/06/08 16:03:42.43 aRPmnT2Sd.net
>>140
wsとqをどういう風に設定しているのか確認しました?
250:デフォルトの名無しさん
21/06/08 16:44:43.77 ZMLG7Zjy0.net
google apps scriptみたいなもんか
251:デフォルトの名無しさん
21/06/08 16:59:48.28 3w2dwJfs0.net
>>248
まさにそんな感じだろうとは思ってる。
ただ、IEには対応していないと書いてあるので
Edgeでは動くだろうけどchromeだとどうか・・・
すまん、ウチに入れてるOfficeは365だけど企業用ではないから確認出来んのよ。
252:デフォルトの名無しさん
21/06/08 17:49:08.47 3w2dwJfs0.net
まぁVBAは今までの資産があるし、今こんな話をするのは早すぎかも知れないけど、この機能を使おうとした場合、大きなお金持ちの会社になると
「じゃーボタン押したらDBの内容表示させようかー」とか軽くお客さんが言い出す可能性もある。
SQLはそのまま使えるけど、ビジネスロジックの部分はどうしようか、とか
「じゃー他のシステムと統合しようかー」とかになったら、上手くそのシステム作成の話に乗れればいいけど、そうでなければお払い箱になる可能性もある。
WebのビジネスロジックにVBAは使えないから他の言語も勉強しなければならない。
これは他のWebの言語やってるところも他人事じゃなくて「じゃー画面はEDGEでEXCELで表示してねー、ダウンロードはいやよー、編集して反映させたいからー」
なんて言われた日にゃUIをこれにしなくてはいけない。
今すぐと言うわけではないし、そうならないことも考えられるけど、ひょっとするとこれからEXCELというものは今までのものと
そういう方向性のものを含めてEXCELと呼ばれることになるかも知れないということ。
まぁ今は聞き流して貰って大丈夫だよ。
ただ、そう言う話があるということだけ心の片隅に置いといて貰えれば。
253:デフォルトの名無しさん
21/06/08 18:03:14.64 NOm8RE2hM.net
5分でかけるスクリプトに仕様書やらテストやら乗っけて
おいくら万円で売りつけるサービス業者のピンチですか?
254:デフォルトの名無しさん
21/06/08 18:07:44.94 3w2dwJfs0.net
>>251
ピンチになるかどうかはまだ分からないけどそんな可能性もあると言うこと
それにそう時世が動いたとしてピンチになるかはその人次第。
255:デフォルトの名無しさん
21/06/08 18:14:42.27 Yg8CMFGOM.net
VBAやってる人は、不安なら他の本格的なプログラミング言語に手を出す前に今時のWebベースのノーコード開発を習得したほうがいいと思うよ
VBAできる程度の頭があるなら難しくはないだろうし、ヘタにスクラッチで作るより遥かにまともなものができる
256:デフォルトの名無しさん
21/06/08 18:20:22.16 3w2dwJfs0.net
恐らくこれに対応しろと言われて一番困るのはMicrosoftのOS使ってないところ。
lMicrosoftであれば.Net freamWorkでそのようなライブラリをすぐ揃えてくれるだろうけど
そうでなければオープンソースのものは誰かが作ってくれるのを待つか自分でライブラリを作るしかない。
そしてMicrosoftはそれが内部でどう作られているのか教えてくれる気は更々ない。誰かの解析待ち。
257:デフォルトの名無しさん
21/06/08 18:23:16.36 /pGHNa0l0.net
DBはアズールレーンだろ
windowsはどうでもいいよ
258:デフォルトの名無しさん
21/06/08 18:34:39.97 3w2dwJfs0.net
>>255
アズールレーンがどんなDBか分からなかったから
wikiで調べたらゲームしか出てこないな
何だこれ
URLリンク(ja.m.wikipedia.org)アズールレーン
DBはOracleでもSQLSERVERでも構わないけど
問題はUI部分をどう使って行くかよ。
これを使うライブラリがないとキツいかも知れない。
まぁOSがWindowsでなければgoogle spreadsheetで代用すればいいんじゃないか?
要件を満たすことが出来ればだけど。
259:デフォルトの名無しさん
21/06/08 18:50:55.82 Yg8CMFGOM.net
Excel使うにしてもO365のWeb版Excelでいいでしょ
Windows要らん
260:デフォルトの名無しさん
21/06/08 18:58:32.10 3w2dwJfs0.net
>>257
画面制御行わないのであればね。
企業用のofficeライセンスが無いとJavaScriptが使えん
261:デフォルトの名無しさん
21/06/08 18:58:53.48 AJ4OLay60.net
今MacのVBA案件渡されて泣きそうなんだが
Windowsのが100倍良いわ
262:デフォルトの名無しさん
21/06/08 19:00:26.37 3w2dwJfs0.net
>>259
これな
263:デフォルトの名無しさん
21/06/08 21:27:43.29 z4uqk83n0.net
365ならMacでフルで使えんじゃないのか?
264:デフォルトの名無しさん
21/06/09 00:46:27.31 nFlUbaHj0.net
>>261
ブラウザ版は出来損ないだ
食べられないよ
265:デフォルトの名無しさん
21/06/09 07:59:16.59 N2Rw0+vQa.net
ieの操作なんだけど複数タブ開いてて、操作するタブ指定するにはどうすればいい?1つしかWindow開いてない状態だと問題ないものが、2つタブを開いたら、elementが見つかりませんてなる。
266:デフォルトの名無しさん
21/06/09 08:29:04.46 n2JobU4y0.net
>>263
なぜこのスレで聞くの?
タブは別のwindowだよ
267:デフォルトの名無しさん
21/06/09 08:30:46.71 ddohEedh0.net
>>263
んー、適当で申し訳ないけど
VBAではあんまりそういうことやらないんだけど、Javascriptで同じ名前の項目を拾おうとするとそれは項目のリストとか配列とかそんな感じのもので拾えるから
多分、その拾ったエレメントはそんな感じになってる気がする。(0)とか(1)とかつけてあげれば何か拾える気がするよ。違うかもしんないけど。
適当でごめんね。
268:デフォルトの名無しさん
21/06/09 10:21:52.46 w6w52mg40.net
【Ruby】window_handles・・・複数のウインドウハンドルを取得する
URLリンク(www.seleniumqref.com)
Ruby, Selenium Webdriver では、
配列のdriver.window_handles を使う
# 全てのウィンドウ(タブ)ハンドルを取得
allHandles = driver.window_handles
driver.switch_to.window( allHandles[0] ) # そのタブへ移る
driver.get( ここにURL ) # そのURLを開く
269:デフォルトの名無しさん
21/06/09 10:22:07.34 w6w52mg40.net
【Ruby】window_handles・・・複数のウインドウハンドルを取得する
URLリンク(www.seleniumqref.com)
Ruby, Selenium Webdriver では、
配列のdriver.window_handles を使う
# 全てのウィンドウ(タブ)ハンドルを取得
allHandles = driver.window_handles
driver.switch_to.window( allHandles[0] ) # そのタブへ移る
driver.get( ここにURL ) # そのURLを開く
270:デフォルトの名無しさん
21/06/09 15:40:43.61 TG9fTaOq0.net
PC Windows2021.6.8 Tue 17:00
最強のExcel使い決定戦、開幕―財務モデリングの腕を競うe-Sportsトーナメントが本日20時放送予定
マイクロソフトが贈る最新e-Sportsタイトルは「Excel」だ!
URLリンク(www.gamespark.jp)
271:デフォルトの名無しさん
21/06/09 15:58:13.91 ddohEedh0.net
バカスw
田中さんは出ないんだ?
272:デフォルトの名無しさん
21/06/09 20:26:23.84 QmGjGWRQa.net
ぶいびーえー以前にウチの取締役やってた方が60代半ばのジジイが関数始めて興味が出たらしい。
それはいいんだけどいちいち自慢してくるのがうぜー。
273:デフォルトの名無しさん
21/06/09 20:26:54.84 QmGjGWRQa.net
方なんかいらねーよ、クソジジイだよ
274:デフォルトの名無しさん
21/06/09 20:57:54.19 S3gddm5/0.net
…突っ込んでほしいのかな。
275:デフォルトの名無しさん
21/06/09 21:02:32.60 ImacXrDI0.net
😅
276:デフォルトの名無しさん
21/06/09 22:06:36.55 pEB4fflid.net
option explicit付けない選択肢もアリだと思うけどな。必要あれば宣言するだけだし
forとかで宣言するゴミ変数の宣言が軒並み排除されるのは割りと可読性良くなる
それに型の自動判断がそこそこ優秀な部類なのはVBAの特権
277:デフォルトの名無しさん
21/06/09 22:46:34.63 31fiFwiN0.net
>>267
望んでた回答と違うし、自力で解決できたけど。Seleniumて簡単そうやな。食わず嫌いせずにやってみようかな
278:デフォルトの名無しさん
21/06/09 22:50:22.93 JIfRBOPeH.net
SeleniumはVBAからでも使える
279:デフォルトの名無しさん
21/06/10 00:28:06.94 qgbXGMFL0.net
底辺で上から許可とれないのでSeleniumとかVBA本体に標準装備してください
280:デフォルトの名無しさん
21/06/10 17:40:32.42 O+Eef3D+M.net
>>65ですが、社内ネットワーク上の共有フォルダに入れているのが関係してそうです。
ファイルを開くたびに「編集を有効にする~」が出るので、それがThisWorkbook.saveと相性悪いような気がします。
281:デフォルトの名無しさん
21/06/10 18:55:35.54 hpxMOKds0.net
vba初心者すぎて躓いています。以下についてどなたか作成お願いできないでしょうか。
任意のフォルダを指定
↓
その中でファイル名に特定の文字列(ex.請求書)を含むExcelのシート全てを一括保護(パスワードあり)
↓
保存して閉じる
ネットで調べながら作っているのですが、上手く動かず諦めかけています。
よろしくお願いいたします。
282:デフォルトの名無しさん
21/06/10 19:09:40.41 nj0j+02p0.net
>>279
質問スレだから聞くのはいいけど丸投げで作ってくれと言うのはこのスレに限らずマナー違反。
大体「死ね」と言われるか「いくらで?」と高額吹っかけられることになる。
板自体の初心者だろうからいきなり言われて自殺されても困るし先に一応言っとくね。
283:デフォルトの名無しさん
21/06/10 19:26:01.53 jvMqVwBQ0.net
>>279
死ね
284:デフォルトの名無しさん
21/06/10 19:36:37.05 EkIqAHSmM.net
>>279
> ネットで調べながら作っている
ならそのコードを晒せ
285:デフォルトの名無しさん
21/06/10 19:58:07.22 hPVjNtLg0.net
解説サイトを見ると、たまにグローバルのApplicationから呼び出すのはなく
New Applicationでインスタンス化して使用しているコードがあります。
これらの違いは何なのでしょうか。
286:デフォルトの名無しさん
21/06/10 20:25:42.93 nj0j+02p0.net
>>283
ふーん、出来るんだ。
試してないけどそのままの意味じゃないかな?
今のじゃなくて新しいEXCELのアプリケーションを開いてそっちを操作するってことだと思うけど。
試してみた?
287:デフォルトの名無しさん
21/06/10 20:57:17.43 NAZXhhkQ0.net
>>279
ファイルシステムオブジェクトでFilesを取得してForEachでFileをひとつずつ処理する
288:デフォルトの名無しさん
21/06/10 21:13:03.65 BC8Qobv20.net
>>279
動きがランサムウェアそのものだなw
289:デフォルトの名無しさん
21/06/10 21:22:22.51 o9cpCdec0.net
>>279
丁寧に教える。
初心者なら一気に作ろうとしない。
シートを保護するスクリプトをつくる。
フォルダ内のファイル名をログとかに出すスクリプトを作る
文字列から特定の文字列があったら、メッセージボックス出すスクリプトをつくる
保存するスクリプトを作る
ここまで作れば、どの様にがっちゃんこすればいいかわかるはず
290:デフォルトの名無しさん
21/06/10 22:09:01.83 oO6awXFS0.net
Ruby では、wild card を使って、
例えば「*メモ*」で、「メモ」を含むファイル名
# . で始まる、隠し directory, file を除く
glob_pattern = "C:/Users/Owner/Documents/Ruby/*メモ*"
results = Dir.glob( glob_pattern )
.select { |full_path| File.file?( full_path ) } # ファイルのみ
puts results
出力
C:/Users/Owner/Documents/Ruby/Rails インストールメモ.txt
C:/Users/Owner/Documents/Ruby/コマンドのメモ.txt
291:デフォルトの名無しさん
21/06/10 22:54:22.53 3kBij+1mM.net
いつもあいつ=ruby馬鹿
292:デフォルトの名無しさん
21/06/10 23:32:18.35 hPVjNtLg0.net
>>284
試してみても普通に新しいエクセルが起動するだけですね
ただしウインドウはありません
ブックを作ってVisibleプロパティをTrueにしても表示されませんが、
一度FalseにしてからTrueにするとウインドウが表示されるというバグみたいな挙動があります
話を戻します
最近見たnew application使用例は、コントロールのイベントを無効化するのに
新しいApplicationインスタンスのEnableEventsをFalseにしていました
確かにそうしないとリッスンされるのですが何故何でしょうか
293:デフォルトの名無しさん
21/06/11 08:20:17.83 GsORq//4M.net
二ノ国では日本の法律は通用しないニダ
294:デフォルトの名無しさん
21/06/11 08:35:54.94 CCQcqmfl0.net
メリケンのゲームも連邦裁判所がどうたら普通に書いてなかったか
しらんぷりしときゃええがな
295:デフォルトの名無しさん
21/06/11 10:02:48.17 2HJAl0RV0.net
>>288
何かそれだとシート全てに保護を掛けるに至れてないな。
・Excelでどうやって使うのか
・細やかなセルやシートの操作はRubyからどうやって指定する?
この辺が満たせないと役に立たないからただのオナニーだね。
296:デフォルトの名無しさん
21/06/11 14:43:04.39 gasQKA4m0.net
>>270
いるんだよな大抵ひとりはエクセルでマウントジジイ
マウントしてくるヤツの心理がよくわからん
297:デフォルトの名無しさん
21/06/11 21:05:40.69 InPX9IhQ0.net
ExcelでマウントとれないからってRubyだと・・・とか言ってくる奴もな
298:デフォルトの名無しさん
21/06/11 22:57:15.06 gasQKA4m0.net
つか爺さん世代はパソコン自体バリバリ扱える人とまるっきしダメな人の格差が激しい印象だわ
299:デフォルトの名無しさん
21/06/12 03:51:47.70 wJQ4tIOMa.net
それ若い世代も使えん奴はひどい
300:デフォルトの名無しさん
21/06/12 07:30:19.18 fS2nWO8U0.net
若い世代は今スマホしか使った事がなくてPCの使い方分からんって子もかなりいるぞ
301:デフォルトの名無しさん
21/06/12 09:59:25.51 ejCJQwg0M.net
パスワード付きのファイル(複数)を一つのファイルをまとめようとして
①まとめ.cells(i.3) = パス付き.cells(i.2)
②dicitionaryを使いまとめファイルに統合
両方のやり方を試して①は出来て②が出来なかったんだけど、
パスを無視して②のやり方でやる方法ってないかな
一応、②でUserInterfaceOnly は使ってみたけどエラーが出ちゃって出来なかった
302:デフォルトの名無しさん
21/06/12 13:27:10.74 fuO5ak1E0.net
パス = path
パスワード = password
303:デフォルトの名無しさん
21/06/12 16:35:12.13 u6wU9ZvJ0.net
若いコは学校でPC使って授業受けてるイメージあるんだけどなぁ。。。
単にエクセルやワードに興味無いだけか
304:デフォルトの名無しさん
21/06/12 16:46:39.23 J6ubTdkqa.net
VBAだけでデータをWebから取得、加工、メール配信を自動化するのはどうかな?他のスクリプト言語とかも組みあわしたほうがいい?
305:デフォルトの名無しさん
21/06/12 16:57:46.63 AGhhEt85H.net
全員が完璧に暗記してたら偏差値や学歴で格差がつくはずないんだし、学校で習ったことの一部しか覚えてない方が普通ってこと
306:デフォルトの名無しさん
21/06/12 17:55:13.26 WuxRFpnv0.net
普通の公立だけど小中学校でPCの授業あったよ
学校内サイトとか社会科新聞とか書かされた
高校は大学進学だったから受験に意味のないPCなんて扱わなかったが、
大学はあらゆる申請からレポート提出まで全部PC(持ってない人は購入必須)だった
授業申請はスマホで出来なくはないだろうが、普通に使いづらい