[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 03/22 05:48 / Filesize : 289 KB / Number-of Response : 1047
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

Excel VBA 質問スレ Part57



1 名前:デフォルトの名無しさん mailto:sage [2018/09/10(月) 21:42:39.57 ID:K1uuwFLt.net]
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK


※前スレ
Excel VBA 質問スレ Part56
mevius.5ch.net/test/read.cgi/tech/1534976724/

331 名前:キいませんあなたが何を言いたいのかよくわかりません
ブックを開いた状態から起動するマクロで有用な具体例はなにかありませんか?
抽象的な答えでごまかそうとしてませんか?
[]
[ここ壊れてます]

332 名前:デフォルトの名無しさん mailto:sage [2018/09/23(日) 18:31:08.96 ID:RgL9otrm.net]
ハンカクでまた別人アピールしてるの?
いい加減に板を荒らすのは止めな

333 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 00:45:26.83 ID:LqyRy1HC.net]
ちょっと質問です。
とあるコードで
If 条件1 Then
MsgBox "メッセージ1"
End
ElseIf 条件2 Then
MsgBox "メッセージ2"
End
Else
End If
という記述を見たんですけど、Ifの中でEnd使うことってあるんですか?
やってる内容は
If 条件1 Then
MsgBox "メッセージ1"
End If
If 条件2 Then
MsgBox "メッセージ2"
End If
と同じなのかなと思ったんですけど、ご存知の方御教示頂ければ幸いです。

334 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 00:51:36.52 ID:cyCxPH/A.net]
>>321
Endのことはさておき、そのふたつのコードの意味は異なるよ

335 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 01:02:46.39 ID:LqyRy1HC.net]
>>322
本来意味が異なるのは分かるんですが、処理内容がそんな感じだったのでEndにはそういった意味があるのかな?と思って質問した次第です。

336 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 01:54:26.03 ID:GrunNCaI.net]
>>321
全く意味が違う。END使ったらプログラムが強制終了されてしまう。絶対に使うべきではない。
Sub main1()
Call sub1(True, True)
MsgBox "main終了"
End Sub
Sub sub1(条件1 As Boolean, 条件2 As Boolean)
If 条件1 Then
MsgBox "メッセージ1"
End
ElseIf 条件2 Then
MsgBox "メッセージ2"
End
Else

End If
End Sub
'結果:メッセージ1しか出ない

Sub main2()
Call sub2(True, True)
MsgBox "main2終了"
End Sub
Sub sub2(条件1 As Boolean, 条件2 As Boolean)
If 条件1 Then
MsgBox "メッセージ1"
End If
If 条件2 Then
MsgBox "メッセージ2"
End If
End Sub
'結果:メッセージ1、メッセージ2、main終了

337 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 03:08:18.87 ID:3gV95ADu.net]
Exit Sub とか Exit Function とかと違って、呼び出し元のプロシージャに返ることもなく一切のプログラムがそこで終了するコードってことだ。
Ifの中でEndを使うことがあるのかと訊かれれば、文法上は問題ないが俺だったら使わん。
もっとも、「早く返す」や「早く終了する」を追い求めたその人なりの結果かもしれんので、見かけたとしても内容次第で、問題のあるコードでなければとやかくは言わない。

338 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 05:43:58.48 ID:sHYzq55w.net]
>>321
Endステートメントを使うと、単にコードの実行が止まるだけでなくアプリケーションで保持していた全ての変数の値がリセットされ、アプリケーションに対する外部プロセスからの参照も遮断される

モードレス表示でフォームを表示している場合、値管理やカスタム常駐クラス使用のためにグローバル変数を使っている場合等には問題が生じるので本当に要注意

339 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 07:37:11.59 ID:E4VB1fuR.net]
状況わからんからなんとも言えんが致命的なエラー時に強制終了させるぐらいしかないと思う
>>321のコードは微妙にそう言うコード片な感じもするし



340 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 09:12:46.29 ID:ALTh+r7C.net]
>>321
多分エラーメッセージの後、後続処理をやりたくないのでendって書いたんだろう
exit subで抜けても呼び元に帰って続行するから

341 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 09:24:57.98 ID:LqyRy1HC.net]
皆さまありがとうございます。
ちゃんと読んでみたら終了するコードでした…お恥ずかしい…
今後質問する際は頭をリフレッシュさせて読み直してからに致します。
ご迷惑をお掛けしました。ありがとうございました!

342 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 09:47:07.47 ID:ltYXr3cK.net]
psやらrubyやら喚き叫ぶバカよりは良い w

343 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 10:16:18.94 ID:Z99vN/yN.net]
>>329
ところで

If 条件1 Then
 ・・・
ElseIf 条件2 Then
 ・・・
End If



If 条件1 Then
 ・・・
End If
If 条件2 Then


344 名前: ・・・
End If

では意味が違ってくるのはわかってますか?
[]
[ここ壊れてます]

345 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 10:25:02.72 ID:oCpujaFY.net]
周回遅れなアホ質問要らん

346 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 10:26:57.24 ID:Z99vN/yN.net]
>>332
いや、>>323のレスを見ると不安になるだろ

347 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 10:34:31.82 ID:LqyRy1HC.net]
>>331
ほんと何処に目をつけていたのか自分でも分からなくてお恥ずかしい限りですがElseの意味は分かっています。申し訳ないです…

348 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 12:24:14.30 ID:0AspGVrS.net]
>>334
訊かれてるのは ElseIf の意味だぞ

349 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 12:47:03.05 ID:3gV95ADu.net]
質問(した方が逆に質問される)スレ



350 名前:デフォルトの名無しさん [2018/09/24(月) 16:16:37.08 ID:Z99vN/yN.net]
https://qiita.com/Q11Q/items/b525330d043e2a775594
いつもながら薄気味悪い
誰に語りかけてるんだよ?

351 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 16:35:59.07 ID:e4NBE4Fp.net]
>>319
そもそもの考え方が違うから思い付かないんだろう。
例えば日付毎の生産量を表す表とグラフが有ったとする。
表示する期間を指定することでグラフ表示が変化するプログラムが有ったとしよう。

何でそんな機能が必要かといえば、表とグラフをにらめっこして、1週間後のグラフはどうだろうという要望や判断が有るからだ。

こんな例すら思い付かないんだから知識や技術が有ってもダメプログラマーなんだろうな。

352 名前:デフォルトの名無しさん [2018/09/24(月) 18:01:08.47 ID:qkXKwQlD.net]
荒らし本人が言ってもな

353 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 18:02:07.29 ID:NcXWYl5J.net]
>>337
webってそういうもんだよ
知らないの?何十年前の人間なの?

354 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 18:06:57.12 ID:In5MTxMl.net]
そんなのPowerShellかRubyで十分

355 名前:デフォルトの名無しさん [2018/09/24(月) 18:20:22.67 ID:Z99vN/yN.net]
>>340
qiita VBAタグの劣化は許しがたい
そうは思わないか?

356 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 18:28:34.71 ID:sPlVwsRd.net]
>>338
どの言語でも簡単にできる上にそういうツールって今はいくらでもあるんでVBAでやる理由としてはちょっち弱いですね
これはエクセル開いた状態のVBAじゃないと絶対無理だっていう事例を知りたいです

357 名前:デフォルトの名無しさん [2018/09/24(月) 18:32:02.32 ID:qkXKwQlD.net]
>>342
頭大丈夫か?

358 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 18:44:10.41 ID:e4NBE4Fp.net]
>>343
バーカ。
何でブックで保存するんだ?
そのファイルは結局どうするんだ?

Excelで開くんだよ。
何の為にそんなことするんだ?
業務では開いた上で人間が何らかの判断をする為だ。
そうじゃ無かったらExcelは必要ないし、人間が開く必要も無いし、ファイルもバイナリで良い筈なんだ。

開いた上で動作するものばかりである必要は無いが開いた上で作業するのが基本なんだからプログラムも開いた上で動作するのがメインなのは当たり前だろう。

359 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 18:47:21.59 ID:sPlVwsRd.net]
>>345
意味不明ですね
エクセルを開いたままVBAを使うことのメリットを納得させる決定的な具体例はまだですか?



360 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 18:48:07.49 ID:e4NBE4Fp.net]
>>343
お前の主張はExcelである必要も無い場合も含んでる。
というかその割合も多いだろう。
だからお前がここに来てるのもまったくおかしい。

絶対に無理とか

361 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 18:50:03.06 ID:e4NBE4Fp.net]
絶対に無理とかいい出したら、PC使わないと絶対無理な事例自体無くなってくるぞ。

紙とエンピツでOKという話になる。

362 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 18:51:22.73 ID:e4NBE4Fp.net]
>>346
開いて作業するのが基本。
わざわざ開かずに作業する方がおかしい。

363 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 18:52:11.10 ID:sPlVwsRd.net]
主張が支離滅裂で理解できません

エクセルを開いたままVBAを使うメリットを納得させる決定的な事例を聞いてるのですが
そのような事例は存在しないのですか?

364 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 18:52:40.76 ID:e4NBE4Fp.net]
>>346
意味不明なのはお前。
開いて作業できること自体メリットだよ。

365 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 18:53:11.09 ID:e4NBE4Fp.net]
>>350
既に説明済みだが。

366 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 18:54:30.36 ID:sPlVwsRd.net]
>>351
そのメリットを納得させる決定的な事例を聞いてるのですが
そのような事例は存在しないのですか?

367 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 18:55:55.65 ID:e4NBE4Fp.net]
そもそも

368 名前:最初から支離滅裂なのはお前じゃないか。

じゃあ、お前はどうしても絶対にVBAではいけない事例をあげられるのか?
そもそもVBAを否定する奴の主張の方が絶対どころかほとんど大した理由になってないものばかりじゃねーか。
[]
[ここ壊れてます]

369 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 18:56:13.26 ID:e4NBE4Fp.net]
>>353
既に説明済み。



370 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 18:57:30.40 ID:e4NBE4Fp.net]
>>353
結局、お前の主張を要約すると「VBAは嫌い」というだけだ。

371 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 19:00:43.65 ID:NcXWYl5J.net]
>>342
思わない
エクセル以外の処理をvbaで色々やるのが間違ってるんだよ

C#にでもまとめて、コマンドプロンプトで処理すればいい
もう文字コードだのお節介機能で自動変換だの疲れた

ってか、”1-1-1”を普通に取り込めないとかもうウンコofウンコすぎてしんどい

372 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 19:01:15.42 ID:sPlVwsRd.net]
>>354
いけないということはないですが楽で効果的な手法があるなら常識的に考えてそちらを使うのが自然ですよね
あえて非効率な方法を選ぶならそれなりの理由が有るはずです
その理由とそれを納得させるような事例を知りたいのです
ただ単にその事例に興味があります

373 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 19:05:58.04 ID:e4NBE4Fp.net]
>>358
自然w
頭の悪さが滲み出てるわw
よくそんなこっぱずかしいことが言えるな。

Excelのブックは開いた状態で作業するのが「自然」なんだからお前の主張に則ればVBAが一番有利という結論だな。

374 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 19:08:11.84 ID:e4NBE4Fp.net]
自然などと書けばこういう突っ込みが来ることも想像出来ないんだから話にならない。

375 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 19:09:15.54 ID:sPlVwsRd.net]
>>359
エクセルを開いたままVBAを使うことが他の言語やツールと比べてメリットがあると納得させる事例は存在しないのですか?

376 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 19:11:39.15 ID:GrunNCaI.net]
>>358
使うのに必要なスキルが極めて少ない

377 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 19:16:37.23 ID:sPlVwsRd.net]
答え無しですが時間がもったいないのでこの辺りで切り上げましょうか

378 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 19:19:46.76 ID:e4NBE4Fp.net]
人には絶対を求める癖に自分は自然ですます。
いったい、どういう頭の構造になってるんだろう。

379 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 19:54:15.09 ID:Z99vN/yN.net]
そもそも俺はVBAの言語仕様がなかなか良いと思ってるんだが
そういう前提に立つ人間は少ないのかな?



380 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 20:14:30.52 ID:Go3cawEH.net]
>>365
ジョークとか皮肉で言ってる?
ちょっとよくわからないんだけど

381 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 20:14:49.56 ID:8Eg6qm1l.net]
20年間COBOLとPL/Iをメインでやってきた人が、「VBAは良い。生産性がとても優れている。」と言っていた
まあ人それぞれということだ

382 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 20:15:16.80 ID:Z99vN/yN.net]
>>366

383 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 20:16:36.26 ID:Z99vN/yN.net]
>>366
なぜ皮肉だと?
「とても良い」とまでは言わないが、そこそこ良い言語仕様じゃないか。
そう思う人間も多いだろう。

384 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 20:18:56.67 ID:E4VB1fuR.net]
>>365
言語仕様は基本VB6なので当時としてはよくできてた
でもさすがに20年も経つと色々見劣りするところが出てくるわけで

385 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 20:25:47.99 ID:3gV95ADu.net]
>>337
気にしてもハゲるだけなんじゃねーの

>>364
閉じた業務系でVBAと肉入り以外の選択肢を潰されてやむを得ずVBA触った俺みたいな変人もいるし、
まぁその手の固定観念でもあるか、あるいは構ってちゃんなだけじゃねーの

386 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 20:27:32.35 ID:Z99vN/yN.net]
>>370
それはもちろんそうだが、それによって致命的に使いにくくなっているわけじゃないしな。
なんか上の方の議論が「使いにくい言語をあえて使う理由は何なの?」みたいなノリで、
言語として使いにくいことが前提みたいになってる点が気になった。
「VBAは十分使いやすい言語だ」という前提を下ろすつもりのない人間もいるわけで。

387 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 20:27:41.54 ID:vr3+WUA5 ]
[ここ壊れてます]

388 名前:.net mailto: 「良い」にも色々あるからな
まともなプログラミングの基礎のない低スキルな人間が、新しいことを一切学ばずとも20年間仕事できてるわけで、これはすごいことだよ
[]
[ここ壊れてます]

389 名前:デフォルトの名無しさん [2018/09/24(月) 20:28:51.56 ID:5zI+X6hO.net]
>>370
当時からガチ勢と比べれば見劣りすることだらけだったわw何知ったかしとんねんプロさんwwww



390 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 20:48:27.78 ID:E4VB1fuR.net]
>>372
使い易さなんて他の言語との相対的なもの
他の言語の便利機能知ってしまったらあの機能もないのか…とかこの機能があれば…ってなるのはしょうがない

>>374
はいはい w

391 名前:デフォルトの名無しさん [2018/09/24(月) 20:54:52.18 ID:5zI+X6hO.net]
>>375
うむ、バカはしゃべらん方がよろしいw

392 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 21:28:35.65 ID:Hov49HPU.net]
くだらない言い合いでスレ伸びまくりで草

393 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 21:48:48.21 ID:GrunNCaI.net]
エクセルVBAは(ユーザーの)エクセルの操作を支援する場面において無類の力を発揮する。
しかしちょっと込み入った処理をしようとすると近代的な言語で書きたくなることは確かにある。

そこで質問です。
エクセル上でボタンを押す
→VBAでイベントを受ける
→外部プログラムにSelectionを渡す
→Selection(Range)を元に処理を実行
→処理結果を二次元配列データでVBAで受け取る
→VBAでデータを加工する。
→ワークシートにデータを書き出す。
尚、本エクセルは共有フォルダ上において複数名が交代で使用する。

こういったことがしたい場合何で書いたらいい?C#?PowerShell?

既存のVBAも活かしたいので、全部C#とかに一新しろっていう回答は無しでお願い。

394 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 21:53:45.14 ID:QDf0aD0O.net]
VSTOでアドオンだな
VBA資産とかいうゴミは捨ててC#で一新しよう

395 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 21:56:06.10 ID:NcXWYl5J.net]
>>378
csvか何かに吐き出せばどんな言語でも処理できるっしょ
ってかその程度ならvbaで頑張るわ

396 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 22:02:20.31 ID:Z99vN/yN.net]
>>378
> →Selection(Range)を元に処理を実行
> →処理結果を二次元配列データでVBAで受け取る

この2点からしてVBAで完結する案件
最初からRange→配列にして処理すればいいからね

397 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 22:19:41.01 ID:GrunNCaI.net]
>>380,381
シンプルに書きすぎた。
たとえばSelectionの中身がファイルのパスで、そのファイルが複雑なデータ形式(たとえばAutoCAD dwg)を外部プログラムで解読したいとする。
(VBAのクラス関連の機能がショボすぎて無理だったので、前にC#で書いたものがある)
これをVBAから呼び出して使いたいってこと。

諸事情によりエクセルブックと同じフォルダにps1なりdllを置く必要があって、これを呼び出せると助かる。

398 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 22:24:01.34 ID:Z99vN/yN.net]
>>382
じゃあSelectionとか関係なくファイルパスを引数にするDLLを書いてVBAから呼び出せばいいじゃん。
VBA側では
ByVal path As String


399 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 22:34:16.30 ID:Z99vN/yN.net]
>>382
まあCだと諸般の事情から文字列を渡す場合でも
ByVal path As Stringじゃなくて
ByRef path As Varian ってインタフェースがいいわけですが
C#だと知らん



400 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 22:44:58.17 ID:sPlVwsRd.net]
>>378
VBA->C#(COM)->PowerShell->(PS, C#, CMD, VBS, etc.)

401 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 23:06:47.65 ID:GrunNCaI.net]
>>383,384,385
同じフォルダのDLLを呼ぶように出来るの?
COM使うとしたらregasmが必要になるらしいけど・・・
ネットワーク共有フォルダ上のは設定出来ないのでは?
あ、遅延バインディングで出来るんだろうか

402 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 23:17:50.47 ID:Z99vN/yN.net]
>>3

403 名前:86
自作DLLをVBAから呼ぶっていう単純な話だよね?
別にどんなフォルダにあろうと関係ないけど。
あとSelectionそのものじゃなくて配列化したデータを渡すんだったらCOMなんていらなくて
WIN32APIだけでできる。
[]
[ここ壊れてます]

404 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 23:30:05.56 ID:3gV95ADu.net]
要はCADデータからメタ情報を抽出して、できればExcel形式で一覧化したい系の?

405 名前:デフォルトの名無しさん mailto:sage [2018/09/24(月) 23:46:24.03 ID:GrunNCaI.net]
>>387
そうだね。.NET系のDLLの関数を使いたい系。
COM登録せずに呼び出す方法あるのか。
参考URLとかもらえないだろうか。

>>388
メタ情報じゃないかなー図形情報の位置関係から特定の情報だけリストアップしてる。
まぁ例だからこれに限った話じゃないのだけど、VBAで書き直すのは無理ゲーすぎる。

406 名前:388 mailto:sage [2018/09/25(火) 01:06:10.25 ID:s1AsV/RM.net]
>>389
確かにそれだと自作DLLぐらいしか解決策なさそうだな。
んで、C#で書いた.NET系のDLLの関数をRegAsm使わないで呼び出したいと・・・悪いけど正直やったことない。
が、DLLをEXCEL.EXEと同じ所に置けるなら↓の方法が使えるかもしれない。
www.ka-net.org/blog/?p=6198
全然見当違いだったら申し訳ないが。

407 名前:デフォルトの名無しさん mailto:sage [2018/09/25(火) 18:07:06.26 ID:HENVIdME.net]
フォームにオプションボタン1,2,3、リストボックス1,2,3を設置
オプションボタン2にチェックがあるとき、リストボックス2表示、リストボックス1,3は非表示
という具合に、オプションボタンにチェックがあるときに対応するリストボックスを表示、それ以外を非表示にしたいです

Private Sub UserForm_Activate()
If OptionButton1.Value = True Then
ListBox1.Visible = True
ListBox2.Visible = False
ListBox3.Visible = False

ElseIf OptionButton2.Value = True Then
ListBox1.Visible = False
ListBox2.Visible = True
ListBox3.Visible = False

ElseIf OptionButton3.Value = True Then
省略
end if

と書いてみたのですが、リストボックスの表示、非表示をコントロールできません
どうすればいいでしょうか

408 名前:デフォルトの名無しさん mailto:sage [2018/09/25(火) 18:25:16.89 ID:Rh4u2+TF.net]
>>386
プロフェッショナルなら可能

409 名前:デフォルトの名無しさん mailto:sage [2018/09/25(火) 18:35:56.01 ID:quZOCI3i.net]
>>391
オプションボタンのクリックイベントに書かないと動かなくて当然



410 名前:デフォルトの名無しさん mailto:sage [2018/09/25(火) 19:09:20.22 ID:5hhJfzHj.net]
>>389
まず、そのDLLはCOMなのか、通常の呼び出し用なのか、.NET用なのか

COMなら参照設定なりCreateObjectなりで
通常のDLLならDeclare Function(SUB)で呼び出せば良いだけ

.NETのDLLは.NET以外から呼び出すのは難しいので、素直にCOM公開する方が楽


まあその相手方(たとえばAutoCAD?)がCOM公開してくれるのが一番楽だろうけど

411 名前:デフォルトの名無しさん mailto:sage [2018/09/25(火) 19:09:27.10 ID:HENVIdME.net]
>>393
あーそうでした!お恥ずかしい
ありがとうございました

412 名前:デフォルトの名無しさん [2018/09/25(火) 19:15:41.25 ID:SdejvHFK.net]
すみません、切実に助けて頂きたいです。
現在、VBAからoracle12cにado接続してデータアップデートを行う処理を作成しています。
ですが、更新はうまく行くのですが、なぜか処理件数がどうしても0になってしまいます。
何時間も色んなサイトを参考にしたり、したのですが、ダメで…
色々なサイトにあるソースをコピペして接続先やテーブル名のみ変えて貼ったりもしてみましたが、実行するとやはり更新はされるのに処理件数が取得できません。
もう自分ではどうすることも出来ず、どなたか助けて下さい…お願いいたします。

413 名前:デフォルトの名無しさん mailto:sage [2018/09/25(火) 20:31:14.47 ID:ObO6oAGo.net]
>>396
どうやって取ろうとしている?

414 名前:デフォルトの名無しさん mailto:sage [2018/09/25(火) 20:41:07.98 ID:/T1GixS7 ]
[ここ壊れてます]

415 名前:.net mailto: >>396
当然、これを見てlong型の第2引数を指定した…ってのは勿論やったんだよね?
https://msdn.microsoft.com/ja-jp/library/cc364125.aspx
[]
[ここ壊れてます]

416 名前:デフォルトの名無しさん [2018/09/26(水) 00:30:33.04 ID:17jq3B2z.net]
WinScard API使ってリーダーに設置したカードのIDmをセルに入力させたいのですが、うまく機能しません。
サンプルコードがありましたらご教示願います。

417 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 01:13:21.41 ID:6OKvzXmf.net]
>>396
プロパイダ(ドライバ)によってはレコード件数返さん奴があったはず
一回プロパイダ変えて試してみ

最悪は更新と同じ条件のselect投げて件数取得してから更新かけれ

418 名前:396 [2018/09/26(水) 09:21:14.19 ID:rrNz/9UY.net]
397、396
コマンドオブジェクトから、以下のようにしてやっていました。
com.execute(re)
comはADODB.COMMANDで、updete文を設定してあり、更新自体はうまくいきます。
reはlong型の変数です。
マニュアルのとおり、コネクションでexecuteもやってみたのですが、結果は返らず…

400
Microsoft ACTIVEX data objects 6.1を使ってみているのですが、ほかのバージョンにしてもダメでした…
ADO接続を使用する上で、必要な参照が上記以外にあるのでしょうか…


皆さんすみません、ほんとうに素人丸出しで申し訳ございません…

419 名前:デフォルトの名無しさん [2018/09/26(水) 16:42:22.74 ID:JgSk1Rg0.net]
VBAの勉強をしようと思うのですが、まず何から始めればいいですか?教えてください。



420 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 17:05:59.73 ID:cCj/GZBP.net]
まず服を脱ぎます。

421 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 18:16:51.93 ID:Dt06YZ+t.net]
>>402
まずやりたい事を考えるといい。

最初は既存の関数の真似するプログラムでも書いて基本的な書き方を覚えるとかオススメ。
関数使えばチェックできるし。

慣れてきたら、百ます計算を作るでもいいし、ナンプレを作るでもいい。日常的にエクセルでやってる操作があるなら自動化してみるでもいい。

そのために必要なことはググれば全部出てくる。

422 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 18:45:15.00 ID:OGb2Ur6B.net]
以下二点留意すればあとはググりながら独学で大丈夫かと思います

・普通に日英両方でググっても出てこなかったら他のモダンな言語の出番だと察する癖をつける
・bufとかSub Sample1()とかobjFsoといった特徴的な表記をサンプルコードで多用しているサイトは悪いコードの見本市なので極力真似ないように今から気を付ける

423 名前:デフォルトの名無しさん [2018/09/26(水) 19:12:00.05 ID:+un+mAjX.net]
そしておもむろに肛門にこびりついトレペかすを掃除します。

424 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 19:12:58.42 ID:SfBrsqof.net]
>>401
12cならOracle.ManagedDataAccessがオススメ

425 名前:デフォルトの名無しさん [2018/09/26(水) 21:33:09.71 ID:JgSk1Rg0.net]
>>404
いきなり参考書から始めないほうがいいってネットに書いてありましたけど、本当ですか?

426 名前:デフォルトの名無しさん [2018/09/26(水) 22:45:53.91 ID:+un+mAjX.net]
ネットに書いてある事を素人が真似ると最悪直腸が破裂する危険もあります。
初心者が浣腸プレイに挑戦する時は必ず上級者に直接教えてもらうようにしまちょう。

427 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 23:16:47.85 ID:4uP8tILz.net]
>>409
それ、面白いと思って書いたの?

428 名前:デフォルトの名無しさん [2018/09/26(水) 23:17:53.84 ID:+un+mAjX.net]
>>410
面白いと思ったの?w

429 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 23:33:31.70 ID:4uP8tILz.net]
>>411
いや、微塵も
笑わせるつもりがないのなら何で書いたのかなと思って



430 名前:デフォルトの名無しさん [2018/09/26(水) 23:35:48.77 ID:+un+mAjX.net]
>>412
じゃなんで面白いと思ったの?って書いたの?w

431 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 23:48:40.23 ID:4uP8tILz.net]
>>413
滑ってるようにしか見えなかったから

432 名前:デフォルトの名無しさん [2018/09/27(木) 08:01:55.54 ID:99b9Jx0M.net]
>>414
結局おまえが盛大にスベっとるやんw恥をしれw

433 名前:デフォルトの名無しさん mailto:sage [2018/09/27(木) 08:16:20.10 ID:zQmuEMQe.net]
>>408
画面で一行ごとの動きを見ながら勉強した方が解説読むより理解しやすい。タイピングする時間も解説を読む時間も無駄。

434 名前:デフォルトの名無しさん mailto:sage [2018/09/27(木) 12:17:06.67 ID:UAsp+BRN.net]
>>402
まず入門書かって読めばいいんじゃね

435 名前:デフォルトの名無しさん mailto:sage [2018/09/27(木) 12:26:33.91 ID:UAsp+BRN.net]
勉強のやり方をを勉強しないと勉強できないとか

436 名前:デフォルトの名無しさん [2018/09/27(木) 21:40:20.96 ID:hL85+V3Z.net]
https://i.imgur.com/69DoZWN.jpg

どうしても必要で困っています

どなたか詳しい方がいらっしゃったら作成をお願いします。

437 名前:デフォルトの名無しさん mailto:sage [2018/09/27(木) 21:48:20.24 ID:qqpzpvHf.net]
>>419
SUMIFSで出来ると思うよ。
VBA使うにしてもSUMIFSを使うのが効率の良いやり方だと思う。

438 名前:デフォルトの名無しさん mailto:sage [2018/09/27(木) 21:54:42.81 ID:MgIWwOWH.net]
>>419
サンプルデータあげてくれれば作るよ
そのファイルの上から30行くれ

まぁやることは
JAN & 有効期限 & ロット番号の作業列作ってピボットに突っ込むだけだけどな

439 名前:デフォルトの名無しさん [2018/09/27(木) 21:55:15.47 ID:hL85+V3Z.net]
>>420
ありがとうございます。
ググってその関数を見つけたのですが、どう記述したら実現出来るのかが分からなくて…



440 名前:デフォルトの名無しさん [2018/09/27(木) 21:56:35.93 ID:hL85+V3Z.net]
>>421

サンプルデータってどこにどうやってアップロードすればいいですか??

441 名前:デフォルトの名無しさん [2018/09/27(木) 22:10:56.58 ID:pq96CSzd.net]
普通にデータソースをそのブックのシートにして
SQL書けばきっと簡単にできる

VBAなんか不要

442 名前:デフォルトの名無しさん mailto:sage [2018/09/27(木) 22:19:36.54 ID:MgIWwOWH.net]
>>423
fast-uploader.com/
「ファイルを選択」
「アップロード開始」

これが出来ないなら流石に何もしない

443 名前:デフォルトの名無しさん [2018/09/27(木) 22:21:31.13 ID:hL85+V3Z.net]
>>425

fast-uploader.com/file/7093610017708/

444 名前:デフォルトの名無しさん [2018/09/27(木) 22:22:48.42 ID:hL85+V3Z.net]
>>425

ありがとうございます。
426のコメントでアップロードしています。
ご確認ください(^-^)

445 名前:デフォルトの名無しさん [2018/09/27(木) 22:30:26.82 ID:pq96CSzd.net]
https://i.imgur.com/g0LaQIP.png
sheet1

https://i.imgur.com/CswmAtc.png
sheet2
※ sheet2にsheet1の結果を抽出

↓この抽出結果
SELECT min(`Sheet1$`.aho) , sum(`Sheet1$`.baka) , min(`Sheet1$`.じゃま)
FROM `himistu\baka.xlsx`.`Sheet1$` `Sheet1$`
group by `Sheet1$`.aho

446 名前:デフォルトの名無しさん [2018/09/27(木) 22:48:24.69 ID:pq96CSzd.net]
fast-uploader.com/file/7093611609249/
完成

447 名前:デフォルトの名無しさん mailto:sage [2018/09/27(木) 22:54:14.35 ID:MgIWwOWH.net]
>>429
間違ってない?
ユーロジンが一つになっている

448 名前:デフォルトの名無しさん [2018/09/27(木) 23:00:45.54 ID:hL85+V3Z.net]
>>429
早速の作成ありがとうございます。

私の伝え方が不十分だったかも知れませんが、430のコメントの通りです。

お時間があれば修正していただけると助かります。

449 名前:デフォルトの名無しさん [2018/09/27(木) 23:03:47.01 ID:pq96CSzd.net]
fast-uploader.com/file/7093612560800/
よしなおした



450 名前:デフォルトの名無しさん [2018/09/27(木) 23:06:15.22 ID:hL85+V3Z.net]
>>432
ありがとうございます。
ちなみに、新たにデータを作成するのですが、そのデータに対して処理するにはどのようにすればよいですか??

451 名前:デフォルトの名無しさん mailto:sage [2018/09/27(木) 23:09:53.34 ID:MgIWwOWH.net]
あら負けた
fast-uploader.com/file/7093612906901/

ピボットで表みたいにするやり方がわからんかったわ

452 名前:デフォルトの名無しさん [2018/09/27(木) 23:14:28.37 ID:pq96CSzd.net]
↓セパゾン錠2を100個追加
https://i.imgur.com/PgDS

453 名前:jOe.png

↓[データ]タブ→[すべて更新]押下
https://i.imgur.com/mSvw0XM.png
セパゾン錠2が155個になってる

カンペキ
[]
[ここ壊れてます]

454 名前:デフォルトの名無しさん mailto:sage [2018/09/27(木) 23:23:57.47 ID:MgIWwOWH.net]
>>423
この集計、どうやって作ったか教えて下さい!
テーブル作る所までしかわかりませんでした

455 名前:デフォルトの名無しさん [2018/09/27(木) 23:43:17.54 ID:pq96CSzd.net]
新規に作成したい場合

[データ]タブ → [その他のデータソース] → [Microsoft Query]
 ↓
Excel Files
 ↓
このファイル
 ↓
Sheet1$ > → 次へ → 次へ → 次へ → 。。。クエリの編集を行う → 完了
 ↓
SQL
 ↓

SELECT `Sheet1$`.YJコード, Sum(`Sheet1$`.前月末在庫数), Min(`Sheet1$`.前月末評価単価), Min(`Sheet1$`.薬品名), Min(`Sheet1$`.単位名), Min(`Sheet1$`.薬価), Min(`Sheet1$`.通常仕入れ先コード),
Min(`Sheet1$`.発注点), Min(`Sheet1$`.JANコード), Min(`Sheet1$`.棚番1), Min(`Sheet1$`.棚番2), Min(`Sheet1$`.枝番), Min(`Sheet1$`.包装名称), `Sheet1$`.有効期限, `Sheet1$`.ロット番号
FROM `ひみつ\サンプルデータ.xlsx`.`Sheet1$` `Sheet1$`
GROUP BY `Sheet1$`.YJコード, `Sheet1$`.有効期限, `Sheet1$`.ロット番号

 ↓

[ファイル] → Microsoft Office Excelにデータを返す

コレでイケル
一件落着

456 名前:デフォルトの名無しさん mailto:sage [2018/09/27(木) 23:56:33.07 ID:MgIWwOWH.net]
>>437
ありがとー!

457 名前:デフォルトの名無しさん mailto:sage [2018/09/27(木) 23:57:51.93 ID:MgIWwOWH.net]
エクセルって自分自身をソースにしてSQL発行なんてできたのか・・・
凄すぎて泣けてきた。もっと早く知りたかったな

458 名前:デフォルトの名無しさん [2018/09/28(金) 00:15:50.74 ID:h9+2U6ZR.net]
>>437
作成を依頼したものです。
まだ詳しく確認できていませんが、色々とスピーディーに対応していただきありがとうございます。

459 名前:デフォルトの名無しさん mailto:sage [2018/09/28(金) 04:54:48.92 ID:7Dx3JKmZ.net]
よくこんな馬鹿を相手にするな



460 名前:デフォルトの名無しさん mailto:sage [2018/09/28(金) 07:18:03.33 ID:3N0zeARs.net]
以上、無能の自己紹介でした

461 名前:デフォルトの名無しさん [2018/09/28(金) 09:03:04.35 ID:zkBwEOAZ.net]
なんちゃってマップはどうなった

462 名前:デフォルトの名無しさん mailto:sage [2018/09/28(金) 18:29:54.42 ID:AnMtzl3w.net]
>>442
悔しいか、屑

463 名前:デフォルトの名無しさん mailto:sage [2018/09/28(金) 19:43:53.67 ID:3N0zeARs.net]
>>444
おっ!
天才様の登場だ〜〜〜www

464 名前:デフォルトの名無しさん [2018/09/28(金) 21:17:46.20 ID:k5h2WtG4.net]
やっぱりな
この板で役に立つレスは
オレしかしてない

465 名前:デフォルトの名無しさん mailto:sage [2018/09/28(金) 21:26:48.63 ID:mtesGZvP.net]
天才様ドーナツ作って

466 名前:デフォルトの名無しさん mailto:sage [2018/09/28(金) 23:16:32.45 ID:AJk9wJBe.net]
>>446
でもお前、VBAしか出来ないじゃん

467 名前:デフォルトの名無しさん [2018/09/29(土) 16:35:28.06 ID:V4hAUMop.net]
>>432
Excel2010じゃ動かないんですかね

468 名前:デフォルトの名無しさん [2018/09/29(土) 17:27:14.21 ID:IuTgmxg/.net]
1. サンプルデータ.xlsxをダウソ(>>426
2. aho.dqyをダウソ(fast-uploader.com/file/7093764952195/
3. aho.dqyをテキストエディタで開く
4. aho.dqyの【ひみつ】をサンプルデータ.xlsxがあるディレクトリフルパスに置換
5. aho.dqyをダブルクリック

コレでイケル
バカでもチョンでもイケル

>>432はExcel2010がダメなワケじゃない
知能が著しく低いヤツには動くようにはできない

469 名前:デフォルトの名無しさん mailto:sage [2018/09/29(土) 20:04:17.86 ID:m1u3SrFL.net]
だが気をつけて欲しい
Jet 4.0 は64bit版には対応していない



470 名前:デフォルトの名無しさん mailto:sage [2018/09/29(土) 20:04:56.48 ID:UGjn5ihf.net]
久々に覗いたらなんじゃこりゃ・・・質問した人、理解できてるのか? これ。
まぁ理解できるならSQLでもいいだろうけどさ。

>>440
開業医んとこか薬局んとこか分からないけど・・・まぁその、お疲れ様。
とりあえず分からないようなら他の解決策もあるのでその旨言ってね。

471 名前:デフォルトの名無しさん mailto:sage [2018/09/29(土) 20:12:30.98 ID:UGjn5ihf.net]
>>440
ついでに。

>元の在庫管理データっぽいの


472 名前:白lであった方が良い部分が文字列として入力されてる。問題なければそのままで良いけど。
それより、有効期限とロットNo.が空欄の薬剤があるけど大丈夫? たぶんデータの取り出し方の問題か何かだと思うけど。

>SQL
作ってくれた人には申し訳ないけど、JANコードじゃなくてYJコードで集計しちゃってるので一応注意。
まぁどっちでも大して変わらないんだけど。
[]
[ここ壊れてます]

473 名前:デフォルトの名無しさん [2018/09/29(土) 23:48:20.58 ID:IuTgmxg/.net]
aho.dqyの抽出問合せを修正すれば(@〜Bの箇所を修正)すぐに修正できる

(修正前)

SELECT aho.YJコード, @
  Sum(aho.前月末在庫数),
  Min(aho.前月末評価単価),
  Min(aho.薬品名),
  Min(aho.単位名),
  Min(aho.薬価),
  Min(aho.通常仕入れ先コード),
  Min(aho.発注点),
  Min(aho.JANコード), A
  Min(aho.棚番1),
  Min(aho.棚番2),
  Min(aho.枝番),
  Min(aho.包装名称),
  aho.有効期限,
  aho.ロット番号
FROM
  `【ひみつ】\サンプルデータ.xlsx`.`Sheet1$` aho
GROUP BY
  aho.YJコード, B
  aho.有効期限,
  aho.ロット番号

474 名前:デフォルトの名無しさん [2018/09/29(土) 23:50:30.45 ID:IuTgmxg/.net]
 
(修正後)

SELECT Min(aho.YJコード), @
  Sum(aho.前月末在庫数),
  Min(aho.前月末評価単価),
  Min(aho.薬品名),
  Min(aho.単位名),
  Min(aho.薬価),
  Min(aho.通常仕入れ先コード),
  Min(aho.発注点),
  aho.JANコード, A
  Min(aho.棚番1),
  Min(aho.棚番2),
  Min(aho.枝番),
  Min(aho.包装名称),
  aho.有効期限,
  aho.ロット番号
FROM
  `【ひみつ】\サンプルデータ.xlsx`.`Sheet1$` aho
GROUP BY
  aho.JANコード, B
  aho.有効期限,
  aho.ロット番号


この修正で、どう集計されてるか理解できるハズ

475 名前:デフォルトの名無しさん mailto:sage [2018/09/30(日) 00:00:43.46 ID:TbDeVj+o.net]
自分には理解できていても質問者が理解できているかは別

476 名前:デフォルトの名無しさん mailto:sage [2018/09/30(日) 00:03:38.45 ID:ItvcYfS7.net]
>452
内容的にドラッグストアだと思う
ってか俺がドラッグストア勤務

477 名前:デフォルトの名無しさん mailto:sage [2018/09/30(日) 14:48:48.37 ID:I0OjYnSY.net]
>>451
Jetの後継でACE.OLEDBってのがある
64ビット版もある

問題は、32ビット版と64ビット版の共存ができないが

478 名前:デフォルトの名無しさん mailto:sage [2018/09/30(日) 17:57:31.99 ID:3+iEwgWt.net]
作成依頼のVBAです。どなたかお願いします。
フィルタオプションを使ったVBAなのですが、上手い方法がないものか・・。

用意するシート
「総合商品情報」、「抽出条件」、「denpyou」「date」「tantou」「kata」「kazu」の7つを用意

総合商品情報のA1に「伝票No.」、B1に「日付」、C1に「担当」、D1に「型番」、E1に「数量」と記載され、
そして各項の2行目以降にデータが延々と羅列されている。

そこから特定の条件の情報を抽出したい。
条件はシート「抽出条件」にある。
シート「抽出条件」のA1〜E1は各項目の名前があり、
A2〜E2の条件で抽出したい。

A1=「伝票No.」 A2=「1001」
B1=「日付」 B2=「2018/1/1」
C1=「担当」 C2=「山田」
D1=「型番」 D2=「A-001」
E1=「数量」 E2=「1」

抽出条件が伝票No.「1001」で抽出したデータはシート「denpyou」のA1に抽出
日付「2018/1/1」で抽出したデータはシート「date」のA1に抽出
担当「山田」で抽出したデータはシート「tantou」のA1に抽出
型番「A-001」で抽出したデータはシート「kata」のA1に抽出
数量「1」で抽出したデータはシート「kazu」のA1に抽出する。

ただし、抽出条件に記載があっても、総合商品情報には記載がない場合もある。
(※例えば、抽出条件「山田」が総合商品情報のC列にはないとか)
その場合はエラーを無視して、他のシートの抽出を実行して欲しい。

※分かりにくい説明かもしれませんが、よろしくお願いします。

479 名前:デフォルトの名無しさん mailto:sage [2018/09/30(日) 18:03:15.18 ID:FLQTI8+6.net]
SQL発行すれば何とかなると思う



480 名前:デフォルトの名無しさん mailto:sage [2018/09/30(日) 18:16:07.23 ID:hh5CI8rl.net]
VBAなんか使わなくても普通にVLOOKUPで一瞬でできるな

481 名前:デフォルトの名無しさん mailto:sage [2018/09/30(日) 23:25:01.00 ID:BlMeh26g.net]
それ、作ってもらったとして、自分でメンテできます?

482 名前:デフォルトの名無しさん mailto:sage [2018/09/30(日) 23:39:46.62 ID:ItvcYfS7.net]
vlookupと作業列でいいんじゃねって思ってしまう

483 名前:デフォルトの名無しさん [2018/09/30(日) 23:40:53.09 ID:aYXyCrkn.net]
ああ
オレなら余裕でサクッとできるわあ

キミラ低能にコレできる?

VLOOKUPでは行は1行しかとれない
少なくともコレではできない

484 名前:デフォルトの名無しさん mailto:sage [2018/09/30(日) 23:47:05.68 ID:ItvcYfS7.net]
>>459
fast-uploader.com/file/7093874344745/
こんな

485 名前:漢字でしょ
テキトーに作ったけど多分もんだいはないと思う
[]
[ここ壊れてます]

486 名前:デフォルトの名無しさん mailto:sage [2018/09/30(日) 23:49:34.63 ID:ItvcYfS7.net]
>>464
自己紹介好きだねぇ
君はエクセル覚えたての中学生かなんかだと思うけど、もう少し頑張れ

これぐらいなら見た瞬間に完成図が思い浮かぶよ
vbaにするまでも無い

487 名前:デフォルトの名無しさん [2018/09/30(日) 23:56:56.43 ID:aYXyCrkn.net]
でた、vbaしかできない低学歴知恵遅れITドカタふがいきってる

488 名前:デフォルトの名無しさん [2018/10/01(月) 00:00:41.84 ID:zfKNS/F/.net]
で、低学歴知恵遅れは
どこにVLOOKUP使ったの?

ん? いってみ?

489 名前:デフォルトの名無しさん mailto:sage [2018/10/01(月) 06:39:47.60 ID:MCBRDKcK.net]
>>468
本気で言ってるのか?



490 名前:デフォルトの名無しさん mailto:sage [2018/10/01(月) 07:49:25.42 ID:u6gUPL8M.net]
sortについての質問です
レコードがあって、並び替えの基準列が例えば
0
4
1
0
5
となってたとします。これを
0
0
4
1
5
に並び替えたいのです。要は特定の値とそれ以外に分離させたいんです。
現状は行の下からループを回して、特定の値ではないならば行をカットして一番下に挿入するというコードなのですが遅いです。
なにかいい方法はないでしょうか

491 名前:デフォルトの名無しさん mailto:sage [2018/10/01(月) 08:05:44.31 ID:K7Kh8NR/.net]
>>470
すべて配列に突っ込んで、配列上で並べかえてから書き換え

492 名前:デフォルトの名無しさん mailto:sage [2018/10/01(月) 08:06:55.02 ID:PpuAKpxM.net]
>>470
=A1=0
の列を追加してソート

493 名前:デフォルトの名無しさん mailto:sage [2018/10/01(月) 08:13:41.55 ID:IH0VbElQ.net]
>>459
うーん
VLOOKUP使えと言ってる人がいるけど
VLOOKUPは複数行に同じデータが存在したとき
最初の一つ目を取得して来るんで
キー項目が無いと厳しいんじゃね?

494 名前:デフォルトの名無しさん mailto:sage [2018/10/01(月) 08:25:33.53 ID:iFb8zFFH.net]
countifと組み合せればできるよ
>>470もそうだけど、このスレ見てるとすぐVBA使いたがる人ってちょっと頭が残念なだけなのかなと思っちゃうね

495 名前:デフォルトの名無しさん mailto:sage [2018/10/01(月) 09:15:58.47 ID:oBEcQ0XA.net]
そらVBAの質問スレやしな。エクセル標準機能でもいいならエクセル質問板いくやろ

496 名前:デフォルトの名無しさん mailto:sage [2018/10/01(月) 10:03:52.20 ID:H4/VTF+j.net]
質問する方はね。
回答する方はVBAでやるべきかどうかと考えないのか。

497 名前:デフォルトの名無しさん mailto:sage [2018/10/01(月) 10:46:30.51 ID:bOC85JQ9.net]
>>472
その発想は無かった……
なるほどbooleanに変換してしまえばいいんですね。ありがとうございました。

498 名前:デフォルトの名無しさん mailto:sage [2018/10/01(月) 11:36:11.29 ID:oBEcQ0XA.net]
>>476
質問する方は関数で出来るのを承知でVBAの答えを求めていると考えてVBAでしか答えないというスタンスもある。別に関数や操作で出来ることを教えてあげる点については異論はない。そういう答え方をしたい人がそう伝えればいい

499 名前:デフォルトの名無しさん mailto:sage [2018/10/01(月) 17:34:28.00 ID:x1tycYY6.net]
マクロってむかし使ったとき選択セルを基準に動いてた気がしたんだけど
今のパソコンでは違う場所で使おうとしても記憶した場所でしか動かなくなったけど



500 名前:デフォルトの名無しさん mailto:sage [2018/10/01(月) 17:40:54.99 ID:x1tycYY6.net]
(選択セルでショートカットキーを押すとセルの中心にチェックボックスを作るようにしたいんだけど
(長いプログラムは無しで)

501 名前:デフォルトの名無しさん mailto:sage [2018/10/01(月) 19:04:58.48 ID:Rpti6CxP.net]
初心者だけど、仕事でどうしても必要で試行錯誤中なのだが…

例えばなんだけど
@IEを起動して指摘のURLに飛ぶ→A管理者ユーザーでログイン→
Bユーザー情報検索のページに飛ぶ→Cプルダウンでユーザーの種別を選択→
Dユーザー名をフォームに転記→E検索ボタン押す→Fユーザーデータが表の形式で表示

502 名前:ウれ、ある行をラジオボタンがあるので選択→
G決定ボタン押す→Hページ内のリンクをクリック→Iページ内のリンクをクリック→
J表示された文字列をコピーしてエクセルに出力
なんてことできるの?

説明がわかりにくくて申し訳ない。
@からBまではできたんだが…Cからができるか不安だ。
どうにかBを応用して繋げていけばできるんじゃないかと思っているのだが、これをユーザー分取得するという繰り返しをするとなると、全くイメージ出来ない。
自分でもイメージ出来ていないのに聞くのも難だが、流石に実現不可能かな?
[]
[ここ壊れてます]

503 名前:デフォルトの名無しさん mailto:sage [2018/10/01(月) 19:07:07.36 ID:cKKUS3dy.net]
>>481
出来る出来ないの返答を求めているようなのでそれだけ答えると「出来る」

504 名前:デフォルトの名無しさん mailto:sage [2018/10/01(月) 19:14:45.76 ID:+ysO9sf2.net]
>>481
あえてvbaとieを使う理由はないけどまあ出来るよ

505 名前:デフォルトの名無しさん mailto:sage [2018/10/01(月) 19:14:53.78 ID:DnKjEw0R.net]
Aのフォームの操作ができてるならあとは全部Aの繰り返しだからもう少し頑張れ

506 名前:デフォルトの名無しさん mailto:sage [2018/10/01(月) 19:24:39.53 ID:d7lQtBIe.net]
>>482
>>484

ありがとうございます!
出来ると聞いて安心しました。頑張って作ってみます。

507 名前:デフォルトの名無しさん mailto:sage [2018/10/01(月) 19:25:25.93 ID:d7lQtBIe.net]
>>483
vbaとieに拘りはないですが、導入が簡単そうだったので…

508 名前:デフォルトの名無しさん mailto:sage [2018/10/01(月) 19:26:16.86 ID:Zp0cocQA.net]
質問者じゃないけど2とか3とかはどうやってやるの

509 名前:デフォルトの名無しさん mailto:sage [2018/10/01(月) 19:33:41.96 ID:d7lQtBIe.net]
>>487
申し訳ない。Aは自動ログイン設定というか、IEの機能でidとpassをオートフィルしてくれる機能あるから、わざわざログイン情報を入力せずに、そのまま決定ボタンをクリックするようなコマンド?を記載したよ。
Bはその文字に埋め込まれたリンクを、htmlで探して指定した。
Aが苦労したな…javascript:loginとかいうので、どうやったら良いのかわからなかったけど、その頭にあるinputがページで何番目なのか数えて、4番目だったから4番目のinputをクリックしてね!って文を書いたら移動できた!



510 名前:デフォルトの名無しさん mailto:sage [2018/10/01(月) 19:45:57.55 ID:MCBRDKcK.net]
>>473
>>465に答え書いてるよ

>>480
vbaでフォームは置けない気がする
?の文字を置くなどで対処はできないか

511 名前:デフォルトの名無しさん mailto:sage [2018/10/01(月) 19:47:37.81 ID:MCBRDKcK.net]
>>481
相当しんどいと思う
chromeの拡張機能を使ってみては?
「クローム 拡張機能 マクロ」で検索すると出てくる

後はjsごと覚えた方が良さそう

512 名前:デフォルトの名無しさん mailto:sage [2018/10/01(月) 20:52:16.85 ID:lLn/Vvr8.net]
RPA使えよ
仕事なら買ってもらえるだろ

513 名前:デフォルトの名無しさん mailto:sage [2018/10/01(月) 21:35:57.95 ID:d7lQtBIe.net]
>>491
robo-pat?
あるがライセンス切れてて使えない…ライセンス到着待ちなんだ。
でツールが明日必要になってしまったから、仕方なくvbaで…と。

514 名前:デフォルトの名無しさん mailto:sage [2018/10/01(月) 21:36:29.14 ID:d7lQtBIe.net]
>>490
iMacrosってやつ?試しに使ってみようと思う!

515 名前:デフォルトの名無しさん [2018/10/01(月) 23:54:06.64 ID:zfKNS/F/.net]
vlookupなんか
どこにも見当たらない

オツムだけじゃなくて目も悪いの?

516 名前:デフォルトの名無しさん mailto:sage [2018/10/02(火) 02:04:29.98 ID:/QfTYNRi.net]
>>481
Seleniumデザインパターン&ベストプラクティス、2015、オライリー

この本は、Ruby で、Selenium WebDriver を使って、ウェブサイトを自動テストする本だけど、
まさにこういう事を、Rubyでプログラミングする

どのページ(URL)へ飛んで、入力フォームに入力して認証して、
買う商品を選んで、カートに入れて、決済する

まさに、Ruby・Selenium WebDriver が定番

簡単なものなら、iMacros, Selenium IDE で出来るかも

517 名前:デフォルトの名無しさん mailto:sage [2018/10/02(火) 05:27:11.42 ID:uy7vLCLd.net]
>>489
普通におけるけど。

518 名前:デフォルトの名無しさん mailto:sage [2018/10/02(火) 06:36:08.43 ID:tR2WmwNe.net]
>>495
rubyとselenium webdriverか。こちらも試してみます!ありがとうございます。

519 名前:495 mailto:sage [2018/10/02(火) 07:13:32.60 ID:/QfTYNRi.net]
結局、ウェブページの自動テストツールを数年やってきた人たちは、次の2つにたどり着く

プログラマーは、Ruby で、Selenium WebDriver、
非プログラマーは、iMacros, Selenium IDE

漏れなんて、自分のPC 内の画像フォルダの画像でさえ、
Ruby・Selenium WebDriverでプログラミングして、ブラウザで見てる

HTML のimg タグに、画像のパスを設定して、ブラウザに表示させている



520 名前:デフォルトの名無しさん mailto:sage [2018/10/02(火) 07:17:00.46 ID:3rK24ppg.net]
>>498
たどりつかねーよwww
エロ本は画像ビューワ使ったほうがサクサク動いて良い

521 名前:デフォルトの名無しさん [2018/10/02(火) 07:21:20.23 ID:XHPfCFYq.net]
またマッチポンプに引っかかってるのか?
頭悪すぎだろ

522 名前:デフォルトの名無しさん mailto:sage [2018/10/02(火) 07:23:48.60 ID:3rK24ppg.net]
いや、タダのボケだろ
ちょっとおもしろかったわ

523 名前:デフォルトの名無しさん mailto:sage [2018/10/02(火) 07:39:42.84 ID:N1aQvONc.net]
頭が悪いのを誤魔化そうとしても意味なくね?

524 名前:デフォルトの名無しさん mailto:sage [2018/10/02(火) 07:42:08.16 ID:ahHfhE5m.net]
>>480
https://jizilog.com/vba-checkboxop
これをショートカットキーに割り付けるだけで行けそう

525 名前:495 mailto:sage [2018/10/02(火) 09:00:24.92 ID:/QfTYNRi.net]
Seleniumデザインパターン&ベストプラクティス、2015、オライリー

この本の著者がこう言ってる

最初は、ウェブページの自動テストを、Selenium IDE でやっていたけど、
大量の自動テストをこなすために、Ruby・Selenium WebDriver でプログラミングするようになった

これは、誰もがたどる道

526 名前:デフォルトの名無しさん mailto:sage [2018/10/02(火) 09:10:32.38 ID:fUFII8R1.net]
別にVBAでも簡単だけどな。
既にVBAでRPAもどきを作ってある。

527 名前:デフォルトの名無しさん [2018/10/02(火) 09:35:53.30 ID:IHboiu3Y.net]
マッチポンプに掛かった間抜けがいるスレはここですか?

528 名前:デフォルトの名無しさん mailto:sage [2018/10/02(火) 10:09:51.02 ID:IdpLKWF1.net]
SikuliXおすすめ
適当なスクレイピングでよくてHTML解析する情熱が無くなった場合に使ってる

529 名前:デフォルトの名無しさん [2018/10/02(火) 12:19:33.62 ID:gUUCeKXU.net]
>>498
> HTML のimg タグに、画像のパスを設定して、ブラウザに表示させている
プロさんて20年前からタイムスリップして来たんかなw



530 名前:デフォルトの名無しさん mailto:sage [2018/10/02(火) 12:33:06.04 ID:1IC/OUbd.net]
Selenium全く必要ないっていう

531 名前:デフォルトの名無しさん mailto:sage [2018/10/02(火) 17:44:52.64 ID:rk1+4NE+.net]
>>505
技術的負債

532 名前:デフォルトの名無しさん mailto:sage [2018/10/02(火) 18:18:59.44 ID:giBEQZ0B.net]
どうせ誰にもメンテできないんだから問題ない
返済されることのない借金は負債ではない

533 名前:デフォルトの名無しさん [2018/10/02(火) 20:21:52.25 ID:vaQcb9tkC]
社内のデータ加工で困っています。
VBAじゃないかもしれないのですが、
賢い方々助けてください。

やりたいことや実際のデータは下記URLにUPしています。

よろしくお願いします!

fast-uploader.com/file/7094034688478/

534 名前:デフォルトの名無しさん [2018/10/02(火) 20:25:57.36 ID:vaQcb9tkC]
512ですが…

用意できる環境に書いてある「Microsoft Office 2016」は「Excel」を意味しています。

535 名前:デフォルトの名無しさん mailto:sage [2018/10/02(火) 18:53:37.03 ID:rk1+4NE+.net]
技術的負債はSIerに押し付ければいいのよ
事務員は保守性など気にせずクソでも動けばいいのでとにかく作る
プログラマを企業間のパワー差を活かして発給で雇いこき使ってメンテさせる
これがVBAerの正しいあり方だ

536 名前:デフォルトの名無しさん mailto:sage [2018/10/02(火) 19:07:53.02 ID:qyY5wEk7.net]
>>514
そうか
まぁ頑張れよ

さて、忘年会用に何かでビンゴのソフトでも作るか

537 名前:デフォルトの名無しさん mailto:sage [2018/10/02(火) 19:32:27.30 ID:V/qNOCI+.net]
バリアント型変数にrangeを代入すると処理時間短縮になるというが、今いち実感が

538 名前:湧かない。

INPUTのテキストファイルの中身次第で出力するセル範囲が変わるんだが、
想定される最大のセル範囲をrangeに代入するよりは、セルひとつひとつにアクセスして最小限の範囲で出力したほうが処理時間早いんじゃないか…
[]
[ここ壊れてます]

539 名前:デフォルトの名無しさん mailto:sage [2018/10/02(火) 19:33:46.34 ID:JlZ/oy05.net]
VBAでシステム組んでる企業は今はほとんどないのでは?
個人がちょっとしたマクロを書くぐらい



540 名前:デフォルトの名無しさん [2018/10/02(火) 19:48:52.17 ID:eaArETqj.net]
ニートのプロさんは少しお口にチャックねw

541 名前:デフォルトの名無しさん mailto:sage [2018/10/02(火) 19:56:57.36 ID:VwRcsjE4.net]
>>459です。
レスくれた方ありがとうございます。
>>465さん、作成ありがとうございます。
ダウンロードしてみたのですが、私の自宅のPCだとなぜか文字化けして画面に表示されません・・。
明日、会社のPCでやってみるべきか・・。
どなたか親切な方がいたら、画面をコピーしてくれると助かります。

542 名前:デフォルトの名無しさん mailto:sage [2018/10/02(火) 20:18:38.93 ID:JlZ/oy05.net]
セキュリティ意識に欠けるね
マクロが禁止されるわけだ

543 名前:デフォルトの名無しさん mailto:sage [2018/10/02(火) 20:34:11.46 ID:t6BWNYue.net]
>>516
出力に必要な行列の数だけ要素数を指定して適切なサイズの配列を使うようにすればいいじゃん

複数セル値の逐次更新は更新するセルの個数分だけプロパティ関数が実行されてイベント処理が走るので、同じセル数を更新する場合で比較すると配列による一括処理と比べて格段に重いよ

544 名前:デフォルトの名無しさん mailto:sage [2018/10/02(火) 21:04:30.03 ID:GLlKH6rT.net]
>>521
返答ありがとう。

INPUTのデータ次第で1行〜9999行目まで出力されるので、現状9999行までのセルを配列に格納している。

ちょいと処理時間を計測してみたんだが
出力件数によっては、
例えば200件程度だったときの場合、セルに都度アクセスしたほうが早かったのよね。

実行する度に、INPUTのデータ量次第で配列に格納する範囲が変えられると便利なのだが、それがわからないため9999行まで格納してるって感じかな

545 名前:デフォルトの名無しさん [2018/10/02(火) 21:09:51.81 ID:R8M7QKDK.net]
fast-uploader.com/file/7094037561899/
バカが作ったのはまったく使い物にならないから
オレのを使いなさい

ダウソした
総合商品情報.xlsx

c:\tmp
に入れればとりあえず動く

保存する場所やファイル名変えたならSQLに入ってるパス変更すれば
とりあえず動く

546 名前:デフォルトの名無しさん [2018/10/02(火) 22:36:58.97 ID:ZVIK4UcY.net]
PCから投稿したのが繁栄してないかもしれないので…

↓↓↓↓

社内のデータ加工で困っています。
VBAじゃないかもしれないのですが、
賢い方々助けてください。

やりたいことや実際のデータは下記URLにUPしています。

よろしくお願いします!

fast-uploader.com/file/7094034688478/

用意できる環境に書いてある「Microsoft Office 2016」は「Excel」を意味しています。

547 名前:デフォルトの名無しさん mailto:sage [2018/10/02(火) 22:50:57.49 ID:t6BWNYue.net]
>>522
INPUTがどのような形でコードに渡されるか分からないが、例えばテキストデータを読み込んでいるなら、行数をeofになるまで数えて変数に代入して、その変数で配列要素数を指定すれば簡単だと思う

548 名前:デフォルトの名無しさん mailto:sage [2018/10/02(火) 23:02:37.82 ID:uetVBQBr.net]
>>522
3回以上セルにアクセスするなら確実に配列に取り込んだほうが早い。
体感出来ないのはコードが完全に最適化出来てないだけ。
あと数式の埋め込まれたセルがあったりするとあり得ないくらい遅くなる。
(ある程度はスイッチで解消できるけど)

あとInputはめちゃくちゃ遅いよ。
バイナリモードで開いて一括読み込みがオススメ。
tetsucom.blogspot.com/2011/03/vba_9799.html

このサイトでは数倍しか差がついてないけど、元データの行数が増えるほどInputと差が開く

549 名前:デフォルトの名無しさん mailto:sage [2018/10/02(火) 23:48:15.72 ID:VE+AbZ0A.net]
>>524
アップロードしたファイルに店



550 名前:シが含まれているんだが大丈夫か・・・ []
[ここ壊れてます]

551 名前:デフォルトの名無しさん mailto:sage [2018/10/02(火) 23:53:53.97 ID:GLlKH6rT.net]
皆さん助言ありがとう。

処理のイメージとしては、1行ずつ読み込んで色々判定した後、1行ずつ出力していく感じです。

頂いた助言を試してみて、
事前にeofまでのループ処理で変数をカウントアップさせて、必要な行数を配列に格納させることはできました。

バイナリモードの件と合わせて、パフォーマンスの向上を目指しますm(_ _)m

552 名前:デフォルトの名無しさん mailto:sage [2018/10/02(火) 23:57:35.54 ID:VE+AbZ0A.net]
>>528
Rangeオブジェクトへのアクセス回数を減らすよう意識すると、案外パフォーマンスが上がったりする。
あとオブジェクトの特定のプロパティ・メソッドがやたら遅かったりすることもあるから注意。

553 名前:デフォルトの名無しさん [2018/10/03(水) 00:52:56.81 ID:Ijm6Q0Hp.net]
>>527
気がつきませんでしたが、ダミーデータなので大丈夫です

554 名前:デフォルトの名無しさん mailto:sage [2018/10/03(水) 12:30:49.51 ID:Ju5BAQ2L.net]
>>528
1行ずつ出力じゃあまり恩恵無いかもしれないけどまとまって出力すれば劇的な変化がある。

Dim i As Long
Dim j As Long
Dim varRng() As Variant
Dim t As Single

t = Timer
For i = 1 To 50000
For j = 1 To 50
Cells( i, j ).Value = i + j
Next j
Next i
Debug.Print Timer - t

t = Timer
Redim varRng( 1 To 50000, 1 To 50 ) As Variant
For i = 1 To 50000
For j = 1 To 50
varRng( i, j )= i + j
Next j
Next i
Range(A1:AX50000).Value = varRng
Debug.Print Timer - t

555 名前:デフォルトの名無しさん [2018/10/03(水) 16:42:01.11 ID:uB4nYmn5.net]
実践的に練習用の課題を解いていけて、段階的にスキルアップできるサイトないですか?

556 名前:デフォルトの名無しさん [2018/10/03(水) 21:13:21.04 ID:4mO7hAaA.net]
Range(1,1).Value = 1-1
これをやると、1月1日にExcelが日付と解釈して変換する。
これを防ぐにはどうしたらいいですか。

文字列として格納するために""で囲むという手があるがそれをやりたくない。
理由は値(1-1)に加工していじってるから。

ちなみに、1-1は番地のつもりです。

557 名前:デフォルトの名無しさん mailto:sage [2018/10/03(水) 21:37:41.99 ID:B0/YTPvH.net]
>>533
書式を明示的に文字列にしてからやってみたら?
.NumberFormatLocal = "@"

558 名前:デフォルトの名無しさん mailto:sage [2018/10/03(水) 21:58:23.71 ID:siQNEaWd.net]
>>533
その式だと1-1で0が格納される訳だが?
セルに文字列として格納させるなら532の方法か、先頭にシングルクォーテーションを付与

559 名前:デフォルトの名無しさん mailto:sage [2018/10/03(水) 22:24:31.18 ID:IRo5OOwi.net]
1件だけなら 「Range(1, 1) = "'1-1"」でもいいかもしれんが、沢山あるようなら配列を使って一発代入するかな。



560 名前:デフォルトの名無しさん mailto:sage [2018/10/03(水) 22:37:26.98 ID:cOBWyVpF.net]
>>459です。
>>523さんありがとうございます。
文字化けしない環境で試してみたら、画面は見えました。
ですが、肝心のコードが見当たらない・・・orz
シートに記載されてる情報を見る限り、恐らく>>523さんのが一番私が求めているものに近いかな、と思いました。
>>523さん、ダウンロードしてもコードが見えないので、
このスレにコードをコピーしてもらえないでしょうか?

561 名前:デフォルトの名無しさん [2018/10/03(水) 23:48:07.24 ID:FigU8Mbj.net]
Cells(Rows.Count, 1).End(xlUp).Row
これだとhiddenで隠れている行は無視されてしまいます
あくまでも最後に入力されている行を取得したい場合はどうすればいい?

もちろんhiddenを一時的に表示にする以外方法で
隠れていてもデータ行として扱う方法

562 名前:デフォルトの名無しさん [2018/10/03(水) 23:54:17.02 ID:7gIy/TEB.net]
↓ココに操作手順がおいた
fast-uploader.com/file/7094133678468/

[SQLの編集]タフ

563 名前:゙に編集の仕方が載ってる(denpyouを例にしてるが、編集の仕方は他も同じ)
※ vbaじゃないからな、コードはない
※ ちなみにデータとデータの抽出結果を出力するブックは別でも問題ない

新規に自分で作成したい場合は
>>437 ← コレ
を参考にしなさい
[]
[ここ壊れてます]

564 名前:デフォルトの名無しさん mailto:sage [2018/10/04(木) 00:51:18.54 ID:FEHQanR0.net]
半角先生口は悪いけど割と優しいからすき

565 名前:デフォルトの名無しさん mailto:sage [2018/10/04(木) 00:55:39.43 ID:X6BA3+Oo.net]
VBAの実行環境をDockerizeする方法を教えてください

566 名前:デフォルトの名無しさん mailto:sage [2018/10/04(木) 07:43:14.54 ID:tsjyo4iv.net]
>>538
used range使えば?最終行取得でググれ

567 名前:デフォルトの名無しさん mailto:sage [2018/10/04(木) 09:11:12.18 ID:ZcbeCQ3S.net]
UsedRangeはプロパティに変更が加えられたセルを全てカウントアップするから物凄く癖がある
うっかり列範囲全体に書式設定なんかしてると最終行は1,048,576行目なんてことになるので注意

568 名前:デフォルトの名無しさん mailto:sage [2018/10/04(木) 12:04:05.58 ID:x9VzQgv/.net]
>>543
列に対しての書式設定ならそんな風にはならない。
貼り付けするとそうなる危険性はあるけど、今のエクセルは警告出るし、実行に時間かかるし、めちゃくちゃ重たくなるから、マクロ以前にブック修復すべき案件

569 名前:デフォルトの名無しさん mailto:sage [2018/10/04(木) 13:15:55.34 ID:Vut2i4+m.net]
Do loop関数でウェブ上の変数を取り込んでセルに表示したいんですが、セルA1に最新の変数を表示し、一つ過去のは真下セルに移動する
これを繰り返して変数をA列に積み上げいくようにしたいんですが、どうすればよいでしょうか



570 名前:デフォルトの名無しさん mailto:sage [2018/10/04(木) 13:37:33.14 ID:Vut2i4+m.net]
挿入でできました 失礼しました

571 名前:デフォルトの名無しさん mailto:sage [2018/10/04(木) 14:40:06.72 ID:Vut2i4+m.net]
Selenium Webdriverについて質問です。

@chromeを起動
Aあるwebサイトのユーザーページにログイン
Bユーザーページ上で作業
という操作を自動化しようとしています。
@、Aは良いのですがBが複雑なため、その部分のコードで試行錯誤しております。
しかしコードを修正するたびに@から行っているため時間がかかっております。
@Aで起動したブラウザを利用して、Bから別のsubプロシージャにして、Bだけ実行して検証したいのですがどのようにすればよいのでしょうか。
下が@Aのコードです。

sub 1()
Dim driver As New SeleniumWrapper.WebDriver
driver.Start "chrome", "https://aaa.com/login?"
driver.get ("/")
driver.findElementByName("UserID").SendKeys ("yamada")
driver.findElementByName("pass_word").SendKeys ("1234")

572 名前:デフォルトの名無しさん mailto:sage [2018/10/04(木) 17:50:31.63 ID:ImPAYWBj.net]
Private driver As SeleniumWrapper.WebDriver

Sub Init()
@
A
End Sub

Sub Work()
driver.get(ユーザーページ)
B
End Sub

他のスクリプト言語に変えたほうが楽ですよ

573 名前:デフォルトの名無しさん mailto:sage [2018/10/04(木) 18:15:13.64 ID:Vut2i4+m.net]
>>548
ありがとうございます。
やってみたのですが、getメソッドでSystem.NullReferenceExceptionというエラーが出ます.....

他のスクリプト言語というとRubyということになるのでしょうか?

574 名前:デフォルトの名無しさん mailto:sage [2018/10/04(木) 18:36:18.81 ID:/wVNZxwJ.net]
>>549
driverを初期化してないからだと思うぞ。

575 名前:デフォルトの名無しさん mailto:sage [2018/10/04(木) 18:46:00.60 ID:Vut2i4+m.net]
>>550
大変申し訳ないのですが詳しく説明して頂けないでしょうか....
勉強不足ですみません

576 名前:デフォルトの名無しさん mailto:sage [2018/10/04(木) 19:13:03.15 ID:/wVNZxwJ.net]
>>551
Private driver As SeleniumWrapper.WebDriver ←モジュール領域(各プロシージャの更に上位)でdriverを定義。ただし初期化していない。

Sub Init() ←Initプロシージャを実行する時にdriverを初期化し@・Aを実行する必要がある
Set driver = New SeleniumWrapper.WebDriver ←ココ

577 名前:
@
A
End Sub

Sub Work() ←Initプロシージャを実行してからWorkプロシージャを実行すると、色々(B)を実行してくれる
driver.get(ユーザーページ)
B
End Sub

念のため言っとくと俺は>>548じゃないがついでに解説しただけで、
>>547が求めているものがこれで満たせるのかまでは関知しない。
[]
[ここ壊れてます]

578 名前:デフォルトの名無しさん mailto:sage [2018/10/04(木) 19:25:04.84 ID:USJCeaSx.net]
質問いいですか?
VBAでコールバックを行うとき
クラスが対象の場合はCallByNameで行う事が出来ますが
標準モジュールの場合、どうするんでしたっけ?
確かAPIを使った様な気がしたんですが
どのAPIを使ってどうするのか
忘れてしまいました。

579 名前:デフォルトの名無しさん mailto:sage [2018/10/04(木) 19:32:08.96 ID:apogHBJA.net]
>>553
忘れたけど ariawase を見れば出てくるんじゃね



580 名前:デフォルトの名無しさん mailto:sage [2018/10/04(木) 20:46:51.81 ID:Vut2i4+m.net]
>>552
とても丁寧にありがとうございます。追加質問させてほしいです。
A: 今回「driver」はオブジェクト変数となるため、定義の際はnew演算子を使用する。またはsetで格納する必要がある。ということで良いのでしょうか?

B: >>552で「ただし初期化していない」とありますが、あるサイトで「vbaでは変数宣言したときに初期化が行われる」という記述を見ました。
これは、setで格納されてないから初期化すらされてない という意味でしょうか。

C: プロシージャが実行されるごとに初期化されればよいならば、private変数の定義をやめて、@〜A、BそれぞれでDim driver As New SeleniumWrapper.WebDriver と定義すればエラーは出ないと思ったのですが、
やはりBのgetメソッドのところで「System.NullReferenceException」エラーが出てしまいました。何故なのでしょうか・・・

長文ですみません どうか宜しくお願いいたします。

581 名前:デフォルトの名無しさん mailto:sage [2018/10/04(木) 22:18:56.04 ID:/wVNZxwJ.net]
>>555
A: あってる
B: だいたいあってる
C: まずコードが動くことを確認してから弄れ。>>548の意図が汲めないならすっぱり諦めて別の方法を考えろ。
流石にこれ以上は自分で調べろ。



追伸
B: とりあえず「値型は宣言と同時に初期化される、オブジェクト型はNewやSetをしてからでないと使えない」と思っとけ
C: 要はWebDriverの「使い回し」がしたいという質問に答えたのが>>548
  ・モジュールレベルで宣言すれば、各プロシージャ内から変数「driver」を通じて同じ実体(インスタンスという)にアクセスできる
  ・Initでモジュールレベル変数「driver」を初期化したりStartなどのメソッドを実行すれば、Workでdriverにアクセスした時にその続きのアレコレができる
  ・逆にInitで初期化やStartその他を実行したにもかかわらずWorkで新たな変数「driver」を宣言したらInitで行った処理が水泡に帰する
  ・またInit内で新たな変数「driver」を宣言し初期化等をした場合も、Init終了と同時に実体が消えて無くなる
仕事中なんであれこれ端折って書いたので間違ってる部分もあるかもしれんが、「インスタンス」とか「スコープ」とかでググって調べてみてくれ。

582 名前:デフォルトの名無しさん mailto:sage [2018/10/04(木) 22:32:59.61 ID:Vut2i4+m.net]
>>556
本当に丁寧にありがとうございます。
伝えるのを忘れていましたが、言われた通りにコードを記述しうまくいきました。それを踏まえてのCでした。
インスタンス、スコープで調べてみます。ありがとうございました。

583 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 12:52:55.81 ID:VkzGqctC.net]
「選択したセルの値を-1する」のに下記のようなプログラムを書いた。
Dim cell As Range
For Each cell In Selection
cell.Value = cell - 1
Next
これはOK。

「セルの値がブランクまたは0のとき、ブランクにする」を追加して、
Dim cell As Range
For Each cell In Selection
If cell.Value <> 0 Then
cell.Value = cell - 1
Else
Next
としたら「Nextに対応するForがありません」と怒られてしまいました。
どこがいけないのでしょうか?

584 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 12:58:15.96 ID:vSWfZutq.net]
if文が閉じてないから

585 名前:デフォルトの名無しさん [2018/10/05(金) 16:28:56.84 ID:JjUc2WZB.net]
>>558
お前の知能に障害がある

586 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 16:54:22.89 ID:9/5M8DWU.net]
>>558
インデントが適当だからそういうミスに気がつかない

587 名前:デフォルトの名無しさん [2018/10/05(金) 17:24:22.25 ID:KMKJ670I.net]
else nextとか書く馬鹿にインデントもなにもねーよ

588 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 17:30:08.09 ID:nkW6jPyv.net]
適当ならいいじゃないか

589 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 18:25:40.30 ID:wi1wUlXh.net]
Ifは基本一行で済ませるか、If...Then句を書いた後にすぐ改行して同じインデントレベルでEnd If 句を入れる癖をつけろ



590 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 21:10:17.32 ID:Hvo0Z6Jl.net]
>>448
レベルアップするたびにポイントをVBAにばかり振り分けてきたんだよきっとw

591 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 21:14:01.44 ID:sMfkQDgh.net]
>>558
根本はエクセルのエラーメッセージが明らかに間違っているから混乱する
けどプログラムの世界って大体そんなもんと諦める必要がある

で、対処法としては
>>561
が正解
インデントが適切なら楽勝で気づける問題

>>564は最悪。開発が超遅くなる

592 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 22:05:56.09 ID:uERkBuVa.net]
質問です。

テキストファイルの中身をセルに出力する処理をやっているのですが、一部のテキストファイルの文字が正常に出力されません。(縦線 " | "のみが出力される)
ただし、判定によってセルの色を変えているのですが、その機能は生きているので、読み込み自体はできているみたいです。
また、全部のファイルで不具合があるわけではなく、特定のファイルの特定のレコードにのみ起こるっぽいです…

補足すると、テキストファイル自体はメインフレームの伝送機能で送ってます。これが原因に関係あるのかはわかりませんが…

詳細聞かれたらお答えしますので、解決にご協力頂ければと思います。

593 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 22:07:25.21 ID:uERkBuVa.net]
565です。
本題を載せ忘れていました。
原因、改善方法がわかる方いましたら、ご返答願います。

594 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 22:15:30.06 ID:vSWfZutq.net]
俺はインデントもしっかりでEnd Ifも先に書く派だな、他の言語での閉じ括弧みたいなもんだし

595 名前:デフォルトの名無しさん [2018/10/05(金) 22:17:06.45 ID:KYi5h4An.net]
>>567
その特定のレコードを教えて

596 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 22:27:19.79 ID:XVCqdvbX.net]
>>566
俺はブロックを先に区切らずにダラダラ書いていく方が効率悪いように見えるんだけど、End Ifを先に書かない方が速度上がるの?
本当だったらそうしてみようかな

597 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 22:27:20.22 ID:vSWfZutq.net]
>>567
コンピュータのベンダーや年式が違えば文字コード字形の割り当てが違うことも多い

手順
・テキストファイルの文字エンコード、記述形式を正確に把握する
・化けた部分前後数行のみのテストデータを作る
・ウォッチウィンドウを活用して原因を探る

598 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 22:30:53.32 ID:uERkBuVa.net]
>>570
INPUTはJCL(COBOLアプリを動かすためのスクリプト言語)をテキストファイルに落としたものです。

特定のレコードなのですが、テキストファイルを確認しても、他の出力されているレコードと見た目は全く変わりません。(スペース、データの末尾にも問題なし)
にも関わらず決まったレコードのみに不具合が発生します。



599 名前:マクロが手元にないため画像は載せられませんが、
JCLについては、画像検索して出てきたものとほぼ同じですので参照頂ければと思います。
[]
[ここ壊れてます]



600 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 22:37:26.08 ID:uERkBuVa.net]
>>572
やはり文字コードがきな臭いですかね
shift-jis になる仕様のはずなのと、他レコードは大丈夫なため問題ないと判断していたのですが、
vba上でも文字コードを明示してあげる必要がありそうですね

601 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 22:59:15.65 ID:MhNSlq6Z.net]
メインフレームなぁ・・・最後に触ったの20年近く前で、びっくりするほど覚えてねぇ。

ちょっと気になるんだが、正常に出力されない時に表示される縦線は、
元のテキストファイルにデータとかデリミタとして含まれている文字なのか?
それとも変換できなかった文字が縦線に置き換わっているのか?

602 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 23:11:22.13 ID:VkzGqctC.net]
>>558
なんかコピペしたときにend ifが抜けてた

603 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 23:23:40.27 ID:lz8xFasJ.net]
>>575
縦線はデリミタではなく、元のレコードにも存在しない文字です。
処理としては、テキストファイルのレコードをそのままセルに出力するだけなのですが…
読み込んだ時点では問題なく、出力したときに縦線に置き換わってる感じですねー

604 名前:デフォルトの名無しさん [2018/10/05(金) 23:39:05.08 ID:JjUc2WZB.net]
>>576
馬鹿は死ねよ

605 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 23:53:59.29 ID:E7eIsq4P.net]
>>577
ファイルからレコードを読み込んだら、イミディエイトウィンドウにも出力しておく
データをセルに書き込んだあと、もう一度セルから読み出して縦線になってたら中断するようなコードを書く
中断したらイミディエイトウィンドウの内容を確認

どこで化けたか、1つずつ追跡するしかないです
意外なところでミスをしていたり、仕様だったり、落とし穴があるもんです

606 名前:デフォルトの名無しさん mailto:sage [2018/10/06(土) 00:57:54.07 ID:F9JdDpiN.net]
>>577
1.入力するテキストファイルに「ろくでもない見えない文字」が含まれている(たとえば制御文字)
 →普通のテキストエディタでは見えないことが多いのでバイナリエディタで確認する
2.テキストファイルのレコードを読み取りセルに出力する処理のどこかに問題がある
 →特定のレコードで発生するということは、特定の文字列のパターンか、特定のレコード数でのみ発生している可能性もある
こんな月並みなことしか考えつかないな。
個人的には、文字化けだったとしたら全部縦線に置き換わるのはおかしいと思うが(化けた文字が一切見受けられず縦線だけってのが妙に気になる)

607 名前:デフォルトの名無しさん mailto:sage [2018/10/06(土) 04:51:40.31 ID:tnNc0I+3.net]
とりあえず、どんなコードで読み取って表示してるか出さんと話にならんわ

608 名前:デフォルトの名無しさん mailto:sage [2018/10/06(土) 07:12:44.67 ID:GeqHzxmy.net]
実はテキストファイルのエンコードがutf8とかだったりして

609 名前:デフォルトの名無しさん mailto:sage [2018/10/06(土) 07:49:00.01 ID:4qqF7BWz.net]
メインフレームだからEBCDICだろ変換前はEBCDICの変換は面倒い



610 名前:デフォルトの名無しさん mailto:sage [2018/10/06(土) 07:55:07.00 ID:omtH0luh.net]
EOTとかVTの類の制御文字な気がする

611 名前:デフォルトの名無しさん mailto:sage [2018/10/06(土) 13:50:07.16 ID:tnNc0I+3.net]
>>563
SHIFT-JISのはずって言ってるし、ホスト側に大抵変換ツールあるだろ


文字コードや制御文字の可能性よりプログラムのバグの方が確率高い気がするなぁ
まあコード出せばどっちの問題かはだいたい判別できるはず
化けるデータのダンプでもいいけどな

612 名前:デフォルトの名無しさん mailto:sage [2018/10/07(日) 13:12:34.96 ID:DYNz6D7I.net]
色々と意見ありがとうございます。
コードが掲示できなくて申し訳ないですが、
文字コードについてはホストの変換機能があるはずなので、プログラム上のバグとみてデバックしてみます。

613 名前:デフォルトの名無しさん mailto:sage [2018/10/07(日) 15:35:18.94 ID:RZXmBbwE.net]
>>569
>>571
正解。

でも、頭の使い方を知らない人にとっては理解し難いんだろ

614 名前:う。
頭を使う作業と単純作業を分けるのが自然になってる人はEndIfを先に書く。
他にもEndWithやNextも先に書くな。

Ifまで書いて条件をどこからかコピペするのに気付いた時はIf a Then...EndIfまで書いてからaと差し替えるとか。
あるいはaの差し替えは中身書いた後の時もあるな。
[]
[ここ壊れてます]

615 名前:デフォルトの名無しさん mailto:sage [2018/10/07(日) 15:38:24.87 ID:RZXmBbwE.net]
>>579
文字化けはイミディエイトでは分からない場合も多い。
こういう時はデバック用にバイナリで出力するものを作っとくべきだね。

616 名前:デフォルトの名無しさん mailto:sage [2018/10/07(日) 15:38:37.38 ID:yvtwWR1t.net]
そしてaの差し替えを忘れると

617 名前:デフォルトの名無しさん mailto:sage [2018/10/07(日) 16:40:59.78 ID:/7FmU20a.net]
VBA「済まんのう、ワシのインテリセンスが貧弱なばっかりに・・・」

618 名前:デフォルトの名無しさん mailto:sage [2018/10/07(日) 17:11:47.87 ID:RZXmBbwE.net]
>>589
二ワトリか?

619 名前:デフォルトの名無しさん mailto:sage [2018/10/07(日) 19:18:32.78 ID:b8EzOufK.net]
>>587
閉じタグみたいな単純作業を人間がやるのは馬鹿らしいと気付いて別の言語に移行するのが大正解



620 名前:デフォルトの名無しさん [2018/10/07(日) 21:50:24.98 ID:mIq+f5AO.net]
で、pythonみたいな欠陥言語では空文という概念すらない
インチキな制御文で空文を回避する必要がある

つまり、cが言語として一番単純で簡単

621 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 10:32:35.37 ID:nJmWXjgB.net]
しかし少し待って欲しい
C言語が扱うのはDelegateじゃなくて
ポインタだから不慣れな人が使うのは結構危険

622 名前:デフォルトの名無しさん [2018/10/08(月) 10:58:07.65 ID:Z4ZqXDLl.net]
コードの作成ができる方がいらっしゃいましたら、助けていただきたいです。

https:〜〜/〜〜〜/〜〜.pdf
で終わるURLが1000件以上あり、業務でそのすべてを印刷しなければならないのですが、
1つ1つIEで印刷していくのが大変面倒で、VBAで一気に印刷することができないか
調べたのですが、.pdfで終わるファイルをwebから自動で印刷するのは不可能なようでした。

そこで、その1000件以上あるpdfファイルを一気にローカルに保存できないかと考えております。

具体的には、
A列にひたすらURLを貼り、マクロを起動するとローカルの任意のファイルにPDFが保存されていくようなVBAが組めないかと考えております。
(一気に印刷することができれば、尚よいのですが)

どなたかコードを組んでいただけないでしょうか。

お手数ですが、よろしくお願い致します。

623 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 11:21:42.19 ID:H/mp1NsO.net]
curl, wget で、ファイルをダウンロードできる

624 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 12:38:16.57 ID:TfWfyeTE.net]
ダウンロードやら印刷やらはPowershellならそれぞれ1コマンドで出来るんだけどね
VBAだとそこそこ面倒な気がする

625 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 12:47:36.35 ID:rY44Et0R.net]
両面2upで印刷とかだとpowershellでも大変じゃないの

626 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 12:59:10.13 ID:fNYJDKkK.net]
>>595
難しいだのなんだの言われてたけど、テキトーにやってたら簡単にできて拍子抜け
fast-uploader.com/start/7094526398997/

Book1.zip

Book1.xlsm
にリネームしてくれ

A列はファイル名
B列はURL
C列はokかNGか。アテになるかどうかはシランので、落とした後のファイル数はなどは確認したほうが良い

コードの編集は適当にやってくれ
今はテスト用に3つだけにしている
あと保存するファイル名は被らないようにかなり適当に作っている。適当に変えてくれ

で、pdf印刷はこの辺に任せるといいと思う
https://dekiru.net/article/1745/

あと、参考にしたサイト
https://tonari-it.com/excel-vba-windowsapi-urldownloadtofile/

特に何の関係もない、無害なサンプ

627 名前:却dfが置いてあったサイト
http://www.shikisensha.com/pdfs.html
[]
[ここ壊れてます]

628 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 13:00:47.95 ID:wluWAmXV.net]
>>595
powershellスレで聞いた方がいいよ
一括ダウンロードも印刷もけっこう簡単にできる
VBAでもできるけどちょっと面倒だから

629 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 13:16:18.75 ID:fNYJDKkK.net]
そこまで簡単にできるならもうここで書いてしまって良いんじゃない?



630 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 13:21:06.52 ID:SdoZVitL.net]
クレクレに割く労力など微塵もない

631 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 13:21:21.13 ID:XarCorGP.net]
>>595
そんなのjdownloader2とか
webブラウザのアドオン使えよw

632 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 13:36:20.93 ID:fNYJDKkK.net]
>>602
あれ、そうか
PowerShellあんまり知らないから見てみたかった

633 名前:デフォルトの名無しさん [2018/10/08(月) 15:25:31.11 ID:41uO404m.net]
>>595
死ねよ

634 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 15:55:52.70 ID:fNYJDKkK.net]
>>603
拡張機能探すのあんまり得意じゃないわ
結局作ったほうが早い

>>605
ざっこw

635 名前:デフォルトの名無しさん [2018/10/08(月) 18:30:52.01 ID:lvy06Ht8.net]
>>599
URLDownloadToFile というAPIがあることをいま知った。
これまで都度 MSXML2.XMLHTTP を作って .Open "GET" していた。
API一発ならその方がスマートだしプログラムをそれベースに書き換えようかと思ったけど、
IDとパスワードを渡さなきゃならない場合は使えないのかな?

636 名前:デフォルトの名無しさん mailto:sage [2018/10/09(火) 01:51:39.58 ID:FzGViRAL.net]
N列に時刻データが入っている
但し一部の行はブランク

時刻データは"00:10:00"のように時・分・秒が指定されている
表上は"00:10"つまり「時・分」のみを表示

この時刻データの分の1桁目が9の時のみ1分繰り上げて0にしたい
つまり
"00:19:00"→"00:20:00"
"00:59:00"→"01:00:00"
になるようにしたい

セルは複数セルを不連続で選択し、ブランクはパスして
分の1桁が「9」の場合のみ1分繰り上げするにはどうすれば良いでしょうか?

637 名前:デフォルトの名無しさん mailto:sage [2018/10/09(火) 03:48:33.30 ID:GjEV7PXm.net]
>>608
秒はどうするの?19分30秒だったら20分00秒にするってこと?

とりま、基本的な処理は分を10で割った余りを求めて、9だったら1を足す
それを選択された全セルに対して繰り返す

638 名前:デフォルトの名無しさん mailto:sage [2018/10/09(火) 07:12:30.74 ID:/OeVfiJl.net]
>>608
O1=N1+IF(MOD(MINUTE(N1),10)=9,TIME(0,1,0),0)

639 名前:デフォルトの名無しさん [2018/10/09(火) 08:27:33.61 ID:0K1bBeTL.net]
>>567-588
Ruby で、そのテキストの該当部分を表示して、確かめる。
他の言語でもよい

>>608
いったん時刻に変換して、1分足してから、また元の形式へ戻す。
つまり、表示形式 → 時刻 → 表示形式



640 名前:609 mailto:sage [2018/10/09(火) 10:04:43.66 ID:0K1bBeTL.net]
>>567-588
制御文字の可能性があるから、文字列をバイナリで見る

文字コードや、UTF-8 ならBOM の有無

セルに入力した時に、特別な意味を持つ文字が入っているとか?
シングル・ダブルクォーテーションなど?

641 名前:デフォルトの名無しさん [2018/10/09(火) 16:25:52.94 ID:YqupZDTJ.net]
会社で社内Webのform類のsubmitボタンを押して出てくるデータベースのデータが抽出されるシステムがあります。
(まあ、このようなシステムはどこにもあると思いますが。)
これ、どうにかして大元のデータベースのデータを丸ごとExcelにインポートする方法ってないですか?
Webのソースを見れば、データベースのサーバのアドレスが書いてあって、それをVBAで取り込む、みたいなのをイメージしているのですが
技術的には可能ですよね?

642 名前:デフォルトの名無しさん mailto:sage [2018/10/09(火) 16:53:10.93 ID:i ]
[ここ壊れてます]

643 名前:uxGmBKG.net mailto: 技術的には可能だがお前には不可能
イメージが見当違いだ
[]
[ここ壊れてます]

644 名前:デフォルトの名無しさん mailto:sage [2018/10/09(火) 16:58:57.67 ID:ZX9nrIhI.net]
WEBサーバ自体をハックできるなら。
大抵PHPか.Net実装でソースからは見えない

645 名前:デフォルトの名無しさん [2018/10/09(火) 16:59:23.34 ID:YqupZDTJ.net]
あまりわたしを怒らせないほうがいいぞ
わたしは怒ったら怖いんだぞ

646 名前:デフォルトの名無しさん mailto:sage [2018/10/09(火) 17:21:21.07 ID:ZX9nrIhI.net]
コンプライアンス違反で懲戒解雇&賠償請求訴訟起こされたいのなら、止める義理はない

647 名前:デフォルトの名無しさん mailto:sage [2018/10/09(火) 17:57:17.02 ID:3Eshr90N.net]
>>613
会社のシステムなら上司に相談しろよ
社内規定に違反すると最悪解雇もあるからな

648 名前:デフォルトの名無しさん mailto:sage [2018/10/09(火) 18:10:23.08 ID:MhhKJFZu.net]
>>613
怒らせたくはないけどまともなシステムならクライアントから見えるところにデービーのアドレスは書かれてないよ

649 名前:デフォルトの名無しさん mailto:sage [2018/10/09(火) 18:17:11.24 ID:MhhKJFZu.net]
クライアント↔Webサーバ↔DBサーバ
ブラウザがやり取りするのはWebサーバ
その先にはアクセス出来ないのが普通



650 名前:デフォルトの名無しさん mailto:sage [2018/10/09(火) 18:18:22.93 ID:alG4HLy2.net]
普通に上司経由でシステムの所管部署に相談してAPIを共有してもらった方が安全だろ
自作コードでサーバーを直接叩くのはいろんな意味で危険

651 名前:デフォルトの名無しさん [2018/10/09(火) 19:14:35.52 ID:AeEBE3gj.net]
焦っとるなプロさんwおまえらプロさんのコードも十分すぎる程危険なんやがw

652 名前:デフォルトの名無しさん mailto:sage [2018/10/09(火) 19:46:02.37 ID:fy0WNSeQ.net]
>>613
出発点から「自分で勝手に何かする」というのが間違い。
他の人も言うとおり、まずは自社で管理してるDBなら管理部署に、ベンダのシステムであればそのベンダに、やりたいことを伝えて対応してもらう。
対応してもらうのが無理なら、管理部署やベンダにAPI等を利用してツールを作成して良いか確認を取る。
もしOKなら、API等を利用してツールを自作する。完成したら必ず管理部署やベンタにツールを見てもらう。

勝手にベンダのAPIを利用してSQL発行ツール自作してクビ寸前まで行ったことがある人を知ってる。
大幅減俸で落ち着いたらしいけど今はもういないから実際のところどうだったのかは知らんが。

653 名前:606 mailto:sage [2018/10/09(火) 20:01:04.99 ID:FzGViRAL.net]
>>609-611
ども!

ワークシート上なら"00:59:00"+"00:01:00"→"01:00:00"みたいに単純に繰り上げが出来るので
マクロで同じような計算が出来ないかと考えたんだけど(>>611さんのコメがそうかな?)
具体的な手順が思い当たらなかったので、原始的なやり方で作ってみました

strTime = Format(cell.Value, "hh:nn:ss")でセルの時刻を文字列に読み込み
時(strH)・分(strM)・秒(strS)を切り分け、分の1桁目が9の時だけ

intH = val(strH)、intM=val(strM)で数値化した値から
sumM = ntH*60 + intM + 1 
intH = int(sumM/60)、intM = sumM - intH *60 を計算し

これを時刻に直してセルに戻す、という手順で出来ました

654 名前:デフォルトの名無しさん mailto:sage [2018/10/09(火) 21:10:44.20 ID:KUCIqBg4.net]
先週文字化けの件で質問をした者です。
あれから例のマクロをデバッグし、無事原因がわかりました。
文字コード云々ではなく、単純なロジックミスという落ちでした…。
お騒がせをしましたが、ご助言くださった方々ありがとうございました。

655 名前:デフォルトの名無しさん mailto:sage [2018/10/09(火) 21:29:16.80 ID:b4f5o7ms.net]
オートフィルターをかけた状態の表を配列に取り込むには、Copy Pasteで一旦どこかに貼るしかないのかな?

656 名前:デフォルトの名無しさん mailto:sage [2018/10/09(火) 21:52:35.13 ID:ZX9nrIhI.net]
>>625
クローズ報告ありがとさん、

657 名前:燻りそうだったのでクローズ連絡は助かる []
[ここ壊れてます]

658 名前:デフォルトの名無しさん mailto:sage [2018/10/09(火) 22:00:23.20 ID:fy0WNSeQ.net]
>>625
やっぱそっちだったか。解決したようで良かったわ。

659 名前:デフォルトの名無しさん mailto:sage [2018/10/09(火) 22:45:02.58 ID:AYSUcKLB.net]
>>626
ヒントはF5、表示セルのみ



660 名前:デフォルトの名無しさん [2018/10/09(火) 23:06:53.75 ID:YqupZDTJ.net]
>>618
>>623
信じられない。
なぜツール作っただけで解雇とか減給とか?
チームは違うけどチームの作業効率をはるかに高めることをするという非常にほめられることをするというのに。
別に会社になんの不利益も与えない。

661 名前:デフォルトの名無しさん mailto:sage [2018/10/09(火) 23:19:05.15 ID:/OeVfiJl.net]
>>630
普通にある
>非常にほめられることをする
ほめられない

ってか考えが浅すぎるから本当に気をつけろ

662 名前:デフォルトの名無しさん mailto:sage [2018/10/09(火) 23:44:23.50 ID:fy0WNSeQ.net]
>>630
問題は色々あるが、まずは許諾を得ずに勝手に構造を解析するということ。つまりリバースエンジニアリング。
次にシステム上想定していない勝手なSQLをこれまたシステム上想定していない勝手な方向から流すということ。

「会社のために」の枕詞を取り払えばこういうことになる。その枕詞が付いていたとしてもリスク管理の観点から非常に危ない。
特に、決められた手続き決められたデータが抽出できる環境がありながら全データ抽出したいとか、クラッキング以外の何ものでもない。
自分で勝手に作ったSQL発行ツールが原因でサーバに異常な負荷をかけてしまったら責任が取れるのか?
そのツールが悪意のある第三者に見られあるいは持ち出され、悪用されたら責任を取れるのか?

自分の会社に対する誠意を完全に証明できる自信があるとか、完全無欠に誰にもどこにも迷惑をかけないツールを作成できる自信があるとかなら、なおのこと手順を踏むべきだ。
黙ってやろうとすること自体が会社を納得させる自信のなさと会社への不誠実さの顕れだ。

663 名前:デフォルトの名無しさん [2018/10/09(火) 23:59:21.37 ID:XhVkj+aM.net]
大げさなやつらだな
普通に「ODBCでアクセスしたいからID発行してプリーズ」って管理部署に頼め

664 名前:デフォルトの名無しさん mailto:sage [2018/10/10(水) 02:27:09.31 ID:XHKsn4Nc.net]
お前らビビりすぎだろ
外からDBアクセスできるなら
トランケートされても文句言えねえわ

665 名前:デフォルトの名無しさん mailto:sage [2018/10/10(水) 02:27:50.97 ID:XHKsn4Nc.net]
真面目か

666 名前:デフォルトの名無しさん mailto:sage [2018/10/10(水) 04:01:34.04 ID:Vii71/zC.net]
作成依頼です。

エクセルのA1セルに入力されている住所をgoogleearthで開きたいのです。
マクロでgoogleearthを立ち上げるとこまではshell関数で作ったのですが,そ
の先をどうすればよいのかさっぱりわかりません。
googleearth左上の検索のところにA1セルの住所を自動で入力して検索ボタンを押す,
というマクロを教えて頂けないでしょうか。

よろしくお願いします。

667 名前:デフォルトの名無しさん [2018/10/10(水) 04:15:39.03 ID:2oZCcDsE.net]
お前らが甘やかすからこういう全部作ってくれ馬鹿が調子に乗る

668 名前:デフォルトの名無しさん mailto:sage [2018/10/10(水) 04:32:03.45 ID:crh5hRT2.net]
>>636
しね
よろしくお願いします

669 名前:デフォルトの名無しさん mailto:sage [2018/10/10(水) 04:43:16.64 ID:qywSzTWT.net]
それは、ウェブページ・ブラウザの自動操作だろ?

iMacros, Selenium IDE とか。
それか、Ruby で、Selenium Webdriver を使う



670 名前:デフォルトの名無しさん mailto:sage [2018/10/10(水) 07:20:01.37 ID:R8Iewqe6.net]
CREATE SESSION しかないに決まってるだろ

671 名前:デフォルトの名無しさん mailto:sage [2018/10/10(水) 07:54:53.57 ID:8C9bqvqY.net]
>>636
hyperelink関数で良いんじゃないの
=hyperlink("https://earth.google.com/web/search/"&"皇居")
とか

672 名前:628 [2018/10/10(水) 12:15:23.99 ID:FaIKeQC1.net]
>>632
大げさな。

ちなみにそのデータは

673 名前:レ客関係の個人情報は一切含まれてなくて、含まれているのは製品や購入パーツの在庫情報だけだ。
ある作業で、その製品や在庫パーツのあるデータを使って簡単な計算をしなければならず、
現状ではいちいちWebサイトで1個1個フィルードに入力してSUBMITボタンを押して出てきたデータをExcelに貼り付けてそれを計算しなければならない。
しかしそのデータベースをexportすることができればWebサイトで1個1個地道に長時間かけて手入力で全部データをコピペしなければならない。
こんなアホなことはできない。というかこんなアホなことを真に受けてまじめにしようとする人(うちのチームの人う)ことアホだ。
ちなみにWebからExcelにexportするためのボタンはあるがなぜかほしいデータが入らないようにしているため利用できない。
[]
[ここ壊れてます]

674 名前:デフォルトの名無しさん [2018/10/10(水) 12:17:07.30 ID:FaIKeQC1.net]
そのデータベースから一挙に全データをexportできれば
あとはvlookupを使ってすべての作業が一瞬で終わり。1分。
それができないから、上司からしめきりが1か月後みたいに設定されてる。

675 名前:デフォルトの名無しさん [2018/10/10(水) 12:18:25.21 ID:FaIKeQC1.net]
【誤】
ちなみにそのデータは顧客関係の個人情報は一切含まれてなくて、含まれているのは製品や購入パーツの在庫情報だけだ。
ある作業で、その製品や在庫パーツのあるデータを使って簡単な計算をしなければならず、
現状ではいちいちWebサイトで1個1個フィルードに入力してSUBMITボタンを押して出てきたデータをExcelに貼り付けてそれを計算しなければならない。
しかしそのデータベースをexportすることができればWebサイトで1個1個地道に長時間かけて手入力で全部データをコピペしなければならない。
こんなアホなことはできない。というかこんなアホなことを真に受けてまじめにしようとする人(うちのチームの人う)ことアホだ。
ちなみにWebからExcelにexportするためのボタンはあるがなぜかほしいデータが入らないようにしているため利用できない。

【正】
ちなみにそのデータは顧客関係の個人情報は一切含まれてなくて、含まれているのは製品や購入パーツの在庫情報だけだ。
ある作業で、その製品や在庫パーツのあるデータを使って簡単な計算をしなければならず、
現状ではいちいちWebサイトで1個1個フィルードに入力してSUBMITボタンを押して出てきたデータをExcelに貼り付けてそれを計算しなければならない。
しかしそのデータベースをexportすることができればWebサイトで1個1個地道に長時間かけて手入力で全部データをコピペする必要はない。
こんなアホなことはできない。というかこんなアホなことを真に受けてまじめにしようとする人(うちのチームの人う)ことアホだ。
ちなみにWebからExcelにexportするためのボタンはあるがなぜかほしいデータが入らないようにしているため利用できない。

676 名前:デフォルトの名無しさん mailto:sage [2018/10/10(水) 12:23:41.33 ID:ic51pubx.net]
>>644
>>633
SELECT権限すらつけてくれないってなら殴れ

677 名前:デフォルトの名無しさん mailto:sage [2018/10/10(水) 12:25:54.86 ID:XztHvnca.net]
システムを作る側の目線でいうと、UIベースで自動化しようとするのは迷惑だから頼むからやめろ
普通に権限を貰うか、システム改善を依頼してくれ

678 名前:デフォルトの名無しさん mailto:sage [2018/10/10(水) 12:36:26.92 ID:qywSzTWT.net]
外部の部署が、DB に直接アクセスすることは、普通は認められない

他の部署の人が頼みにきて、裏口でやっている話はよくきくけど、危険な行為。
ルール自体を変えないで、ルール違反の形で、黙って下の者がよくやるけど、
上の者が把握・管理していないから、会社として成立していない

ドイツ車で、大問題になった。
下の者が、勝手にプログラムを書き換えていた

679 名前:デフォルトの名無しさん mailto:sage [2018/10/10(水) 12:56:48.86 ID:Zvsf2lMk.net]
>>642
大げさでも何でもない。
Webから取ってくるのだって関係部署に連絡して承認をうけるのが普通。
ましてDBに直接繋げたいなら上司に相談しとけ。



680 名前:デフォルトの名無しさん mailto:sage [2018/10/10(水) 13:12:18.23 ID:ic51pubx.net]
>>647
外部の部署と言うより「データは社内の共有データでDBはシステム部が所管している」
ように読めるけどね。
昨今のデータ活用・データ民主化の流れでエンドユーザにSELECTさせるのは当然になってる。
もちろん無断でやるなんてのは論外だが。

681 名前:デフォルトの名無しさん mailto:sage [2018/10/10(水) 14:45:22.50 ID:47KSV23N.net]
>>629
どういう意味?
可視セルをそのまま配列に放り込んでも連続した部分しか取り込めない仕様だけど

682 名前:デフォルトの名無しさん mailto:sage [2018/10/10(水) 16:35:31.34 ID:Umu+TTue.net]
今回ばかりはRubyさんの言う事が正しい気がする

今の人件費はこれだけです
RPAでやったらこうなります
DBへのアクセスを許可してもらえればこうなります
だからこうして欲しい、と、数字を出して説得するのが
いんじゃないかな

683 名前:デフォルトの名無しさん mailto:sage [2018/10/10(水) 18:29:59.16 ID:hH0ybitP.net]
>>650
いや、改めて試したけどできるぞ?

684 名前:デフォルトの名無しさん mailto:sage [2018/10/10(水) 19:13:54.40 ID:YG2jN7++.net]
>>651
アマチュアならこういう意識が薄くてもしょうがない

685 名前:デフォルトの名無しさん mailto:sage [2018/10/10(水) 19:36:58.16 ID:8C9bqvqY.net]
>645
SELECTは危険ではないけど重くなるんだよ
特に初心者が書いたwhereもしないSELECTとか重くてかなわん
だから素直に頼んでくれ、ほんと

>>651
それでいいよ

全件SELECTしてからaccessでフィルタする奴

686 名前:は本気で死ねとしか思わん []
[ここ壊れてます]

687 名前:621 mailto:sage [2018/10/10(水) 22:05:51.66 ID:KAlixXjp.net]
>>642-644
目的:Web系在庫管理システムのデータ抽出の際の項目選択の手間を省きたい
手段:以下の作業を自動実行する
 1.在庫管理データベースからすべての情報をその都度抽出する
 2.全データから必要な情報のみを抽出し、加工(計算など)を行う

この、小さな目的達成のために払うリスクがでかすぎることを解っていないところとか、
俺の知るクビになりかけた人物と同じこと言ってて流石に寒気がした。
もっともその人が作ったのはエンドユーザーが抽出条件をある程度自由にカスタマイズ・保存できる文字どおりのEUCツールで、
ハイコストなSELECTが発行されまくった結果システム全体のパフォーマンスが微妙に落ちて、それでベンダのSEが気づいたんだが。

はじめから管理部署なりベンダなりに相談しておけば:
A.システム内に解決する手段が既にあるかもしれない(標準のEUC機能に抽出条件を保存できたり)
B.システムで対応可能だったかもしれない(SEが管理する簡易的な抽出機能への追加など)
C.システムで対応できずともベターな解決手段を探れたかもしれない(APIへの接続許可など)

>>654も言っているがDBもサーバも回線(帯域幅)もタダではないし有限だし消耗品と思え。

688 名前:デフォルトの名無しさん mailto:sage [2018/10/10(水) 22:12:58.00 ID:R8Iewqe6.net]
ユーザーに触らせたくないDBとEUC用DBの違いって何なんですかね?

689 名前:デフォルトの名無しさん mailto:sage [2018/10/10(水) 22:14:25.01 ID:8C9bqvqY.net]
>DBもサーバも回線(帯域幅)もタダではないし有限だし消耗品と思え。
そうだね、業務用途のサーバーと回線は従量制と知らない人が多すぎる
逆に従量制じゃなければ全員に迷惑がかかるって事になり、それまた迷惑
開発の端の端にいるなら、回線ってとんでもない金額がかかってるって知っておいてほしい

自分のPC内でぐるぐる回すだけならまぁわからんでもないけどな



690 名前:デフォルトの名無しさん mailto:sage [2018/10/11(木) 09:09:34.84 ID:3Bdkvxy9.net]
サーバー内で、ちゃんと絞り込みが出来ているかとか、
実行計画を見て、確認したり

高度情報処理資格のDB スペシャリストを取ったり、ミックの本を読んだり、
勉強した人しか、DB を触っちゃいけない

691 名前:デフォルトの名無しさん mailto:sage [2018/10/11(木) 10:35:12.02 ID:OPRsoT4p.net]
DBスペシャリスト持ってないの丸わかりだな
DBスペシャリストで扱うのはデータモデリングやアプリケーション設計が中心で、
クエリチューニングのような運用寄りの出題はほとんどない

692 名前:デフォルトの名無しさん mailto:sage [2018/10/11(木) 10:37:57.07 ID:ljJfys9R.net]
そんなハードル高くしてどうすんだよ
ビジネスで競争に負けてたらシステムの予算だって出なくなるんだぞ

693 名前:デフォルトの名無しさん [2018/10/11(木) 12:17:10.50 ID:z21fIq1H.net]
なぜか質問そっちのけでレベルの低いマウント取り合いになるプロさん達w

694 名前:デフォルトの名無しさん [2018/10/11(木) 12:37:03.82 ID:r2SLIRPN.net]
おれも素人だが、今回の件はいくらなんでもアホすぎる質問をした素人VBAerが悪いと思う

695 名前:656 mailto:sage [2018/10/11(木) 12:55:04.68 ID:3Bdkvxy9.net]
DB スペシャリストの過去問題をやればよい

上司から、レコードの絞り込みが甘いと注意されました。
表設計をどう直しますか?

もちろん、出題されている

696 名前:デフォルトの名無しさん mailto:sage [2018/10/11(木) 14:56:15.23 ID:O4qg21v8.net]
ExcelVBAのスレでいきなりDBスペシャリストの話題持ち出すのはどこのアホウなんだよ

697 名前:デフォルトの名無しさん mailto:sage [2018/10/11(木) 16:13:58.69 ID:L8oPmsqv.net]
いきなりってわけじゃないけどな
それなりの流れがある

698 名前:デフォルトの名無しさん mailto:sage [2018/10/11(木) 16:14:37.48 ID:L8oPmsqv.net]
VBAスペシャリストの皆

699 名前:さん []
[ここ壊れてます]



700 名前:デフォルトの名無しさん mailto:sage [2018/10/11(木) 19:13:53.56 ID:ZOLcqtf+.net]
まぁ使用する範囲で同じ内容のテーブル作っておいて
マスターの方のテーブルの登録や更新、削除をトリガーとして
別途作った同じ内容のテーブルに反映させた側のテーブルを見に行くようにしたりする
システムには当たったことがあるけどね。

何にせよ余計なことはやらせない方が無難ではあるよ。

701 名前:デフォルトの名無しさん [2018/10/11(木) 20:25:53.87 ID:xmZyhWmI.net]
>>654
Accessのウィザードで作ったリンクテーブルやインポート使ってるんだけど
これって該当します?
sharePointのリスト取り込むときってどうするのがいいんだろう?

702 名前:デフォルトの名無しさん mailto:sage [2018/10/11(木) 20:46:07.05 ID:Y5yLaTkx.net]
>>668
勝手に接続してるなら、どういう方法だろうとアウトと思っておいたほうがいい

重さで言うなら、SQL直接書くかせめて確認するのが一番確実
とにかく最初にwhereでフィルタするんだ
そのフィルタしたテーブル同士で結合したりするんだ。それだけ覚えておけばどうにかなる
リンクしてるだけだと特に意味はないわ
ってかこの辺はDB板行ったほうがいいだろう

703 名前:デフォルトの名無しさん [2018/10/11(木) 20:54:31.19 ID:Pm0hH2qh.net]
SELECT TOP 100 * FROM TableA

704 名前:デフォルトの名無しさん mailto:sage [2018/10/12(金) 17:32:15.43 ID:PXpuxPjv.net]
許可もらわんと管理部門から逆にIPたどられて社内のPCから不正なアクセスが頻繁にあるって言われなければいいね

705 名前:デフォルトの名無しさん [2018/10/13(土) 18:47:47.50 ID:L3Dj2/gz.net]
コレがエクセルのシートしか使えないヤツラの知能の限界
しょうがない
どこにインデックスはってるか見もせずに
where句で巨大なテーブルをいきなり検索したりするからな
そしてフルスキャンになる

そしてcountで件数を確認もせずにいきなり大量抽出する

知能が低いヤツラにSQLさわらせるとこうなる
もうね予見できるワケ

706 名前:デフォルトの名無しさん [2018/10/13(土) 18:51:04.15 ID:L3Dj2/gz.net]
低学歴知恵遅れの知能が低いヤツにSQLはキチガイに刃物
低学歴知恵遅れの知能が低いヤツにオブジェクト指向はキチガイに刃物

銃刀法違反なみの重罪

コレは定説

707 名前:デフォルトの名無しさん mailto:sage [2018/10/13(土) 18:53:51.58 ID:T9MlimPF.net]
キチガイ登場
こわい

708 名前:デフォルトの名無しさん [2018/10/13(土) 19:04:43.08 ID:L3Dj2/gz.net]
そもそもdbにはいっぱい個人情報が一杯つまってる
こっちのほうが重大な問題だからな

表ごとにセキュリティレベルがあるのも当然
そういった制限すらないのはヤバイ会社

だれがいつそういった情報を取得スしたか
どんな業務で誰の承認で取得したか
ちゃんと履歴が必要になる

709 名前:デフォルトの名無しさん mailto:sage [2018/10/13(土) 21:11:38.49 ID:iFQl0LJl.net]
いっぱい一杯



710 名前:デフォルトの名無しさん mailto:sage [2018/10/13(土) 22:25:56.64 ID:/vvsi1/9.net]
Excel VBAの話をしてよ

711 名前:デフォルトの名無しさん [2018/10/14(日) 00:37:19.40 ID:Q3eQCyRU.net]
excel vbaで語ることなんかあんの
excel vbaで語るなら、それを併用して得られるメリットぐらいしかない

excel vbaでなんかいいことあった?

712 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 10:50:03.22 ID:xKzvoEYL.net]
>>678
おまえはなんの話をしているんだ?スレ名読めんのか?

713 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 11:16:34.21 ID:RzJcTIeH.net]
>>678
その質問はご法度
無視されるか話をそらされるだけ
>>679のようにね

714 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 15:42:57.90 ID:jfwl8Yip.net]
>>678
彼女ができました

715 名前:デフォルトの名無しさん mailto:sage [2018/10/15(月) 21:16:00.15 ID:E6pr56BO.net]
 私たち日本人の、日本国憲法を改正しましょう。
総ム省の、『憲法改正國民投票法』、でググって
みてくださ

716 名前:「。拡散も含め、お願い致します。 []
[ここ壊れてます]

717 名前:デフォルトの名無しさん mailto:sage [2018/10/16(火) 03:46:59.80 ID:SShwrEAs.net]
激しくスレチ

718 名前:デフォルトの名無しさん mailto:sage [2018/10/16(火) 15:17:46.48 ID:ZlBiMRvR.net]
excel vbaの話題がない、最近使ってないし

719 名前:デフォルトの名無しさん mailto:sage [2018/10/16(火) 19:43:27.94 ID:VGXZfwAw.net]
別に無いならないでそれでよかろう。話題がないとお前は困るのか?



720 名前:682 [2018/10/16(火) 20:24:31.25 ID:wwtQC7N8.net]
>>685
困るから言っておるのだ

721 名前:デフォルトの名無しさん mailto:sage [2018/10/16(火) 20:33:30.35 ID:7RIuHdb8.net]
yahoo知恵遅れなら毎日うんざりするような質問だらけだよ

722 名前:デフォルトの名無しさん [2018/10/16(火) 20:35:04.21 ID:H029zngb.net]
ヤホーよりプロさんの方がバカっぽいけどねw

723 名前:デフォルトの名無しさん mailto:sage [2018/10/16(火) 20:58:20.65 ID:7RIuHdb8.net]
知恵遅れでの"VBA" "VBスクリプト" "マクロ"いずれかを含む質問数、過去24時間に76投稿
回答者もうんざりしてる

724 名前:デフォルトの名無しさん mailto:sage [2018/10/16(火) 22:01:20.92 ID:QoFGLA2x.net]
エクセルの鉄則:達人であることは隠せ
https://jp.wsj.com/articles/SB10750612626653313748604584520883598309574
「次々と人がやって来ては『エクセル...

725 名前:デフォルトの名無しさん mailto:sage [2018/10/16(火) 23:49:27.99 ID:LqxRfbs7.net]
ここが面白く無いせいでPowerShellerがExcelスレまで荒らしに来てて困る。

726 名前:デフォルトの名無しさん mailto:sage [2018/10/17(水) 13:34:37.11 ID:i+REgo0L.net]
カンマ区切りのcsvをデータインポートで読み込むと一部がズレます
csvを一度メモ帳に全部貼り付けて、それをexcelに貼ったあとデータ区切りでカンマを選ぶと上手く取り込めます
この挙動の違いがイマイチよく分からないんですがどうしてメモ帳に貼り付けることで上手く読み込めるようになるんでしょうか

727 名前:デフォルトの名無しさん mailto:sage [2018/10/17(水) 13:46:32.94 ID:tHw/Qu/E.net]
そら貼り付けとデータインポートは別の機能だからだよ
Excelは既存の機能の動作がわずかでも変わったら必ずマクロが動かんようになったやないかどないしてくれんねんボケと山ほどの馬鹿が怒鳴り込んでくる
似た機能を追加したから共通化しますね〜と安易に仕様変更できず、大量の機能の重複を抱えながら昔のバグっぽい挙動も尊重して個別にメンテしてるの
このスレにいるような連中のせいでな

728 名前:デフォルトの名無しさん mailto:sage [2018/10/17(水) 14:48:36.05 ID:9GZlDgUm.net]
>>692
データのせい

729 名前:デフォルトの名無しさん mailto:sage [2018/10/17(水) 14:59:38.33 ID:uJo2tnoC.net]
>>694が正しい。 >>693は戯言なので無視していい。
メモ帳貼り付け保存後、と前とをバイナリー比較すれば理由は見えてくるはず



730 名前:デフォルトの名無しさん mailto:sage [2018/10/17(水) 16:42:17.32 ID:i+REgo0L.net]
ありがとうございます
bomとかそういう感じですかね
また、うまく読み込めないのは一部utf8形式の文字コード?があり、それをsjisに変換出来ないのが原因のようでした
データインポートでutfを選択したら無事開けました

731 名前:デフォルトの名無しさん mailto:sage [2018/10/17(水) 17:06:43.54 ID:S++6iW66.net]
>>696
一部だけUTF8?
混在してたってこと?

732 名前:デフォルトの名無しさん mailto:sage [2018/10/17(水) 18:02:13.22 ID:5pOkIjLu.net]
半角と全角の混在で全角だけUTF-8とか

733 名前:デフォルトの名無しさん mailto:sage [2018/10/17(水) 18:07:18.62 ID:7Q2iPe/Z.net]
ダブルクォーテーションとカンマのくくりが上手く行ってないとか

734 名前:デフォルトの名無しさん mailto:sage [2018/10/17(水) 19:38:14.44 ID:uJo2tnoC.net]
>>698
あたりまえ、UTFもShiftJISも英数は同じ

735 名前:デフォルトの名無しさん mailto:sage [2018/10/17(水) 23:31:27.45 ID:SJQ0JWQn.net]
英数だけが半角とは限らんがな
ココニカケルカナ

736 名前:デフォルトの名無しさん mailto:sage [2018/10/18(木) 13:31:04.71 ID:ks5As5t+.net]
セル内改行でひっかかってるのかも
改行コードは何種類

737 名前:もあるし、読み込み方法によって正常に認識してくれないケースがあるから []
[ここ壊れてます]

738 名前:デフォルトの名無しさん mailto:sage [2018/10/18(木) 13:46:30.50 ID:B1wZDxhL.net]
>>702
メモ帳経由だとうまくいくってのと整合しない

739 名前:デフォルトの名無しさん mailto:sage [2018/10/18(木) 14:30:43.91 ID:vpgDyIt0.net]
>>696 で解決報告あるのに何をいつまで考えてるのw



740 名前:デフォルトの名無しさん mailto:sage [2018/10/18(木) 19:04:18.15 ID:ekkKNanr.net]
自分でもしっかりと把握してないので書くつもり無かったんですが一応解決の詳細書きますね
まずダブルクォーテーションやカンマはないです
あと自分の理解と説明が足りてませんでした
一部utf8ではなく全部utf8で基本普通の英文字と数字なのでsjisでもぱっと見問題なく開けるけどクエリストリングのカラムにノーブレーキングスペース?やsjis対応してない文字列があり、そこで上手いこと処理出来てなかったみたいです
utf8をsjis指定でデータインポートしようとしたのが間違いの発端でしたスミマセン

741 名前:デフォルトの名無しさん mailto:sage [2018/10/18(木) 19:33:45.83 ID:vpgDyIt0.net]
いやいやおつかれさま

742 名前:デフォルトの名無しさん mailto:sage [2018/10/18(木) 23:12:45.91 ID:wIeiUTi/.net]
WorkSheet_Changeでセルの内容に変化があったときだけ文字色を赤にする処理を行おうとしています
対象が単体ならApplication.Undoで比較できますが、複数の場合1セルずつに対してUndoができないため
対象全体の内容を一時シートにコピー→For Eachで元データと1つずつ比較しているのですが、もっとスマートな方法はあるでしょうか?

743 名前:デフォルトの名無しさん mailto:sage [2018/10/18(木) 23:38:51.56 ID:fhgndB5P.net]
>>707
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Font.Color = -16776961
End Sub

これで良いのでは???

744 名前:デフォルトの名無しさん mailto:sage [2018/10/18(木) 23:45:12.89 ID:wIeiUTi/.net]
書き方が不正確でした
「対象セルの値が変更される前と一致しない場合にのみ」文字色を変えたい、です

745 名前:デフォルトの名無しさん mailto:sage [2018/10/18(木) 23:54:42.06 ID:vpgDyIt0.net]
赤くしなくても共有と変更履歴で代用可能だろ

746 名前:デフォルトの名無しさん mailto:sage [2018/10/18(木) 23:58:11.74 ID:fhgndB5P.net]
>>709
あぁそういう事か、すまん
今「excel change before」で調べただけだけど、そうするしかなさそう
selectionchangeでselectionの内容を保存しておくみたいだねぇ
よー考えるわ

747 名前:デフォルトの名無しさん mailto:sage [2018/10/18(木) 23:58:42.58 ID:fhgndB5P.net]
>>710
そうだねぇ
なんか赤にする以外の方法の方が良い気がする

748 名前:デフォルトの名無しさん mailto:sage [2018/10/19(金) 14:49:27.87 ID:2evJVEIF.net]
くそう、↑のやり方以外が思いつかない。
セルにtagプロパティでもありゃ前値保持できるのに。。

赤字にしたい目的がわかれば、そもそも別の簡単な手とかあるかも?(逃げ)

749 名前:デフォルトの名無しさん mailto:sage [2018/10/19(金) 21:19:57.26 ID:acLDgyPd.net]
>>713
Excelをフロントエンドにしたデータベース管理です
一度に複数のデータを弄ることが多いため、フォームではなくテーブルに直接データを読み込み、編集後に更新といった流れで、この更新部分の判定を文字色で行っています
作業者自身も更新前にどこを変更したかひと目でわかると考えてこの方法を取ってますが、もっとベターな方法があるなら全然乗り換えたいです



750 名前:デフォルトの名無しさん mailto:sage [2018/10/19(金) 21:42:58.96 ID:yGBPiuMh.net]
編集後・更新
この間に変更する予定のセルに対して処理をかませることができそう、というか出来るだろう

751 名前:デフォルトの名無しさん mailto:sage [2018/10/19(金) 23:04:57.15 ID:MRFHlf9T.net]
Vue.js などのウォッチャ・データバインド・リアクティブシステムだろ

データ更新前後のフックは、無いのか?

752 名前:デフォルトの名無しさん [2018/10/20(土) 02:32:55.91 ID:ZiSB9nEL.net]
Ifとforだけでとりあえず簡単な処理くらいはさせられるようになったんだけど、次は何を学べば順当にステップアップできる?
イベントプロシージャもダブルクリックだけは理解した
Constで柔軟なコード書くのも学んだ
配列はいまいち便利な使い道がわからない

753 名前:デフォルトの名無しさん mailto:sage [2018/10/20(土) 06:58:16.21 ID:JSzrZOTM.net]
>>717
処理の制御自体は分岐と繰り返しを覚えれば大抵なんとかなる。
ロジックをよりスマートにしたい。処理時間を短縮したい等なら、配列やアルゴリズム等の効率的なやり方が必須になる。
特に、セルを使うならば配列は絶対使ったほうがいい。二次元配列と聞くとよくわからなそうだが、
(y軸,x軸) を指定するだけだから、一見難しそうに見えても簡単だよ。
あとは、何をやりたいかによるかな。それによって取得するべき技術が決まってくると思う。

754 名前:デフォルトの名無しさん mailto:sage [2018/10/20(土) 07:07:20.99 ID:JSzrZOTM.net]
>>717
配列使った方がいい理由を補足すると、
配列変数を使えば、変数の数を大幅に減らすことができるかつ、ループ文を使って1から最大数までアクセスがしやすいから。例えば、人間という名前の違う変数を別々に100人定義するのは面倒。
だが、配列変数を使えば1行で定義できる。

セルに関して言うと、VBAはセルにアクセスした際に大幅に時間を使う。値を編集するたびに毎回セルにアクセスするよりも、配列変数に格納をして、まるごとセルに代入するようにすれば、アクセスは1回で済む。
(それっぽく例えるなら、積み木を片付ける時に1つずつ摘まんで箱に入れるか、形を整えた後まとめて箱に入れるかの違い)

755 名前:デフォルトの名無しさん mailto:sage [2018/10/20(土) 07:49:40.17 ID:/P2yZ5ci.net]
>>717
次は違う言語を学ぶといいよ
pythonとかがオススメ

756 名前:デフォルトの名無しさん mailto:sage [2018/10/20(土) 08:15:19.11 ID:A4xnc2/3.net]
>>717
シートはセルの二次元配列
ブックはシートの一次元配列
合わせて三次元の配列

元々エクセル自体が配列の塊なので、
vba上だけで配列を持たなくてもなんとかできるようにはなっている

他のプログラムだと配列なしなんてありえないんだけどね

vbaで配列を扱う大きなメリットとしては、爆速にできる事

で、そこまで来たら何を覚えるかだけど
・objectの扱い。set foo = sheets("name")
・fso(filesystemobject)

この辺かね〜

他言語やるなら俺もpythonがオススメ

757 名前:デフォルトの名無しさん mailto:sage [2018/10/20(土) 09:34:05.81 ID:46UfR13B.net]
>>721
>合わせて三次元の配列

「三次元配列」と書かないところが正確でイイ!

758 名前:デフォルトの名無しさん mailto:sage [2018/10/20(土) 11:18:59.41 ID:+OPbDxrw.net]
あ・・・Application.Workbooks(3).Worksheets(1).Cells(1, 1).Characters(2, 2).Font.Color = vbRed

759 名前:デフォルトの名無しさん mailto:sage [2018/10/20(土) 11:51:10.77 ID:ZiSB9nEL.net]
参考になります!説明がとても分かりやすいですね 尊敬します
配列を学ぶことでの処理の高速化も理解できました
setはサンプルコードでよく見かけるなとは思ってたけど、詳しく掘り下げてみます
fsoは初耳なのでじっくり学びます
Pythonも並行して学びたいと思ってたのでちょうどいいタイミングみたいですね
ありがとうございました。



760 名前:デフォルトの名無しさん mailto:sage [2018/10/20(土) 12:18:11.17 ID:4zkFVcA8.net]
for each文かな

761 名前:デフォルトの名無しさん mailto:sage [2018/10/20(土) 12:25:25.27 ID:A4xnc2/3.net]
あぁfor eachは必須だね

762 名前:デフォルトの名無しさん [2018/10/20(土) 13:40:10.36 ID:fOofNO0j.net]
>>717
余裕があるならアセンブリ言語をちょっと齧っとくのがいいと思う

763 名前: mailto:sage [2018/10/20(土) 14:06:53.02 ID:9jkSTDWo.net]
>>727
アセンブラとか環境とかはどう調達すればいいのでしょうか?

764 名前:デフォルトの名無しさん mailto:sage [2018/10/20(土) 14:48:16.50 ID:wrk6+Nbn.net]
masm とか nasm とかのキーワードで調べる
っていうか、vbaの範囲外のことまでここで聞くなよ

765 名前:デフォルトの名無しさん mailto:sage [2018/10/20(土) 17:52:59.67 ID:b1m8oY5e.net]
>>717
デバッグの方法(VBEの機能)
ユーザーフォーム
for next以外の繰り返し(do loop)

766 名前:デフォルトの名無しさん [2018/10/20(土) 18:35:11.69 ID:fOofNO0j.net]
>>728
齧るだけだからネットで調べてだいたいの仕組みが分かればそれでいいんだよ
「アセンブラ 入門 casl」でググって見つかったサイトで勉強してみるのがいいと思う
資格の勉強にもなるし

やる気あるなら機械語が使えるポケコンを買って実際に
ハンドアセンブルしてみるのもいいかも

767 名前: mailto:sage [2018/10/20(土) 19:32:33.10 ID:9jkSTDWo.net]
>>731
casl2 は気が進まなくって…だってハードがないんでしょう?

768 名前:デフォルトの名無しさん [2018/10/20(土) 19:45:41.44 ID:fOofNO0j.net]
>>732
うん、ハードはないな、仮想CPUだから
でもコンピューターの仕組みは分かるようになる
俺はアセンブリの知識のおかげでデバッグとかで役に立ってる

769 名前:デフォルトの名無しさん mailto:sage [2018/10/21(日) 09:08:05.20 ID:kG1rnb84.net]
オデッセイのやってるvbaの試験受けてvbaスタンダードに合格したけど、
これ実際にvbaでプログラム作れって言われても絶対作れないな。

何が言いたいかって、お前らすげーわ。



770 名前:デフォルトの名無しさん mailto:sage [2018/10/21(日) 11:55:37.97 ID:ENQ8JUj5.net]
>>732
ハートもないやつがなにいってる

771 名前:デフォルトの名無しさん mailto:sage [2018/10/21(日) 12:30:29.51 ID:jhIwJ9RB.net]
vbaで色々ツール作ってるけど、自分しか使わないっていうので設計雑になっちゃう。
後の機能追加等考えるとクラスモジュール使って役割ハッキリさせた設計が良いんだろうけど、結局書くのが楽な手続き型チックになっちゃうのよね

772 名前:デフォルトの名無しさん mailto:sage [2018/10/21(日) 14:12:47.07 ID:895e0oJn.net]
>>736
それは別に反省ポイントじゃない

773 名前:デフォルトの名無しさん mailto:sage [2018/10/21(日) 14:42:48.38 ID:3rYBWp0g.net]
自分を省みるのは良いことだよ

774 名前:デフォルトの名無しさん mailto:sage [2018/10/21(日) 17:38:59.00 ID:PQvzxFzP.net]
VBAはコードのスタイル云々以前に存在自体が基本的に悪なので、実務においてはいかに使用を最小限にとどめながら要件を満たすかが最も重要だよ
VBAがあるだけでメンテができる人が数十分の一になるんだから

775 名前:デフォルトの名無しさん mailto:sage [2018/10/21(日) 18:02:16.30 ID:97mpJlTr.net]
VBA撲滅委員会でも作ってその会長にでもなれ

776 名前:デフォルトの名無しさん mailto:sage [2018/10/21(日) 18:14:38.25 ID:PQvzxFzP.net]
>>740
別にVBAで飯食ってる人を批判するつもりはないよ。
プログラミングにおいて>>736の言ってるような適切なモジュール化(VBのModuleではなく広義のモジュールだぞ、念のため)を行う目的は、メンテナンス性を良くすることだ。
そして、Excelのメンテナンス性を高める最善の方法は、VBAのコードを綺麗に書くことではなく、VBAの使用を極力控えることだ。
VBAのメンテナンス性を高めようという発想は根本的に矛盾してるんだよ。

777 名前:デフォルトの名無しさん mailto:sage [2018/10/21(日) 19:06:18.04 ID:jhIwJ9RB.net]
VBAの存在が基本的に悪という理由って何だ?
文面から見て、メンテできる人(使用者)が少ないからという風に捉えているんだが…
もしそれが理由ならば、職場によるのではないか?

778 名前:デフォルトの名無しさん mailto:sage [2018/10/21(日) 19:13:25.11 ID:jhIwJ9RB.net]
ただ、以前にマクロを修正する案件をやった時
初めて他者の書いたコードをしっかり見ることになったが…まぁ見辛いし目的が捉えづらく苦労した。
ろくなドキュメントも残っていなかったしね。
でもそれは、コードの改善や仕様書

779 名前:しっかり残せば解決する問題であって、決して言語そのもののせいではないと私は思っているよ。 []
[ここ壊れてます]



780 名前:デフォルトの名無しさん mailto:sage [2018/10/21(日) 19:36:36.64 ID:MDetJiiM.net]
言語や開発環境が悪いからユーザーが集まらない
言語や開発環境が悪いからユーザーが育たない
言語や開発環境が悪いから汚いコードが作られやすい

全てとは言わないが大きな影響力を持ってるのは否定できないな

781 名前:デフォルトの名無しさん mailto:sage [2018/10/21(日) 19:54:07.49 ID:y1r4bkf6.net]
>>736
言うてもそんなに長くならないので、コメントさえしっかり書いておけば大丈夫だよ

782 名前:デフォルトの名無しさん mailto:sage [2018/10/21(日) 20:57:14.28 ID:Mf4U6jjq.net]
Pythonを使える環境ならPythonでExcelを操作できるようになっといたほうが将来的に有意義なんですかね

783 名前:デフォルトの名無しさん mailto:sage [2018/10/21(日) 21:27:31.42 ID:y1r4bkf6.net]
>>746
何を目指すかによる
プログラマーならexcelはまず触らない
事務職ならpythonを触らない
両方知っておくことは悪いことじゃないが、どっちっつかずになりそう

784 名前:デフォルトの名無しさん mailto:sage [2018/10/21(日) 21:55:52.80 ID:Df7SvDdo.net]
知恵遅れに毎日60以上ののVBA低レベ質問が恒常的に続くのは、商業科がExcelを教科に入れてるせいか?
VBA、大学教養のC課題、ネトゲーマーのUWSC自動化の三馬鹿うんざりトリオをなんとかして欲しい

785 名前:デフォルトの名無しさん mailto:sage [2018/10/21(日) 22:00:53.93 ID:y1r4bkf6.net]
無視したら

786 名前:デフォルトの名無しさん mailto:sage [2018/10/24(水) 20:08:02.64 ID:VKzyLxGu.net]
どうせ半年後は.jsになってるんだし

787 名前:デフォルトの名無しさん mailto:sage [2018/10/24(水) 21:19:25.29 ID:I9F6CV18.net]
昔アセンブラやってたけど
今はアセンブラの知識なんて
まず糞の役にもたたない
悪いことは言わないから
IL止まりにしておいて
残りの時間を他の言語の学習に回した方がいい

788 名前:デフォルトの名無しさん mailto:sage [2018/10/24(水) 23:52:56.26 ID:PFCPc8y/.net]
VBAってWinAPI 使えるんだな
入力もエクセルのシート利用できるし使いがっていいなこれ
自分だけ使うものはこれで十分な気がしてきた

789 名前:デフォルトの名無しさん mailto:sage [2018/10/25(木) 00:03:26.58 ID:lvTxqVIL.net]
二次元配列に入力できるってかなり神がかってると思う



790 名前:デフォルトの名無しさん mailto:sage [2018/10/25(木) 08:52:35.61 ID:VGA0KlB2.net]
何を二次元配列に入力できる事が神がかってるの?

791 名前:デフォルトの名無しさん mailto:sage [2018/10/25(木) 09:32:39.27 ID:r31i+JfI.net]
人間が抽象化なしで無理なく扱えるデータは二次元の表までなのは確かだな
特別な技能を持たない人間の能力的限界がExcel

792 名前:デフォルトの名無しさん mailto:sage [2018/10/25(木) 11:20:28.64 ID:Poeqy0yu.net]
行(列)をベクトルだとみなすと何次元にでもなるでしょ
テンソル入れ物にするメリットってあるか?
レベル上がると有益になるのかな

793 名前:デフォルトの名無しさん mailto:sage [2018/10/25(木) 18:41:01.78 ID:lvTxqVIL.net]
>754
文字列と数値。ってかこれ以外セルには入れられないでしょ。オブジェクトは入れられないし

794 名前:デフォルトの名無しさん mailto:sage [2018/10/26(金) 00:13:09.54 ID:Inq2or/E.net]
何を〜に入力できる?
って質問に対して間違っちゃいないが...

795 名前:デフォルトの名無しさん mailto:sage [2018/10/26(金) 01:08:48.00 ID:SUBF4wRe.net]
>>757
変数型のことじゃなくて、どんな
データかって意味じゃね?

796 名前:デフォルトの名無しさん mailto:sage [2018/10/26(金) 07:12:48.70 ID:xKW3LLWl.net]
セルって単語が後出しだからこうなるんだよ

797 名前:デフォルトの名無しさん mailto:age [2018/10/26(金) 08:36:50.37 ID:QS/Z6hlA.net]
わかるなら聞くなよハゲども
なんでハゲてるか自問してろ

798 名前:デフォルトの名無しさん mailto:sage [2018/10/26(金) 10:34:09.86 ID:FHu9JUdN.net]
>>752
当然だがWinAPIだけじゃなくVB呼び出しに適う任意のAPIが呼べるから、自分だけの環境なら何だって可能

799 名前:デフォルトの名無しさん mailto:sage [2018/10/26(金) 10:45:47.31 ID:REmVcuAB.net]
解凍・圧縮用のdllであるunlha32やらunzip32なんかもちゃんと用意されていて、vbaから利用できるしな



800 名前:デフォルトの名無しさん mailto:sage [2018/10/26(金) 12:00:29.68 ID:FHu9JUdN.net]
>>763
え、ないでしょ?
あるんだっけ?

801 名前:デフォルトの名無しさん mailto:sage [2018/10/26(金) 13:4 ]
[ここ壊れてます]

802 名前:1:39.22 ID:FXq8Nzbn.net mailto: 「自分だけの環境」の話だろw []
[ここ壊れてます]

803 名前:デフォルトの名無しさん mailto:sage [2018/10/26(金) 20:18:33.42 ID:7acxRmxq.net]
それ言い出すとシェル呼び出してそこから外部プログラムの実行でなんでもできるわな

804 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 00:10:36.89 ID:64tA3ZzD.net]
それだと最早Excel VBAを起点にする意味がないんだよなぁ

805 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 09:39:45.10 ID:z1SsyyeN.net]
戻り値主体の関数的な使い方がしにくいのでは?

806 名前:デフォルトの名無しさん [2018/10/27(土) 12:17:32.77 ID:nqyfF+/M.net]
なんで何でもできたら悪いみたいな言い方やねん

807 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 15:13:38.94 ID:gKMunlkh.net]
彼女の作り方がわからない

808 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 17:08:31.91 ID:arx5iKp2.net]
事務の女性をお得意のVBAで助けてやるんだ

809 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 20:08:09.98 ID:9XazvJsa.net]
助けてあげても一瞬感謝されるだけで何も起こらないぞ
下手すると感謝すらされない



810 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 21:27:07.52 ID:EQmtOnig.net]
>>772
そう、気づかないんだよな・・・

811 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 23:46:47.86 ID:bYiR1b6u.net]
助けても後出しで本当はこうしたいのにできてないだの文句言われる

812 名前:デフォルトの名無しさん [2018/10/28(日) 06:55:12.79 ID:xmv6f/Y+.net]
全然助けれとらんやんwプロさんあわれwww

813 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 09:41:11.55 ID:U+AZbxUR.net]
ちょっとしたことでいいからピンポイントで教えてあげる。
食いついてこなかったら諦める。

814 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 10:40:54.72 ID:o08My3f7.net]
ExcelVBAで、女にもてるようになる方法スレ w

815 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 11:02:16.86 ID:eT9vyE0h.net]
ランダムアクセスファイルでデータ管理をしています。
いままで動いていたものが GET PUT で 「レコード長が一致しない」となります。

一部こんな感じです。
Const MONTH_SIZE As Long = 60
Type M_Rec
S_code As Long
Stock As Long
byCode As String * 8
M_id_Cre(MONTH_SIZE) As Integer
End Type
Public S_MAIN_REC As M_Rec

Open FileName For Random As #SmainNO Len = Len(S_MAIN_REC)
Get #SmainNO, indexNo, S_MAIN_REC

この標準モジュールを破棄して同じモジュールをインポートすると
正常に動きますがワークブックを保存して再起動し同じ処理をすると
エラーになります。
Public S_MAIN_REC As M_Rec の 記述場所を移動させると正常に
動きましたがモジュール内に新規プロシージャを追加したらまた
エラーが出るようになりました。
モジュールが壊れていると思い新しく作成しても同じでした。
ご意見お願いします。
現在ユーザ定義 の M_id_Cre(MONTH_SIZE) As Integer の配列を
61に変更し正常動作中です。

816 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 11:41:59.08 ID:THaxkhg7.net]
さすがに時代遅れにも程がある
そんな黴の生えたゴミカスは今すぐ捨てて普通にワークシートで管理するかDBにしろ

817 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 15:41:48.78 ID:9UvKiQNH.net]
言い過ぎ。しかしランダムアクセスファイルとは懐かしい

818 名前:776 mailto:sage [2018/10/28(日) 16:59:37.36 ID:eT9vyE0h.net]
すみません
もともとはワークシートで管理していたのですがファイルのほうが
都合が良いので変更しました。

819 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 17:01:07.70 ID:ISWax1Kh.net]
で、今まさにその前提が間違っていたことが判明したんだろ?
直ちに戻しなさい



820 名前:デフォルトの名無しさん [2018/10/28(日) 20:08:41.54 ID:4pkRNiip.net]
馬鹿の特徴

動きません
エラーが起きます

決して具体的なエラーメッセージを書かない

821 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 21:40:15.40 ID:uzLWPyey.net]
バカ

822 名前:フ特徴
書いてあるエラーメッセージを理解できずに自爆 w

> GET PUT で 「レコード長が一致しない」となります。
[]
[ここ壊れてます]

823 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 23:30:32.75 ID:9UvKiQNH.net]
ここの住人回答者は居丈高だからteratailにでも質問なさい。
ただコード具体例とエラー詳細はいずれにせよ求められるけど

824 名前:デフォルトの名無しさん [2018/10/29(月) 00:30:55.69 ID:4Xu2UR6y.net]
>>784
馬鹿は表面的なことしか見えない

825 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 04:51:38.42 ID:xpZzwKyb.net]
>>786
表面的なことすら見えてないバカの自爆乙 w

826 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 09:45:00.02 ID:uMisuGYK.net]
初心者には環境とかエラーの詳細な条件を明記することへの心理的な障壁があります
その心理の正体は一体何でしょう?

827 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 10:53:33.28 ID:VYDzXbvz.net]
慣れの問題かと
・自信ないのでミス指摘されたくないなどの自尊心問題
・コンプライアンスリスクとの取り違え
・個人情報リスクとの取り違え

828 名前:776 mailto:sage [2018/10/29(月) 11:24:48.23 ID:aqnyYxuj.net]
少し荒れてしまいましたね、すみません

エラーは書いてあるとおり「レコード長が一致しない」
Openステートメントで指定された長さと異なるということなのですが
レコード変数やOpen Get Putのプロシージャなど変更せずに
このエラーが発生しました。多分VBAのバグだと思うのですが
詳しい方に教えていただきたく思いまして書き込みしました。
タイミングが悪かったですね。

829 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 11:33:02.57 ID:f3zS/Ojj.net]
確かにタイミングが悪かったな
20年遅いわ
今回お前が苦労して解決しても後で他の誰にも分からないんだぞ?
そんなもん押し付けられる方の身にもなってみろ



830 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 11:45:30.06 ID:uMisuGYK.net]
「VBA ファイル読み書き」で検索してOpen コマンドとかが出てくるものかねえ

831 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 11:48:12.61 ID:VYDzXbvz.net]
?出てくるぞ?あたりまえだろ

832 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 14:25:31.25 ID:gsxtgvfG.net]
>多分VBAのバグだと思うのですが

まぁ言語の方に責任を押し付けたくなるのは判るがなw

833 名前:デフォルトの名無しさん mailto:age [2018/10/29(月) 15:23:05.64 ID:P7hlr/PN.net]
何わろとんねん

834 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 16:45:28.78 ID:gkooAort.net]
>>790
バイナリエディターでレコードファイルを確認するのと、テスト環境作ってレコードを減らしても発生するかみる

835 名前:デフォルトの名無しさん mailto:age [2018/10/29(月) 18:06:20.39 ID:P7hlr/PN.net]
>>796
頼む

836 名前:776 mailto:sage [2018/10/29(月) 19:56:48.16 ID:aqnyYxuj.net]
>>796
エラーになる状態ですと、新規にファイルを作成しても1レコード目でエラーとなりますので
ファイルがおかしいとは思えません。ユーザー定義のレコードサイズ、モジュール変数の
メモリ設定があやしいと思うのですが。

837 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 23:29:14.96 ID:cO8xV5Br.net]
素人質問ですみません
エクセルで消費税を算出したいのですが、一つのセル内で完結できないでしょうか
ググっても税抜き価格と税込み価格の、二つのセルを使うものばかりでして

838 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 23:52:48.29 ID:g/o5tBon.net]
>>793
まさかな、と思ってぐぐってみたら本当だった。
しかもqiitaの新着記事にもそんなのあるし。

なぜなのか?

839 名前:デフォルトの名無しさん mailto:sage [2018/10/30(火) 00:03:25.38 ID:oqjX6NBU.net]
>>798
最小条件での動作確認しないなら俺はなにもいわない



840 名前:デフォルトの名無しさん mailto:sage [2018/10/30(火) 00:10:19.82 ID:iPJEDoz1.net]
>>799
それVBAの質問なの?そもそも

841 名前:デフォルトの名無しさん mailto:sage [2018/10/30(火) 12:34:46.04 ID:MiaEkZFI.net]
>>799
税抜き価格を入力したら、そのセルの数値を自動的に1.08倍するマクロ

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Target.Value = Int(Target.Value * 1.08)
Application.EnableEvents = True
End Sub

842 名前:デフォルトの名無しさん mailto:sage [2018/10/30(火) 13:48:04.01 ID:Zs94iK ]
[ここ壊れてます]

843 名前:wt.net mailto: 際限なく1.08倍していきます []
[ここ壊れてます]

844 名前:デフォルトの名無しさん mailto:sage [2018/10/30(火) 17:38:32.50 ID:D9hLQP5r.net]
消費税は際限なく上がる

845 名前:デフォルトの名無しさん [2018/10/30(火) 18:40:58.23 ID:bEYZFX0T.net]
くだらない質問だと思いますが、会社のバーコードで在庫 納品書 委託 委託精算 等 連携したものを作成する場合は初心者でどのくらい作成期間がかかるものでしょうか?

846 名前:デフォルトの名無しさん mailto:sage [2018/10/30(火) 18:50:13.80 ID:aaXb5tV1.net]
100年くらい見積もっておけば間違いない

847 名前:デフォルトの名無しさん mailto:sage [2018/10/30(火) 18:53:25.90 ID:E+8/TrgC.net]
少なくとも、SIerに委託するより>>806の給料の方が遥かに高くつくくらいの期間は間違いなくかかるよ

848 名前:デフォルトの名無しさん [2018/10/30(火) 19:15:41.01 ID:bEYZFX0T.net]
>>808
因みに幾らくらいかかるものでしょうか?

849 名前:デフォルトの名無しさん mailto:sage [2018/10/30(火) 19:49:51.22 ID:wPm+kt3H.net]
>>809
仕様がわからないので見積もれません
4000億円ぐらいみとけば間違いない



850 名前:デフォルトの名無しさん mailto:sage [2018/10/30(火) 20:01:06.67 ID:UXC/r+zj.net]
テーブル(lo)を列毎に配列で取り出して処理したいのですが、キーを列名、値に列範囲を格納すればforループで代入できて簡潔なのでDictionaryを使ってみようと思っています。

Dim dic As Dictionary: Set dic = New Dictionary
Dim lc As ListColumn
For Each lc In lo.ListColumns
_dic.add lc.name, WorksheetFunction.Transpose(lc.DataBodyRange.value)
next lc

以上で作成した「Dictionaryの値」に格納した「配列の値」に代入が出来ません。
例えば

debug.print dic(見出しA)(1) '「ピカチュウ」が表示
dic(見出しA)(1) = "ライチュウ"
debug.print dic(見出しA)(1) '「ピカチュウ」が表示

となってしまいます。しかし以下の様に配列を格納し直すと反映されます。

debug.print dic(見出しA)(1) '「ピカチュウ」が表示
dic(見出しA) = Array("","ライチュウ", dic(見出しA)(2),・・・
debug.print dic(見出しA)(1) '「ライチュウ」が表示

修正があるたびに配列を代入し直すのは面倒なので出来れば値を直接書き換えたいのですが、どうすればいいのでしょうか。

851 名前:デフォルトの名無しさん mailto:sage [2018/10/30(火) 20:25:09.48 ID:4tQqoM/4.net]
>>811
そもそもlo.ListColumns(lc.Name).Range.Item(Index).Value でテーブル内のセル値のセッターにアクセス出来るので、わざわざそんなことをやる必要がないと思う
仕様上ListObjectは列名重複が許されないし、ListColumnsコレクション自体がDictionaryと殆ど等価のハッシュテーブルになる

852 名前:デフォルトの名無しさん mailto:sage [2018/10/30(火) 20:50:28.74 ID:UXC/r+zj.net]
ありがとうございます
現在はそうしているのですが(元々それがやりたくて全部テーブルに置き換えたのですが)
値を取り出すときに毎回ListColumns(lc.Name).DataBodyRange(Index).Valueと長々書く為コードが読みづらいのと、配列にすればちょっと速度改善が見込めるかなと思って試していました。

853 名前:デフォルトの名無しさん mailto:sage [2018/10/31(水) 13:51:41.06 ID:OKzw5dxl.net]
Dictionaryの代替以外の回答もお待ちしてます。


あと追加で質問なのですが、先ほどのTransposeの様にワークシート関数を利用するなら配列ではなくセル範囲の方が速いという記事を見つけました。
どういう原因でそうなるのでしょうか?

854 名前:デフォルトの名無しさん mailto:sage [2018/10/31(水) 17:54:26.42 ID:Dz4usJiG.net]
一般的にユーザーによる同等のVBAコードよりワークシート関数の方が速い
C#とかよりC++ネイティブの方が数〜倍速くなるのと同じ

855 名前:デフォルトの名無しさん mailto:sage [2018/10/31(水) 18:27:27.91 ID:b54HYVzl.net]
>>814
組込みの機能はアプリケーション内でリソース管理が最適化されてるのでね
VBAで

856 名前:デフォルトの名無しさん mailto:sage [2018/10/31(水) 18:30:36.22 ID:b54HYVzl.net]
>>814
組込みの機能はアプリケーション内でリソース管理が最適化されてるのでね
VBAでやると不要な大きさのバッファを確保してたりして無駄が多くなる

857 名前:デフォルトの名無しさん mailto:sage [2018/11/01(木) 07:11:29.46 ID:hEMz+97b.net]
シートにボタン配置して押したら、オートシェイプの直線を引ける段階までって出来る?いわゆるショートカットキー的な感じの。
実際に直線を引いちゃうのは山ほどネットに転がってるけど、引くのは任意でやりたい。

858 名前:デフォルトの名無しさん mailto:sage [2018/11/01(木) 10:46:24.36 ID:Uh6mdsZK.net]
>>818
出来ない。

859 名前:デフォルトの名無しさん [2018/11/01(木) 18:36:00.35 ID:Nl3jEz8g.net]
Excelのセルに入ってるデータを使ってOutlookでメールをVBAで書きたいのですが
それぞれの行やある文字についてフォントや色などで装飾したいんです。
そんなことはできますか?
なんかできなそうなんですが。
でもこれをしないとものすごく不便なのです。
うまくいけば残業せずに遊びながら居残りしてお金だけはたくさんもらえるのですが・・・



860 名前:デフォルトの名無しさん mailto:sage [2018/11/01(木) 18:51:35.86 ID:4wthv7uM.net]
>>818
できるよ。

861 名前:デフォルトの名無しさん [2018/11/01(木) 19:09:06.19 ID:Nl3jEz8g.net]
>>818
サルでもできるよw
単にボタンにマクロの登録をすればいいだけ。

862 名前:デフォルトの名無しさん mailto:sage [2018/11/01(木) 19:13:58.18 ID:9hAL4zo4.net]
>>822
う〜ん...
俺もできるとは思うけどそんなに簡単か?
何を登録するんだ?

863 名前:デフォルトの名無しさん [2018/11/01(木) 19:18:10.81 ID:Nl3jEz8g.net]
>>823
ボタンを挿入して右クリックしてマクロの登録を選び実行させたいプロシージャを選ぶだけ

864 名前:デフォルトの名無しさん mailto:sage [2018/11/01(木) 19:22:20.09 ID:9hAL4zo4.net]
>>824
直線を引く直前の状態にするプロシージャって簡単に書けるのかい?

865 名前:デフォルトの名無しさん mailto:sage [2018/11/01(木) 19:24:41.75 ID:9hAL4zo4.net]
>>820
やったこと無いけどHTMLメールにして本文をHTMLにすれば良いんじゃない?
あとはテキストメール作成と同じじゃないの?

866 名前:デフォルトの名無しさん mailto:sage [2018/11/01(木) 19:26:55.17 ID:1Z/ZXoar.net]
>>820
HTML書けるならこの辺りを見ればわかるだろ
https://docs.microsoft.com/en-us/office/vba/api/outlook.mailitem.bodyformat

867 名前:デフォルトの名無しさん [2018/11/01(木) 19:30:44.64 ID:Nl3jEz8g.net]
>>826
じゃ具体的なコードはどうなるの?

例えば、「こんにちは、うんちと申します。」の文で、うんちを太字で茶色にしたい場合。

868 名前:デフォルトの名無しさん [2018/11/01(木) 19:33:37.59 ID:Nl3jEz8g.net]
>>827
こんにちは、<B><font color=brown>うんち</font></B>と申します。


869 名前:デフォルトの名無しさん mailto:sage [2018/11/01(木) 23:23:17.57 ID:EZF4jYAF.net]
>>822
できないから聞いたんだが?



870 名前:デフォルトの名無しさん mailto:sage [2018/11/01(木) 23:35:45.63 ID:NdKTTFxC.net]
できるって言ってる人は質問をよく理解してないんだと思う

871 名前:デフォルトの名無しさん [2018/11/01(木) 23:45:47.15 ID:BwvtJmQs.net]
この板は日本語が読めない低学歴知恵遅れが多いのはあってる
えてして書いてある要件とまったく違うもんをあげてくるよくいる軽い池沼入ってるのと似てる

872 名前:デフォルトの名無しさん mailto:sage [2018/11/01(木) 23:59:15.18 ID:8GU0aFYB.net]
お互い様

873 名前:デフォルトの名無しさん mailto:sage [2018/11/02(金) 00:46:25.82 ID:iMC20ra8.net]
>>16
Excelのマクロの記録はVBAコードで表現できないものは原則できない
操作自体の記録再生ができるUWSCとかRPAといったツールを呼び出せばできる

874 名前:デフォルトの名無しさん mailto:sage [2018/11/02(金) 06:47:30.99 ID:Cpir13NG.net]
Sendkeysで無理くりリボンメニューの直線を選択するコードを作ってショートカット割り当てる位しかないと思う

875 名前:デフォルトの名無しさん [2018/11/02(金) 07:54:22.50 ID:EKeu1zQN.net]
>>830
あなたはサル以下ということだ。ウイッキー。

876 名前:デフォルトの名無しさん mailto:sage [2018/11/02(金) 10:00:17.95 ID:IpqW30ow.net]
>>818

あれ? まだコードあがってないですね。
じゃぁExcel2010用ですが、サンプルを、、、
目的に合わせてShapeIDを変えてください。

Sub CreateShape()

 Dim ShpID As Long   ' ShapetypeID
 Dim iShpCnt As Long  ' Shape Cou

877 名前:nt (追加待ち判定)
 Dim SHP As Variant  ' Loop用Shape

 ' Create Shape
 '--------------------------------
 ShpID = 409      'Freeformの場合
' ShpID = 1119     'Ovalの場合
' ShpID = 1042     'LineConnectorの場合
 iShpCnt = ActiveSheet.Shapes.Count
 Application.CommandBars.FindControl(ID:=ShpID).Execute
 Do
  DoEvents
 Loop While iShpCnt = ActiveSheet.Shapes.Count
End Sub

描かずに連続で押すと処理が入れ子になってしまうのが
難点ですが、、、
[]
[ここ壊れてます]

878 名前:デフォルトの名無しさん mailto:sage [2018/11/02(金) 10:56:22.32 ID:N4XXlewl.net]
>>837
なるほど

879 名前:デフォルトの名無しさん mailto:sage [2018/11/02(金) 12:39:25.94 ID:ouVO3wBC.net]
>>837
できた!ありがとうございます!



880 名前:デフォルトの名無しさん mailto:sage [2018/11/02(金) 12:40:29.21 ID:m6WMCehM.net]
>>837
これで出来たんだね。
コード書ける環境じゃ無いから試せなかったけど、この方法かUIAutomation使うかどちらかかなあと思ってた。

CommandBarControl.ExecuteでもShapeの場合トグルっぱい動作だから思う状態になるか自信が無かった。

881 名前:デフォルトの名無しさん mailto:sage [2018/11/02(金) 12:44:20.35 ID:m6WMCehM.net]
あれ、Do〜Loopの処理は気付かんかったなあ。
自分が作成してたら動かんかったと結論出してたかも。

882 名前:デフォルトの名無しさん mailto:sage [2018/11/02(金) 12:50:59.79 ID:IpqW30ow.net]
>>841
StackOverFlowかどっかのサイトの受け売りなんですけどね。
どこからもらったのか忘れた、、、

883 名前:デフォルトの名無しさん mailto:sage [2018/11/02(金) 12:57:46.92 ID:IpqW30ow.net]
>>837
あ、後続の処理用の変数消し忘れてた。
Dim SHP の行は不要です。

884 名前:デフォルトの名無しさん mailto:sage [2018/11/02(金) 17:17:11.16 ID:ouVO3wBC.net]
ちなみになんだけどDoLoopはなんの為にあるんですかね?
なくても同じ動きすんだけど。

885 名前:デフォルトの名無しさん mailto:sage [2018/11/02(金) 17:57:06.50 ID:oqBXcCoW.net]
書き終わってShapeオブジェクトが作成されるまで、次の処理を待機

元々書いた後に何か処理をするプログラムの一部だったんだと思う
今回はCommandBarControlのコマンドが実行された時点で仕事は終わってるから要らないかと

886 名前:デフォルトの名無しさん mailto:sage [2018/11/02(金) 18:54:32.40 ID:m6WMCehM.net]
>>845
ループ無くても動くんなら思った通りだった。
違いが有るとすれば自分はFindControlは使わず、コントロールの指定もIDじゃなくて名前使う所。

名前はFor Each使ってCommandBarを列挙して名前をDebug.Print、そのCommandBarに対してFor EachでCommandBarControlを列挙して名前をDebug.Printなどで調べる。

887 名前:デフォルトの名無しさん mailto:sage [2018/11/02(金) 19:49:18.45 ID:IpqW30ow.net]
>>844
ん? Do - Loop 部分ないとちゃんと動かんよ?
VBEから実行してない?
ボタンに割り付けると、ボタン押した瞬間に十時カーソル消えるはず。
Excel2010より新しいVersionは動きが違うの?

888 名前:デフォルトの名無しさん mailto:sage [2018/11/02(金) 20:57:01.00 ID:/dr4nYVn.net]
>>847
ボタン押したらクリックしたら線がかけるようになったよ。
2003でも動いたし、2007でも動いた。

889 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 00:21:42.99 ID:N3tWJlln.net]
Excel2010でも試したけど、ループのないプロシージャで描けたよ
勿論ボタンのクリックイベントから



890 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 00:44:19.57 ID:N3tWJlln.net]
フォームコントロールに割り当てると描けないっぽい
ActiveXコントロールのイベントで呼べば描けるが

フォームコントロールって何のために有るんだろう・・・

891 名前:デフォルトの名無しさん [2018/11/03(土) 04:34:07.93 ID:/0NNzwPk.net]
任意のセルをコピーして所定の場所にペーストするマクロを作りたいです。
セルをコピーした状態からマクロ記録を取って、ペーストするだけのマクロを作ったのですがうまくいきません。

教えてください!

892 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 06:28:54.02 ID:5ShzkuEH.net]
>>850
VBAで作るフォームと処理を共有できる、とか?

893 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 06:31:10.97 ID:5ShzkuEH.net]
>>851
マクロの記録だと余計な処理が追加されるから、それを削るだけでうまくいくはず
まずは記録したマクロをここに書いてみ

ただしCtrlを押しながら複数のセルをコピーした場合はかなり難しくなる

894 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 06:39:13.96 ID:IAxxklmh.net]
>>850
ああ、なるほど。
確かにフォームボタン使ってた。
そのために余計な苦労をしたってわけか。
情報Thx!

895 名前:デフォルトの名無しさん [2018/11/03(土) 11:31:29.48 ID:/0NNzwPk.net]
>>853
Sub Macro5()
'
' Macro5 Macro
'

'
Range("AH11").Select
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub


こんな感じです。これはセル1つ選択です。(最終的には複数選択してシート間でコピペする予定です)

896 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 11:43:19.50 ID:S6AysWL6.net]
社名 金額  部門
================
A社 1000円 営業
A社 2000円 事務
A社 1500円 事務
A社 3000円 販売
B社 1500円 事務
B社 3500円 営業
C社 1000円 営業
C社 3000円 営業
C社 1500円 販売
D社 2000円 事務

こんな感じのA社⇒D社のように整列されたデータに対して

897 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 11:43:51.55 ID:S6AysWL6.net]
社名 金額  部門
================
A社 1000円 営業
A社 2000円 事務
A社 1500円 事務
A社 3000円 販売
A社       営業計 1000円 <
         事務計 3500円 <
         販売計 3000円 <
            計 7500円 <
B社 1500円 事務
B社 3500円 営業
B社       営業計 3500円 <
         事務計 1500円 <
            計 5000円 <
C社 1000円 営業
C社 3000円 営業
C社 1500円 販売
C社       営業計 4000円 <
         販売計 1500円 <
            計 5500円 <
D社 2000円 事務
         事務計 2000円 <
            計 2000円 <
全社      営業計 8500円 <
         事務計 7000円 <
         販売計 4500円 <
            計 20000円 <

こんな感じに行の間に小計、最後に合計を挿入するようなコードありますか?( < が追加行)
小計は必ず 営業、事務、販売の順番に並び、0円の場合は行自体挿入しません
実際ののデータは会社数、部門共に30以上あるので速度重視であれば望ましいです

898 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 12:46:22.45 ID:q2N3VeHV.net]
そんなもんExcelのグループ集計で一発
お前に必要なのはVBAではなくExcelの入門書

899 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 13:03:36.46 ID:3VcH/mb2.net]
>>829
span使え



900 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 13:12:27.13 ID:78HW/kSp.net]
>>857
とりあえずピボットでググったら?

901 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 13:18:18.27 ID:3VcH/mb2.net]
標準のエディタインライン展開できないとかsubの引数名自動で変えられないとかクソすぎ
誰かもっと開発しやすいやつをくれ

902 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 13:30:31.88 ID:S6AysWL6.net]
集計したい訳じゃなくデータを作成したいんだって

903 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 13:33:02.71 ID:N8ATSODS.net]
>>862
だからそれはグループ集計でできる

904 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 13:38:02.57 ID:S6AysWL6.net]
VBAで作るには?

905 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 13:47:38.58 ID:N8ATSODS.net]
グループ集計の操作をマクロで記録するといいよ

906 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 15:14:54.13 ID:NeGXChns.net]
>>855
単にシート間で複数セルの値を同期させたいだけならそもそもクリップボードを経由しない方が早いのでは?
VBAでコピーしないでワークシート関数でシート間参照させるとか、コピー元のセルのValueプロパティなりFormulaプロパティなり、必ずコピーしなきゃいけないプロパティだけをコピー先のプロパティに直接代入するとか

ユーザーによるコピー操作そのものを再現しなきゃいけない理由でもあるの?

907 名前:デフォルトの名無しさん [2018/11/03(土) 18:06:58.76 ID:/0NNzwPk.net]
>>866
シート間で照合するデータだとマクロ使わずできるのですが、
コピー元のシートのデータが大きいので、ペースト先のシートには必要なものだけを張り付けて、
印刷用のフォーマットに変換させて、終わったらペースト先のシートは保存せず元に戻すという操作をしたいと考えています。


お願いします。

908 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 19:32:11.39 ID:NeGXChns.net]
>>867
元データの書式や印刷用シートの体裁、印刷するデータの抽出方法などがわからないが、やりたいことからすると、Range.TextプロパティかValueプロパティの値をコピー先にそのままコピーするだけで良さそう

コピー元とコピー先のデータの体裁によっては、Range.AdvancedFilterメソッドで印刷用シートの方にフィルタ結果を出力するとかもできる

909 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 22:51:34.85 ID:MUI16VQU.net]
クラサバシステムを作るのは現実的なのでしょうか?
DBは相性からいってSQLServerで



910 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 22:58:31.43 ID:zFR/cOIP.net]
>>869
Excelで作ろうとしてる理由が能力の問題なのか、それともExcelのワークシートの機能が必要だからなのか、それ次第だな
C#やVB.NETやJavaで作れる能力があるなら普通に作れるし、無いなら無理
能力が無いならAccessでも使ってろ

911 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 23:03:55.31 ID:e+FwThFa.net]
能力の問題なら今ならOffice365のPowerAppsおすすめ
たぶん>>869が手作りするより遥かに高品質なものが一瞬で作れるよ

912 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 23:12:01.99 ID:MUI16VQU.net]
作りたいのは、Activitiのエンジンを使ったWFシステムです
Excelで検討する理由は、ADによるシートとセルの権限管理ですかね

913 名前:デフォルトの名無しさん mailto:sage [2018/11/04(日) 00:03:26.74 ID:Ujv6OCQm.net]
いやクラサバだったら権限管理はSQL Server側でやるもんだろ
当然、SQL Serverなら問題なくADで制御できる
その調子じゃ厳しそうだね

914 名前:デフォルトの名無しさん mailto:sage [2018/11/04(日) 00:32:40.13 ID:xCAdckZO.net]
Excelのレベルで権限制御したところで、別のExcelシート作ってデータソース参照するだけでやりたい放題やで
Excelに限った話ではなくC#などでクライアント作る場合でも同じことで、プロなら絶対にありえない設計

915 名前:デフォルトの名無しさん mailto:sage [2018/11/04(日) 07:35:57.46 ID:dL+sv/7f.net]
ここで板違いの質問を堂々とするレベルなんだから w

916 名前:デフォルトの名無しさん [2018/11/05(月) 12:48:07.93 ID:g2XKp1gu.net]
またプロさんイキっとるのw

917 名前:デフォルトの名無しさん [2018/11/05(月) 23:37:43.98 ID:Vz2xlIAK.net]
>>868
Range.Textプロパティ、Valueプロパティが良く理解できなくて困ってます。
セルの指定で合ってますか?

コピー元の表の中からから1行(5セル分)コピーして、隣のシートの所定の位置に貼り付けたいです。
1行選択した後、マクロ起動させて隣のシートに張付けという操作です。頼みます、教えてください!

918 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 00:56:10.22 ID:bmwIjcqH.net]
>>877
Sub CopyToPrintForm()

ThisWorkbook.Worksheets("データ用シート名").Range("コピー元セルの行番号:コピー元セルの行番号").Copy Destination:= ThisWorkbook.Worksheets("印刷用シート名").Range("コピー先セルの行番号:コピー先セルの行番号")

End Sub

919 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 01:09:36.50 ID:bmwIjcqH.net]
>>877
印刷するデータの行をユーザーに選ばせる場合、ユーザーに行選択させた状態で以下のマクロを実行させるようにするとかでいいだろ
文字通り一行コピーしてしまうので要注意

>>877
Sub CopyToPrintForm()

ThisWorkbook.Worksheets("データ用シート名").Activate
ActiveCell.EntireRow.Copy Destination:= ThisWorkbook.Worksheets("印刷用シート名").Range("コピー先セルの行番号:コピー先セルの行番号")

End Sub



920 名前:デフォルトの名無しさん [2018/11/06(火) 01:38:13.14 ID:ca/fCdtD.net]
>>879
ありがとうございます。
Pasteはいらないのでしょうか?

921 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 02:06:44.79 ID:hX39oSae.net]
教えてください!とか言ってるから荒しかと思ってたがガチか

922 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 02:42:45.06 ID:hX39oSae.net]
>>867
>ペースト先のシートは保存せず元に戻す
マクロを実行すると「元に戻す」は使えなくなるから、一々開きなおさないといけないけど大丈夫なのかな
もしその作業が連続して行われるなら、テンプレート用シートと印刷用シートを別に用意した方が楽な気がする

923 名前:デフォルトの名無しさん [2018/11/06(火) 06:33:12.72 ID:ca/fCdtD.net]
>>882
保存せずは間違えでした。
ペーストしたものをデリートするマクロを作って、元に戻す予定です。

924 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 07:50:07.02 ID:hqcuocq7.net]
>>880
引数付きでCopyメソッドを実行するときはPasteメソッドは書かなくていい

925 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 08:01:03.35 ID:hqcuocq7.net]
>>883
印刷用シートはデータと切り離してテンプレート用の別のファイルにした方が良い
そうすれば、印刷処理のとき一時的にテンプレートから印刷用フォーマットを書き起こした後、印刷用フォーマットのブックを削除するだけで済む
印刷後に印刷用シートを初期化するマクロを更に走らせるなんて、手間を増やしてるだけだと思うぞ

926 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 19:36:10.55 ID:gYvutDKX.net]
複数端末で使用しているマクロがあります
端末aのデスクトップに目当てのファイルがあり、他の端末はネットワークで繫がっている端末aのデスクトップを覗きに行く感じになってます
ファイルパス & filenameで参照したいんですがどのように書くべきなんでしょうか

927 名前:デフォルトの名無しさん [2018/11/06(火) 19:50:54.72 ID:S8pHBi6C.net]
>>886
のぞいてる?
スケベ!

928 名前:875 [2018/11/06(火) 19:57:59.09 ID:ca/fCdtD.net]
みなさんありがとうございます。自分のイメージしてたものが100%出来ました。

929 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 22:30:23.08 ID:hKUAUjlF.net]
VBAベーシックの資格取得がてら基本情報の午後問対策にしようと思ってるんですけど出題範囲とかレベル感的に同じくらいですかね?



930 名前:デフォルトの名無しさん [2018/11/07(水) 10:26:42.01 ID:d5oBs1zX.net]
VBAの資格って新しくできたのか?

931 名前:デフォルトの名無しさん mailto:sage [2018/11/07(水) 10:35:52.33 ID:XvVrOgoe.net]
>>886
ネットワークにつながったPCの名前に「\\」を付けるとアクセスできる
officetanaka.net/other/extra/tips15.htm

932 名前:デフォルトの名無しさん mailto:sage [2018/11/07(水) 10:44:51.43 ID:t8cEHMAy.net]
>>891
\\端末a:\Users\Admin\Desktopみたいな感じですね、ありがとうございます

ちなみにこれは端末aでも端末a以外でもこの書き方一つで参照出来るんでしょうか

933 名前:デフォルトの名無しさん mailto:sage [2018/11/07(水) 10:53:48.53 ID:XvVrOgoe.net]
>>892
端末aのフォルダを共有設定にしておかないとアクセスできない
共有になってれば、どのPCでもアクセスできる
エクスプローラーで共有フォルダを開いて、アドレスバーをコピペしてみると書き方が分かる

934 名前:875 [2018/11/07(水) 11:49:07.56 ID:4XVkNdGZn]
シート間の切り替えで我慢が揺れるんですが、防ぐ方法は有りますか?
1行丸々コピーはデータが重いんでしょうか?

935 名前:デフォルトの名無しさん mailto:sage [2018/11/07(水) 11:32:15.04 ID:nZWGaJPv.net]
会社なのに共有フォルダはないの?

936 名前:デフォルトの名無しさん mailto:sage [2018/11/07(水) 11:34:31.05 ID:+HyKX3eQ.net]
>>889
基本情報はJavaやCできない文系カスならExcel選べばいいでしょ
ワークシート関数を使いこなせれば十分で、VBAなんか全く要らん

937 名前:875 [2018/11/07(水) 20:36:23.84 ID:TW51zyDp.net]
マクロ起動でシートの切り変わりで画面がブレるというか、もう少しスムーズに動いて欲しいと感じます。
1行まるごとコピーしているので重いのでしょうか?

938 名前:デフォルトの名無しさん mailto:sage [2018/11/07(水) 22:08:04.86 ID:Qojc5OuV.net]
配列に入れるとか?
dim a
a = sheet1.Range("コピーしたい範囲")
sheet2.Range("sheet1と同じ大きさ") = a
シート切り替える必要あんの?

939 名前:デフォルトの名無しさん [2018/11/07(水) 23:56:50.98 ID:kdSj6Mns.net]
text.txtの中身
1,"my name is taro"
2,""hello,world""
3,"hello,world"

これをエクセルに変換して期待値は以下としたい
どうしたらいい?

A B
1 my name is taro
2 "hello,world"
3 hello,world



940 名前:デフォルトの名無しさん mailto:sage [2018/11/07(水) 23:58:12.32 ID:Z9bNZaPm.net]
拡張子を.csvに変えてダブルクリックしてみよう
あら不思議!

941 名前:デフォルトの名無しさん [2018/11/08(木) 00:00:20.32 ID:+1CERcyT.net]
ちなみに拡張子をcsvにすると以下のような変な出力になる。

A B C
1 my name is taro
2 hello world""
3 hello,world

942 名前:デフォルトの名無しさん [2018/11/08(木) 00:02:21.00 ID:M68F6j6d.net]
"が一個足りない
csvで"をインポートするには
"を""にして
"でくくらないといけない

943 名前:デフォルトの名無しさん [2018/11/08(木) 00:10:13.02 ID:+1CERcyT.net]
手順としては以下でよいか?
1. test.txtの中身を置換で「""」にマッチする箇所を「"""」として保存する
2. 拡張子をcsvにする。

期待値になったのでよしとする。
さらに一歩質問いいですか?

944 名前:デフォルトの名無しさん [2018/11/08(木) 00:19:54.15 ID:+1CERcyT.net]
test.txtの中身
1,"my name
is taro"
2,"""hello,world"""
3,"hello,world"

これをエクセルにして期待値として以下としたい

A B
1 (※)
2 "hello,world"
3 hello,world

B1セル内に
my name
is taro
が格納され、適切に改行が入っていることを期待。

が、csvにしたら、ちゃんと期待値になってた。。
んー、、途中で改行が入るケースではまってた記憶があったんだが、、、、。これでよしとするか。。

945 名前:デフォルトの名無しさん [2018/11/08(木) 00:35:58.02 ID:+1CERcyT.net]
ああ、思い出した

"がつかないケースで、改行が入っている場合

test.txtの中身
1,my name
is taro

エクセルにして期待値として以下としたい

A B
1 (※)

(※)
B1セル内に
my name
is taro
が格納され、適切に改行が入っていることを期待。

拡張子をcsvに置き換える前に、"で囲むようにすればいいが、置換でなんとかならないものか。

946 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 01:33:19.87 ID:QHwNiY6E.net]
ExcelのCSV読み込みでセル内改行がある場合

d.hatena.ne.jp/stealthinu/20170127/p1

947 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 07:54:15.59 ID:u+iZKjOm.net]
なんかもう最初のカンマまでの文字数だけ切り取るほうがシンプルなんじゃ

948 名前:デフォルトの名無しさん [2018/11/08(木) 11:52:01.74 ID:rWQT8E4I.net]
excelの3Dグラフで陰線処理ってできますか?

949 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 12:05:03.88 ID:Yck2Cb0Y.net]
陰毛処理?



950 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 14:33:21.43 ID:3qqw0Iqx.net]
>>898
それのどこに配列が絡んでるんですかね?

951 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 14:42:53.05 ID:rBrrwKGn.net]
>>908
昔方法探したけどできなかった


陰線処理ってエロくないのにちょっとエロく思える単語だよな

952 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 15:12:21.75 ID:BZZI+ZYR.net]
質問する奴も答える奴も論外で草
質問する奴はそういうスレだからともかく
答える奴が池沼なのはもう少し何とかならないか?
VBAだから無理か

953 名前:デフォルトの名無しさん [2018/11/08(木) 19:19:19.39 ID:j6Jh7/pK.net]
なんやプロさん同士で内紛勃発か?w

954 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 20:27:13.91 ID:hKKyRwQm.net]
>>910
えっ?
絡んで無いと思ってる?
今となっては初心者でも使う手法だと思うんだが。

それとも何か勘違いしてるのは俺か?

955 名前:デフォルトの名無しさん [2018/11/08(木) 20:30:22.05 ID:j6Jh7/pK.net]
>>914
おまえだけやプロさんw

956 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 20:41:38.00 ID:vlGhAqs/.net]
>>910
変数代入のときにSetステートメント使ってないから、変数にはセル値の配列が入ってるぞ

957 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 22:36:31.77 ID:I6vRTJnd.net]
>>873,>>874
SQLServer側でセルの権限管理???
プロ??

958 名前:デフォルトの名無しさん [2018/11/08(木) 22:38:08.36 ID:j6Jh7/pK.net]
プロさんにつっこんだらあかんやろ
暗黙のルールぐらい守れやカス

959 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 22:43:10.26 ID:I6vRTJnd.net]
そんなことより、XMLクライアントとしてのExcelを語ろうぜ



960 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 23:06:03.49 ID:g1taMrfK.net]
>>917
セルの権限管理なんぞサーバーから見たら何の意味もないよ

961 名前:デフォルトの名無しさん [2018/11/09(金) 10:17:43.12 ID:46H7vVxk.net]
sagawa-oki.com/
ここにアクセスしたら不審サイトであると警告が出ました。
PCに詳しい人、これどういうしくみなんですか?
オレのPCは感染したのですか?

962 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 10:21:06.82 ID:mRKVO+Jg.net]
yes

963 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 10:42:48.08 ID:jWmpQO7/.net]
>>921
もう手遅れですね
アマギフ送ってくれたら直してあげられるよ

964 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 14:25:59.43 ID:xyt0IPos.net]
>>919
これ興味あるんだよな
使いやすい?

965 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 22:13:18.94 ID:GmFPY+rV.net]
プロに聞いてみようぜ

966 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 22:36:34.07 ID:dt2W+h7o.net]
デザイナーが描くような美しいUMLのシェイプを生成するDSLライブラリはありませんか?
PlantUMLのエクセルバージョンのようなものを探してます

967 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 13:47:50.89 ID:g7tZUN2t.net]
データの持ち方はシンプルな方がいい
そうでないなら条件を明確に

968 名前:デフォルトの名無しさん [2018/11/12(月) 08:23:59.02 ID:emJ6rSNr.net]
901だが、
さらにおしえてほしい
textに

"please call a "phone"."

と書かれているケースがあり、これをcsvとして読みこませる前に
表記が崩れないように整形を加える。

最終的に1セル内に
please call a "phone".
が入っていればよいです。

上記を実現するための整形の流れとしてどうしたらいい?
整形後は、phoneの間に"をさらに追加する。端っこの"には手を加えない。
"please call a ""phone""."

手作業ではなく、置換で自動化したい

969 名前:デフォルトの名無しさん mailto:sage [2018/11/12(月) 09:22:19.42 ID:CGIJA+ER.net]
そういうのはCSVとして読み込むんじゃなくて、自前で構文解析した方が良い。
この程度なら難しく無いでしょ。



970 名前:デフォルトの名無しさん mailto:sage [2018/11/12(月) 09:52:07.52 ID:zyHWT4B/.net]
>>928
正規表現置換の使えるエディタで
検索パターン
([^\,\"]+?)\"{1}([^\,\"]+?)
置換後
\1\"\"\"\2
などとすれば一応行ける

971 名前:デフォルトの名無しさん mailto:sage [2018/11/12(月) 09:53:55.26 ID:zyHWT4B/.net]
訂正
置換後
\1\"\"\2
だな、1個多かった

972 名前:デフォルトの名無しさん mailto:sage [2018/11/12(月) 21:39:04.12 ID:OsYv7RWH.net]
全く無知な自分にご教授下さい。
マクロでフォルダ内のエクセルのシート1をすべて結合するマクロを探しています。
ネットに転がってるのを実行してもうまくいかないです。
できればですが、シート名は統一していないないので、ブックないのシートのRange(A1)が日付だったシートのみを結合とか高度すぎて無理でしょうか。

973 名前:デフォルトの名無しさん mailto:sage [2018/11/12(月) 21:42:09.58 ID:dMWbNPXa.net]
>>932
私には可能ですし特に高度とも思いませんが、貴方にできるかどうかは知りません
少なくとも今目の前の問題を片付けたいだけであれば、諦めて手作業したほうが貴方にとっては早いでしょう

974 名前:デフォルトの名無しさん mailto:sage [2018/11/12(月) 21:54:32.66 ID:JxfhNlMu.net]
ネットに転がってるのがあってもできないなら回答しても意味なくね?
ファイル名が統一されてないからうまく行かないんなら、フリーソフト拾ってきて一括リネームしたら済む話かもしれない
何を試みて何かどううまく行かなかったのか、真に目的を達成するには何がどうなっていればいいのか
それくらいは頭を整理して明記しなさい
何がわからないのか何がしたいのか自分でわからないけど親切に要件をヒアリングして代わりに作ってほしい、ならそこらへんのSIerに相談しなさい

975 名前:デフォルトの名無しさん [2018/11/12(月) 22:03:30.98 ID:XDhm+jvj.net]
>>933
バカはお口にチャックな

976 名前:デフォルトの名無しさん mailto:sage [2018/11/12(月) 22:13:45.72 ID:MyIa17Oe.net]
Dir
sheet(1)
IsDate
この辺りで調べてみればそこまで難易度は高くないと思う

977 名前:デフォルトの名無しさん mailto:sage [2018/11/12(月) 22:18:58.14 ID:OsYv7RWH.net]
>>933
なるほど。難しいって事ですね。
>>936
sheet(1)だと中にはsheet(2)にデータがある場合があるんです。
なのでシートのA1が日付の時だけコピーとかしたかったのです。

978 名前:デフォルトの名無しさん mailto:sage [2018/11/12(月) 22:36:44.04 ID:zyHWT4B/.net]
for each ws in Worksheetsとif文が使えればできるよ

979 名前:デフォルトの名無しさん [2018/11/13(火) 00:16:47.48 ID:6PLLlNb2.net]
>>930
試したけど、grepにひっかからず。



980 名前:デフォルトの名無しさん [2018/11/13(火) 00:18:49.38 ID:6PLLlNb2.net]
936ですが、
原因が分かりました。
([^\,\"]+?)\"{1}([^\,\"]+?)の後の半角スペースが入っていたので引っ掛からなかった。
半角スペース覗いたらできました。

981 名前:デフォルトの名無しさん mailto:sage [2018/11/13(火) 03:19:44.71 ID:gWmuHRek.net]
>>928
1"2"3"4"5

これが君には、"24"、"3" の2つに見えるけど、
普通の人は、"2"、"4" の2つに見える

つまり、"3" がネスト・内側だとは判別できない。
内側を表すには、確実に、外側と区別できる方法が必要

例えば、""3"" のように、" が2個続いたら内側と解釈するとか、何らかの方法が必要だけど、
他に解釈されないような、特別な記号を作るのは難しい

982 名前:927 mailto:sage [2018/11/13(火) 07:16:41.37 ID:xWZc78Mp.net]
>>940
半角スペースはそちらでの混入かと

983 名前:デフォルトの名無しさん [2018/11/13(火) 21:19:22.76 ID:8adn94NA.net]
>>940
Excel vba にも正規表現による置換機能あるよね?その検索パターン、置換する文字列をそのまま使えるのか?

984 名前:デフォルトの名無しさん [2018/11/13(火) 21:22:12.20 ID:Vxu3kwrv.net]
>>941
長い、3文字で

985 名前:デフォルトの名無しさん [2018/11/14(水) 00:32:01.09 ID:cWkoLxip.net]
こんばんは。質問させてください。

VBAでXMLファイルを作成したいのですが、MSXML2というパーサ(?)を使わないといけないのですか?
Printなどを用いてテキストファイルを作成し、拡張子を.xmlに変更して作成した場合、何か問題があるのでしょうか

XMLファイルはただのテキストファイルだという認識だったのですが、「VBA XML 作成」などと検索すると
ほぼ全てのサイトでMSXML2を用いた方法が紹介されているので混乱しています

よろしくお願い致します

986 名前:デフォルトの名無しさん mailto:sage [2018/11/14(水) 02:04:23.47 ID:otO/yyOk.net]
Ruby, Python, JavaScript など、すべての言語・コマンドでも、そう。
HTML, XML, JSON などは、それ用のライブラリを使う

勝手に作ったファイルは、パーサーで解析すると、
間違った形式・フォーマットで作られている、正しい形式ではない、という形式違反になる

正しい形式かどうかを、チェックするツールもある

987 名前:デフォルトの名無しさん mailto:sag []
[ここ壊れてます]

988 名前:e mailto:2018/11/14(水) 03:54:10.85 ID:KIwP1nqR.net [ 以前DOMについて質問させて頂いたものです。
前回はIEを直接開いて扱っていたのですが、
MSXMLという機能でIEを開かずにウェブサイトの情報を取得できると知り、
そちらの方が速そうだし面白そうなので挑戦しています。
そこで色々調べていたのですが、

http://d.hatena.ne.jp/end0tknr/20081115/1226755041

というブログに「MSXML2.DOMDocumentでxml responseをparseすることができます。」とあり、

Dim HttpReq As MSXML2.XMLHTTP
Dim DomDoc As MSXML2.DOMDocument
・・・
DomDoc.loadXML (HttpReq.responseText)

というコードが記述されていますが、ローカルウインドウを見るとXMLHTTP(XMLHTTP60)にresponseXMLというそれらしいプロパティがあります。
直接これをDOMとして扱うのは出来ないのでしょうか。 ]
[ここ壊れてます]

989 名前:デフォルトの名無しさん mailto:sage [2018/11/14(水) 06:47:08.50 ID:F2hyLHDL.net]
>>945
> MSXML2というパーサ(?)を使わないといけないのですか?
別にMSXML2なんて単なるライブラリだから使わなくてもいいよ
ただXMLにきちんと対応するのは面倒だからみんな使ってるだけ



990 名前:デフォルトの名無しさん mailto:sage [2018/11/14(水) 08:00:52.88 ID:cWkoLxip.net]
>>946
>>948
ありがとうございます
大変勉強になりました

991 名前:デフォルトの名無しさん mailto:sage [2018/11/14(水) 09:35:48.86 ID:JBsUV7Ak.net]
>>943
VBAでの後方参照(\1や\2のような)はExecuteメソッドが要る、
grepやpowershellみたいに簡潔にならんけどできないことはない

Set Matches = RE.Execute(対象文字列)
For Each Match In Matches
Match.submatch(0) & """""" & match.submatch(1)
Next Match

992 名前:デフォルトの名無しさん mailto:sage [2018/11/14(水) 21:48:32.31 ID:X5SCw3Kf.net]
入力規則のリストでリストのいずれかを選択した時に
アクションを起こしたいのですが、方法はあるのでしょうか。
selection changeでは無理でした。

993 名前:デフォルトの名無しさん mailto:sage [2018/11/14(水) 23:16:38.95 ID:Z7uIM71c.net]
>>951
普通のWorksheet_Changeイベントを使う

994 名前:デフォルトの名無しさん mailto:sage [2018/11/15(木) 01:04:33.76 ID:pL2ZxAKh.net]
>>952
出来ました!
こんなに簡単なことを見落としていたなんて情けない・・・
ありがとうございました。

995 名前:デフォルトの名無しさん mailto:sage [2018/11/15(木) 22:05:17.67 ID:xj1JjGGB.net]
上場企業ってポリシーでマクロとか止められてない?

996 名前:デフォルトの名無しさん mailto:sage [2018/11/15(木) 22:08:32.25 ID:60AqZ+Uz.net]
各部署向けのマクロを色々作ってたけど
そんなの企業次第だろ

997 名前:デフォルトの名無しさん mailto:sage [2018/11/15(木) 22:14:10.97 ID:Q+Sfzbdk.net]
うちは個人での業務効率化が目的なら黙認されるのが実情だな
部署での正式な業務ツールとしてのマクロは情シス部で仕様として管理される事になるし、個人での作成も配布も禁止されてる

998 名前:デフォルトの名無しさん [2018/11/15(木) 23:27:40.32 ID:sS26qanx.net]
ザルにもほどがあるやろw黙認とか一番あかんやつやんけw

999 名前:デフォルトの名無しさん mailto:sage [2018/11/15(木) 23:59:31.43 ID:lTdn/5mU.net]
マクロは申請が必要で保存場所は限定だわ



1000 名前:デフォルトの名無しさん mailto:sage [2018/11/16(金) 04:45:29.00 ID:1oL4uemZ.net]
以前は自由だったのが、誰かがミスするたびに禁止になって、今はほとんど何もできなくなった

1001 名前:デフォルトの名無しさん mailto:sage [2018/11/16(金) 07:12:21.93 ID:B19KzSp6.net]
情シス部にいるとマクロ作り放題(影響及ぼす範囲によるが)

1002 名前:デフォルトの名無しさん mailto:sage [2018/11/16(金) 09:34:05.81 ID:iyDekcJ2.net]
それで競争になるのか人事ながら心配
禁止なのはOfficeマクロだけってなら分かるけどさ

1003 名前:927 mailto:sage [2018/11/16(金) 09:43:44.02 ID:fQoG7lNZ.net]
セキュリテイ問題はVBAだけじゃない、今流行りのRPAだってハック悪用されちゃえば、情報流出し放題になる危険はある。
ただ情シスでVBAし放題って、仕事としては辛いなあ、VBAが好きならいいけど

1004 名前:デフォルトの名無しさん mailto:sage [2018/11/16(金) 11:24:37.60 ID:iyDekcJ2.net]
情報流出のリスクって観点だったら自分の手元の端末でプログラミングする/しないなんてあんまり関係ないよなあ。
セキュリティ担当大臣のリテラシーがあれじゃ何言っても無駄かw

1005 名前:デフォルトの名無しさん mailto:sage [2018/11/16(金) 13:07:59.03 ID:+iwVt0B0.net]
うちの場合、初期導入済みのソフト・プログラム以外追加インストール禁止、
プログラムの自作禁止、バッチファイル等のスクリプトも自作禁止、
その他電算担当が意図しないものは禁止、
ただしExcel・Wordのマクロはプログラム外とおかしなやりとりさえしなければ自作可、だから、
お目こぼしいただいているといえばそうかも試練。

1006 名前:デフォルトの名無しさん [2018/11/16(金) 20:12:20.13 ID:HodhQ/sE.net]
>>963
おまえも大差ないけんどねw

1007 名前:デフォルトの名無しさん mailto:sage [2018/11/17(土) 12:59:10.62 ID:rrttmrGF.net]
htmlでも作れるよ

1008 名前:デフォルトの名無しさん mailto:sage [2018/11/17(土) 16:28:27.01 ID:avlCLAGR.net]
禁止いうても、コンペアツールや自動入力ツールの類を自作してこっそりローカルで使ってる人はいるわな。
個人で作成したマクロなんてそう大勢に普及させるもんでもないし。

1009 名前:デフォルトの名無しさん mailto:sage [2018/11/17(土) 19:32:22.12 ID:afjAxwZo.net]
>>964と同じような環境でパソコン操作ログも全て取られている。けどマクロは作り放題でこの会社どうかしてるなあと思う
管理できる範囲で使うようには心がけてる程度



1010 名前:デフォルトの名無しさん mailto:sage [2018/11/17(土) 23:34:31.53 ID:kPyd3h/H.net]
すみません初心者です。
次のブログで紹介されているVBAを応用したいのですが、
ご助言をお願いしたく。
https://www.excel-prog.com/entry/outlook-mailitem2

現状は
「キーワードが含まれるファイルが見つからない場合は、ファイル添付しない」
という処理なのですが、
「キーワードが含まれるファイルが見つからない場合は、下書きを作成しない」
という処理に変更できないでしょうか。

1011 名前:デフォルトの名無しさん [2018/11/17(土) 23:37:15.00 ID:eQWBxdMf.net]
>>969
質問以前の問題やけど言葉を途中できるな、失礼やぞ
「助言をお願いします」と言うもんや

1012 名前:デフォルトの名無しさん mailto:sage [2018/11/17(土) 23:39:40.85 ID:rc62Vrp5.net]
>>969
自分で勉強する気がないならRPAを買おう

1013 名前:デフォルトの名無しさん mailto:sage [2018/11/17(土) 23:48:28.07 ID:Q6MHNsVE.net]
Windowsにも色々なコマンドラインツールが標準で付属してくるから
たいていのことは追加ソフトなしでできちゃうんだよな

1014 名前:デフォルトの名無しさん [2018/11/18(日) 00:19:50.58 ID:RRVp+pUX.net]
なんや、わいは>>969の言葉使いのバカさを諫めただけで質問の内容は否定しとらんで
わかる奴答えてやれや

1015 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 00:50:35.06 ID:WoNYW9mY.net]
>>969
下書きを作成しないというか、要するにメールを書き起こさないようにすればいいわけだよな
ならば、メール作成箇所の前に一行


If SearchFile(フォルダパス,Keyword)="" Then Exit Sub


等と追加して、SearchFile関数の戻り値が空文字列ならメール作成しない処理にすれば良い

ただし、エクセルファイル以外のファイルの存在確認をするならSearchFile関数の修正が必要だし、パス長が255文字を越えるフォルダやファイルを検索する場合はFileSystemObjectを使ったりしなきゃならない

1016 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 07:35:49.85 ID:ZUPq3iVE.net]
>>972
powershellとbashのこと?

1017 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 08:50:18.78 ID:fvzyxXyq.net]
>>970
そんなコマケーことが気になるなら匿名掲示板なんて見るなよ、馬鹿じゃねーの?

1018 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 09:39:49.09 ID:xm+TdzEk.net]
>>975
Vista以降はコマンドライン版のC#コンパイラが標準で入ってるから、理論上はなんでも作れる
開発環境がないから手間はかかるけど

1019 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 09:44:41.41 ID:31bgLNRt.net]
コマンドライン版でないC#コンパイラなんて存在しませんw



1020 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 10:02:01.46 ID:1SW2m7ab.net]
流れを無視して急に知識自慢始めちゃうやつ
今の話題はアプリの追加インストールが禁止された環境で何が出来るか

1021 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 10:52:24.32 ID:agYaFy5y.net]
C#のコンパイラはVista以降なら追加インストール必要ないぞ

1022 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 11:13:46.24 ID:PoFSPoaK.net]
C#は標準で使えるけどまともなエディタが無い
少なくともVSCodeは必須と言っていい
それと最新の言語バージョンにあげたいからSDKも合わせてインストールしたいね
本家Visual Studioは要らないけどプレインストールだけで戦えるほど簡単でもない
でもVBE+VBAと比べるとC# 5+メモ帳でもまあいっかーこっちのほうがまだマシかもなーという気持ちになることは認める

1023 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 11:14:53.56 ID:Nq43WKFY.net]
>>980 3つ上に書いてある

1024 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 11:20:20.73 ID:SwY+rtAE.net]
>>978
アスペ乙

1025 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 11:24:42.28 ID:SwY+rtAE.net]
>>982
書いてあるのに>>979みたいなこと言うやつがいるって話だろ

1026 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 11:59:22.66 ID:ve9l0Wxi.net]
>>981
Visual Studio Codeはまともじゃないと?

1027 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 12:08:47.18 ID:PoFSPoaK.net]
>>985
??
あれはいいエディタだよ

1028 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 12:15:47.10 ID:31bgLNRt.net]
VSCodeなんかフリーソフトのインストールに許可が要る会社で使うのは不可能だろ
C#の開発環境を整えようとしようものなら数百個のオープンソースライブラリが勝手に入ってくるから、
全部申請出して情シスにレビューさせたら何年かかることか

1029 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 12:23:37.60 ID:ve9l0Wxi.net]
>>986
ああ日本語の問題ね



1030 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 12:31:26.14 ID:PoFSPoaK.net]
>>987
そんな厳しいチェックしてる企業は実際にはないよ
Microsoftが出してるツールならMicrosoftを信用してMicrosoftが採用したオプソの依存関係も信用する
これぐらいのバランス感覚が普通じゃないかな

1031 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 12:35:06.02 ID:zyj02y5w.net]
984じゃないけど、そら世間知らず過ぎだわ
どんだけセキュリティ弱い企業なのよ、うちだってまず無理だわ

だからこんな糞言語使ってるってのに

1032 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 12:45:51.12 ID:PoFSPoaK.net]
いやいや
膨大な数のオプソのセキュリティをレビューできる専門家を何人も囲える企業ばかりじゃないだろ
囲える力があったとしてもそんな貴重な人材をツール申請のレビューアーとして使い潰す企業があったとしたらただのマヌケだわ

1033 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 12:47:52.42 ID:VUJKeY9L.net]
Windowsのアプデで.NETライブラリを更新することにすら神経尖らす企業もいるし、VSCode使用は一般化できんね

1034 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 12:50:32.45 ID:PoFSPoaK.net]
だから殆どの企業は判断基準として発行元はどこなのかということぐらいしかチェックしない
現実的に考えると企業としての信用で判断するしかないんだよ
そしてソースコードではなく信用で判断するなら信用した企業が信用した企業も再帰的に信用したって構わないだろ

1035 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 12:54:35.35 ID:XN88gtNz.net]
前職は某外資Iのグループ会社にいたけど、Globalのルールだと
業務で使用するオープンソースライブラリは許可済みのもの(レビュー済の特定のバージョンに限る)以外は全てレビュー必須だったぞ
厳密に適用するとVSやVSCodeのパッケージマネージャで入ってくるような膨大な数のOSSライブラリは全てレビューが必要
まあ誰も守ってなかったがw

1036 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 12:55:34.27 ID:PoFSPoaK.net]
>>992
それは違う理由で神経尖らせてるだけ
日本企業で.NETと言ったらVB.NETが代名詞になる
VBコミュニティのレベルの低さは底なしだ
彼らがVB.NETで作った業務システム(主にデスクトップアプリ)ってものすごく簡単に壊れるんだよ
OSやフレームワークの更新なんてしたらどうなるか分かったものじゃない
だから慎重になるの
オープンソースのセキュリティについて慎重になるのとはベクトルが違う

1037 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 12:59:43.99 ID:XN88gtNz.net]
>>995
委託開発なら当たり前でしょ
だってライセンス許諾の主体は開発側ではなくユーザーなんだから、
使用しているライブラリをユーザーに把握させユーザー自身で許諾させることは法的に当然必要なプロセスだ
ちなみに991は自社利用するときの話な

1038 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 13:05:16.34 ID:PoFSPoaK.net]
>>994
ソース全チェックなんて現実的なアイデアじゃないからたちまち形骸化するよね
信用のおける企業が発行あるいは採用してる、世界規模で採用実績が十分に多い、信用のおける団体が認証している、といった基準で判断しないとITビジネスのスピードに追いつけない

1039 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 13:25:25.99 ID:fvzyxXyq.net]
ソースなんてチェックできるわけないわな
やってもライセンス条項のチェックが精一杯だと思う



1040 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 13:56:30.51 ID:mxtYTXok.net]
たまたまオープンソースで読めるからって
急にチェックし始めるのは良くわからんな

1041 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 14:02:39.60 ID:t5VFkoMH.net]
>>999
読めるかどうかじゃなくて責任の所在の問題だ
オープンソースのほとんどは自己責任だから、使って重大な損害が生じたときに賠償請求できない
ライセンスについても「あくまで俺の書いたコードについてのライセンスであり、依存してる他のライブラリは知らん」が普通だし

1042 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 14:12:20.41 ID:mxtYTXok.net]
自己責任なのはオプソに限らずフリーウェアのほぼ全てじゃない
jreやflashなんてどうやって検証してるのさ

1043 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 14:38:30.24 ID:PoFSPoaK.net]
オープンソースって有名なものは大企業や財団が管理・支援してるからな
ソースを全部チェックしなきゃインストールしちゃだめなどと素っ頓狂なことを言い出す企業のあって無いようなセキュリティ意識よりよっぽど安心

1044 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 14:43:42.16 ID:M6SP58jh.net]
>>993
逆。
だからチェックせずに禁止する所が多い。

1045 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 68日 17時間 1分 3秒

1046 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






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

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

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