Excel VBA 質問スレ Part57at TECH
Excel VBA 質問スレ Part57 - 暇つぶし2ch356:デフォルトの名無しさん
18/09/24 18:28:34.71 sPlVwsRd.net
>>338
どの言語でも簡単にできる上にそういうツールって今はいくらでもあるんでVBAでやる理由としてはちょっち弱いですね
これはエクセル開いた状態のVBAじゃないと絶対無理だっていう事例を知りたいです

357:デフォルトの名無しさん
18/09/24 18:32:02.32 qkXKwQlD.net
>>342
頭大丈夫か?

358:デフォルトの名無しさん
18/09/24 18:44:10.41 e4NBE4Fp.net
>>343
バーカ。
何でブックで保存するんだ?
そのファイルは結局どうするんだ?
Excelで開くんだよ。
何の為にそんなことするんだ?
業務では開いた上で人間が何らかの判断をする為だ。
そうじゃ無かったらExcelは必要ないし、人間が開く必要も無いし、ファイルもバイナリで良い筈なんだ。
開いた上で動作するものばかりである必要は無いが開いた上で作業するのが基本なんだからプログラムも開いた上で動作するのがメインなのは当たり前だろう。

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

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

361:デフォルトの名無しさん
18/09/24 18:50:03.06 e4NBE4Fp.net
絶対に無理とかいい出したら、PC使わないと絶対無理な事例自体無くなってくるぞ。
紙とエンピツでOKという話になる。

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

363:デフォルトの名無しさん
18/09/24 18:52:11.10 sPlVwsRd.net
主張が支離滅裂で理解できません
エクセルを開いたままVBAを使うメリットを納得させる決定的な事例を聞いてるのですが
そのような事例は存在しないのですか?

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

365:デフォルトの名無しさん
18/09/24 18:53:11.09 e4NBE4Fp.net
>>350
既に説明済みだが。

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

367:デフォルトの名無しさん
18/09/24 18:55:55.65 e4NBE4Fp.net
そもそも


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



369:デフォルトの名無しさん
18/09/24 18:56:13.26 e4NBE4Fp.net
>>353
既に説明済み。

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

371:デフォルトの名無しさん
18/09/24 19:00:43.65 NcXWYl5J.net
>>342
思わない
エクセル以外の処理をvbaで色々やるのが間違ってるんだよ
C#にでもまとめて、コマンドプロンプトで処理すればいい
もう文字コードだのお節介機能で自動変換だの疲れた
ってか、”1-1-1”を普通に取り込めないとかもうウンコofウンコすぎてしんどい

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

373:デフォルトの名無しさん
18/09/24 19:05:58.04 e4NBE4Fp.net
>>358
自然w
頭の悪さが滲み出てるわw
よくそんなこっぱずかしいことが言えるな。
Excelのブックは開いた状態で作業するのが「自然」なんだからお前の主張に則ればVBAが一番有利という結論だな。

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

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

376:デフォルトの名無しさん
18/09/24 19:11:39.15 GrunNCaI.net
>>358
使うのに必要なスキルが極めて少ない

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

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

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

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

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

382:デフォルトの名無しさん
18/09/24 20:15:16.80 Z99vN/yN.net
>>366

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

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

385:デフォルトの名無しさん
18/09/24 20:25:47.99 3gV95ADu.net
>>337
気にしてもハゲるだけなんじゃねーの
>>364
閉じた業務系でVBAと肉入り以外の選択肢を潰されてやむを得ずVBA触った俺みたいな変人もいるし、
まぁその手の固定観念でもあるか、あるいは構ってちゃんなだけじゃねーの

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

387:デフォルトの名無しさん
18/09/24 20:27:41.54 vr3+WUA5


388:.net



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

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

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

392:デフォルトの名無しさん
18/09/24 21:28:35.65 Hov49HPU.net
くだらない言い合いでスレ伸びまくりで草

393:デフォルトの名無しさん
18/09/24 21:48:48.21 GrunNCaI.net
エクセルVBAは(ユーザーの)エクセルの操作を支援する場面において無類の力を発揮する。
しかしちょっと込み入った処理をしようとすると近代的な言語で書きたくなることは確かにある。
そこで質問です。
エクセル上でボタンを押す
→VBAでイベントを受ける
→外部プログラムにSelectionを渡す
→Selection(Range)を元に処理を実行
→処理結果を二次元配列データでVBAで受け取る
→VBAでデータを加工する。
→ワークシートにデータを書き出す。
尚、本エクセルは共有フォルダ上において複数名が交代で使用する。
こういったことがしたい場合何で書いたらいい?C#?PowerShell?
既存のVBAも活かしたいので、全部C#とかに一新しろっていう回答は無しでお願い。

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

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

396:デフォルトの名無しさん
18/09/24 22:02:20.31 Z99vN/yN.net
>>378
> →Selection(Range)を元に処理を実行
> →処理結果を二次元配列データでVBAで受け取る
この2点からしてVBAで完結する案件
最初からRange→配列にして処理すればいいからね

397:デフォルトの名無しさん
18/09/24 22:19:41.01 GrunNCaI.net
>>380,381
シンプルに書きすぎた。
たとえばSelectionの中身がファイルのパスで、そのファイルが複雑なデータ形式(たとえばAutoCAD dwg)を外部プログラムで解読したいとする。
(VBAのクラス関連の機能がショボすぎて無理だったので、前にC#で書いたものがある)
これをVBAから呼び出して使いたいってこと。
諸事情によりエクセルブックと同じフォルダにps1なりdllを置く必要があって、これを呼び出せると助かる。

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


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

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

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

402:デフォルトの名無しさん
18/09/24 23:17:50.47 Z99vN/yN.net
>>3


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



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

405:デフォルトの名無しさん
18/09/24 23:46:24.03 GrunNCaI.net
>>387
そうだね。.NET系のDLLの関数を使いたい系。
COM登録せずに呼び出す方法あるのか。
参考URLとかもらえないだろうか。
>>388
メタ情報じゃないかなー図形情報の位置関係から特定の情報だけリストアップしてる。
まぁ例だからこれに限った話じゃないのだけど、VBAで書き直すのは無理ゲーすぎる。

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

407:デフォルトの名無しさん
18/09/25 18:07:06.26 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:デフォルトの名無しさん
18/09/25 18:25:16.89 Rh4u2+TF.net
>>386
プロフェッショナルなら可能

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

410:デフォルトの名無しさん
18/09/25 19:09:20.22 5hhJfzHj.net
>>389
まず、そのDLLはCOMなのか、通常の呼び出し用なのか、.NET用なのか
COMなら参照設定なりCreateObjectなりで
通常のDLLならDeclare Function(SUB)で呼び出せば良いだけ
.NETのDLLは.NET以外から呼び出すのは難しいので、素直にCOM公開する方が楽

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

411:デフォルトの名無しさん
18/09/25 19:09:27.10 HENVIdME.net
>>393
あーそうでした!お恥ずかしい
ありがとうございました

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

413:デフォルトの名無しさん
18/09/25 20:31:14.47 ObO6oAGo.net
>>396
どうやって取ろうとしている?

414:デフォルトの名無しさん
18/09/25 20:41:07.98 /T1GixS7


415:.net



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

417:デフォルトの名無しさん
18/09/26 01:13:21.41 6OKvzXmf.net
>>396
プロパイダ(ドライバ)によってはレコード件数返さん奴があったはず
一回プロパイダ変えて試してみ
最悪は更新と同じ条件のselect投げて件数取得してから更新かけれ

418:396
18/09/26 09:21:14.19 rrNz/9UY.net
397、396
コマンドオブジェクトから、以下のようにしてやっていました。
com.execute(re)
comはADODB.COMMANDで、updete文を設定してあり、更新自体はうまくいきます。
reはlong型の変数です。
マニュアルのとおり、コネクションでexecuteもやってみたのですが、結果は返らず…
400
Microsoft ACTIVEX data objects 6.1を使ってみているのですが、ほかのバージョンにしてもダメでした…
ADO接続を使用する上で、必要な参照が上記以外にあるのでしょうか…

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

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

420:デフォルトの名無しさん
18/09/26 17:05:59.73 cCj/GZBP.net
まず服を脱ぎます。

421:デフォルトの名無しさん
18/09/26 18:16:51.93 Dt06YZ+t.net
>>402
まずやりたい事を考えるといい。
最初は既存の関数の真似するプログラムでも書いて基本的な書き方を覚えるとかオススメ。
関数使えばチェックできるし。
慣れてきたら、百ます計算を作るでもいいし、ナンプレを作るでもいい。日常的にエクセルでやってる操作があるなら自動化してみるでもいい。
そのために必要なことはググれば全部出てくる。

422:デフォルトの名無しさん
18/09/26 18:45:15.00 OGb2Ur6B.net
以下二点留意すればあとはググりながら独学で大丈夫かと思います
・普通に日英両方でググっても出てこなかったら他のモダンな言語の出番だと察する癖をつける
・bufとかSub Sample1()とかobjFsoといった特徴的な表記をサンプルコードで多用しているサイトは悪いコードの見本市なので極力真似ないように今から気を付ける

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

424:デフォルトの名無しさん
18/09/26 19:12:58.42 SfBrsqof.net
>>401
12cならOracle.ManagedDataAccessがオススメ

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

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

427:デフォルトの名無しさん
18/09/26 23:16:47.85 4uP8tILz.net
>>409
それ、面白いと思って書いたの?

428:デフォルトの名無しさん
18/09/26 23:17:53.84 +un+mAjX.net
>>410
面白いと思ったの?w

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

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

431:デフォルトの名無しさん
18/09/26 23:48:40.23 4uP8tILz.net
>>413
滑ってるようにしか見えなかったから

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

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

434:デフォルトの名無しさん
18/09/27 12:17:06.67 UAsp+BRN.net
>>402
まず入門書かって読めばいいんじゃね

435:デフォルトの名無しさん
18/09/27 12:26:33.91 UAsp+BRN.net
勉強のやり方をを勉強しないと勉強できないとか

436:デフォルトの名無しさん
18/09/27 21:40:20.96 hL85+V3Z.net
URLリンク(i.imgur.com)
どうしても必要で困っています
どなたか詳しい方がいらっしゃったら作成をお願いします。

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

438:デフォルトの名無しさん
18/09/27 21:54:42.81 MgIWwOWH.net
>>419
サンプルデータあげてくれれば作るよ
そのファイルの上から30行くれ
まぁやることは
JAN & 有効期限 & ロット番号の作業列作ってピボットに突っ込むだけだけどな

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

440:デフォルトの名無しさん
18/09/27 21:56:35.93 hL85+V3Z.net
>>421
サンプルデータってどこにどうやってアップロードすればいいですか??

441:デフォルトの名無しさん
18/09/27 22:10:56.58 pq96CSzd.net
普通にデータソースをそのブックのシートにして
SQL書けばきっと簡単にできる
VBAなんか不要

442:デフォルトの名無しさん
18/09/27 22:19:36.54 MgIWwOWH.net
>>423
URLリンク(fast-uploader.com)
「ファイルを選択」
「アップロード開始」
これが出来ないなら流石に何もしない

443:デフォルトの名無しさん
18/09/27 22:21:31.13 hL85+V3Z.net
>>425
URLリンク(fast-uploader.com)

444:デフォルトの名無しさん
18/09/27 22:22:48.42 hL85+V3Z.net
>>425
ありがとうございます。
426のコメントでアップロードしています。
ご確認ください(^-^)

445:デフォルトの名無しさん
18/09/27 22:30:26.82 pq96CSzd.net
URLリンク(i.imgur.com)
sheet1
URLリンク(i.imgur.com)
sheet2
※ sheet2にsheet1の結果を抽出
↓この抽出結果
SELECT min(`Sheet1$`.aho) , sum(`Sheet1$`.baka) , min(`Sheet1$`.じゃま)
FROM `himistu\baka.xlsx`.`Sheet1$` `Sheet1$`
group by `Sheet1$`.aho

446:デフォルトの名無しさん
18/09/27 22:48:24.69 pq96CSzd.net
URLリンク(fast-uploader.com)
完成

447:デフォルトの名無しさん
18/09/27 22:54:14.35 MgIWwOWH.net
>>429
間違ってない?
ユーロジンが一つになっている

448:デフォルトの名無しさん
18/09/27 23:00:45.54 hL85+V3Z.net
>>429
早速の作成ありがとうございます。
私の伝え方が不十分だったかも知れませんが、430のコメントの通りです。
お時間があれば修正していただけると助かります。

449:デフォルトの名無しさん
18/09/27 23:03:47.01 pq96CSzd.net
URLリンク(fast-uploader.com)
よしなおした

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

451:デフォルトの名無しさん
18/09/27 23:09:53.34 MgIWwOWH.net
あら負けた
URLリンク(fast-uploader.com)
ピボットで表みたいにするやり方がわからんかったわ

452:デフォルトの名無しさん
18/09/27 23:14:28.37 pq96CSzd.net
↓セパゾン錠2を100個追加
URLリンク(i.imgur.com)


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



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

455:デフォルトの名無しさん
18/09/27 23:43:17.54 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:デフォルトの名無しさん
18/09/27 23:56:33.07 MgIWwOWH.net
>>437
ありがとー!

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

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

459:デフォルトの名無しさん
18/09/28 04:54:48.92 7Dx3JKmZ.net
よくこんな馬鹿を相手にするな

460:デフォルトの名無しさん
18/09/28 07:18:03.33 3N0zeARs.net
以上、無能の自己紹介でした

461:デフォルトの名無しさん
18/09/28 09:03:04.35 zkBwEOAZ.net
なんちゃってマップはどうなった

462:デフォルトの名無しさん
18/09/28 18:29:54.42 AnMtzl3w.net
>>442
悔しいか、屑

463:デフォルトの名無しさん
18/09/28 19:43:53.67 3N0zeARs.net
>>444
おっ!
天才様の登場だ~~~www

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

465:デフォルトの名無しさん
18/09/28 21:26:48.63 mtesGZvP.net
天才様ドーナツ作って

466:デフォルトの名無しさん
18/09/28 23:16:32.45 AJk9wJBe.net
>>446
でもお前、VBAしか出来ないじゃん

467:デフォルトの名無しさん
18/09/29 16:35:28.06 V4hAUMop.net
>>432
Excel2010じゃ動かないんですかね

468:デフォルトの名無しさん
18/09/29 17:27:14.21 IuTgmxg/.net
1. サンプルデータ.xlsxをダウソ(>>426
2. aho.dqyをダウソ(URLリンク(fast-uploader.com)
3. aho.dqyをテキストエディタで開く
4. aho.dqyの【ひみつ】をサンプルデータ.xlsxがあるディレクトリフルパスに置換
5. aho.dqyをダブルクリック
コレでイケル
バカでもチョンでもイケル
>>432はExcel2010がダメなワケじゃない
知能が著しく低いヤツには動くようにはできない

469:デフォルトの名無しさん
18/09/29 20:04:17.86 m1u3SrFL.net
だが気をつけて欲しい
Jet 4.0 は64bit版には対応していない

470:デフォルトの名無しさん
18/09/29 20:04:56.48 UGjn5ihf.net
久々に覗いたらなんじゃこりゃ・・・質問した人、理解できてるのか? これ。
まぁ理解できるならSQLでもいいだろうけどさ。
>>440
開業医んとこか薬局んとこか分からないけど・・・まぁその、お疲れ様。
とりあえず分からないようなら他の解決策もあるのでその旨言ってね。

471:デフォルトの名無しさん
18/09/29 20:12:30.98 UGjn5ihf.net
>>440
ついでに。
>元の在庫管理データっぽいの



472:白lであった方が良い部分が文字列として入力されてる。問題なければそのままで良いけど。 それより、有効期限とロットNo.が空欄の薬剤があるけど大丈夫? たぶんデータの取り出し方の問題か何かだと思うけど。 >SQL 作ってくれた人には申し訳ないけど、JANコードじゃなくてYJコードで集計しちゃってるので一応注意。 まぁどっちでも大して変わらないんだけど。



473:デフォルトの名無しさん
18/09/29 23:48:20.58 IuTgmxg/.net
aho.dqyの抽出問合せを修正すれば(①~③の箇所を修正)すぐに修正できる
(修正前)
SELECT aho.YJコード, ①
  Sum(aho.前月末在庫数),
  Min(aho.前月末評価単価),
  Min(aho.薬品名),
  Min(aho.単位名),
  Min(aho.薬価),
  Min(aho.通常仕入れ先コード),
  Min(aho.発注点),
  Min(aho.JANコード), ②
  Min(aho.棚番1),
  Min(aho.棚番2),
  Min(aho.枝番),
  Min(aho.包装名称),
  aho.有効期限,
  aho.ロット番号
FROM
  `【ひみつ】\サンプルデータ.xlsx`.`Sheet1$` aho
GROUP BY
  aho.YJコード, ③
  aho.有効期限,
  aho.ロット番号

474:デフォルトの名無しさん
18/09/29 23:50:30.45 IuTgmxg/.net
 
(修正後)
SELECT Min(aho.YJコード), ①
  Sum(aho.前月末在庫数),
  Min(aho.前月末評価単価),
  Min(aho.薬品名),
  Min(aho.単位名),
  Min(aho.薬価),
  Min(aho.通常仕入れ先コード),
  Min(aho.発注点),
  aho.JANコード, ②
  Min(aho.棚番1),
  Min(aho.棚番2),
  Min(aho.枝番),
  Min(aho.包装名称),
  aho.有効期限,
  aho.ロット番号
FROM
  `【ひみつ】\サンプルデータ.xlsx`.`Sheet1$` aho
GROUP BY
  aho.JANコード, ③
  aho.有効期限,
  aho.ロット番号

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

475:デフォルトの名無しさん
18/09/30 00:00:43.46 TbDeVj+o.net
自分には理解できていても質問者が理解できているかは別

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

477:デフォルトの名無しさん
18/09/30 14:48:48.37 I0OjYnSY.net
>>451
Jetの後継でACE.OLEDBってのがある
64ビット版もある
問題は、32ビット版と64ビット版の共存ができないが

478:デフォルトの名無しさん
18/09/30 17:57:31.99 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:デフォルトの名無しさん
18/09/30 18:03:15.18 FLQTI8+6.net
SQL発行すれば何とかなると思う

480:デフォルトの名無しさん
18/09/30 18:16:07.23 hh5CI8rl.net
VBAなんか使わなくても普通にVLOOKUPで一瞬でできるな

481:デフォルトの名無しさん
18/09/30 23:25:01.00 BlMeh26g.net
それ、作ってもらったとして、自分でメンテできます?

482:デフォルトの名無しさん
18/09/30 23:39:46.62 ItvcYfS7.net
vlookupと作業列でいいんじゃねって思ってしまう

483:デフォルトの名無しさん
18/09/30 23:40:53.09 aYXyCrkn.net
ああ
オレなら余裕でサクッとできるわあ
キミラ低能にコレできる?
VLOOKUPでは行は1行しかとれない
少なくともコレではできない

484:デフォルトの名無しさん
18/09/30 23:47:05.68 ItvcYfS7.net
>>459
URLリンク(fast-uploader.com)
こんな


485:漢字でしょ テキトーに作ったけど多分もんだいはないと思う



486:デフォルトの名無しさん
18/09/30 23:49:34.63 ItvcYfS7.net
>>464
自己紹介好きだねぇ
君はエクセル覚えたての中学生かなんかだと思うけど、もう少し頑張れ
これぐらいなら見た瞬間に完成図が思い浮かぶよ
vbaにするまでも無い

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

488:デフォルトの名無しさん
18/10/01 00:00:41.84 zfKNS/F/.net
で、低学歴知恵遅れは
どこにVLOOKUP使ったの?
ん? いってみ?

489:デフォルトの名無しさん
18/10/01 06:39:47.60 MCBRDKcK.net
>>468
本気で言ってるのか?

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

491:デフォルトの名無しさん
18/10/01 08:05:44.31 K7Kh8NR/.net
>>470
すべて配列に突っ込んで、配列上で並べかえてから書き換え

492:デフォルトの名無しさん
18/10/01 08:06:55.02 PpuAKpxM.net
>>470
=A1=0
の列を追加してソート

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

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

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

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

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

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

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

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

501:デフォルトの名無しさん
18/10/01 19:04:58.48 Rpti6CxP.net
初心者だけど、仕事でどうしても必要で試行錯誤中なのだが…
例えばなんだけど
①IEを起動して指摘のURLに飛ぶ→②管理者ユーザーでログイン→
③ユーザー情報検索のページに飛ぶ→④プルダウンでユーザーの種別を選択→
⑤ユーザー名をフォームに転記→⑥検索ボタン押す→⑦ユーザーデータが表の形式で表示�


502:ウれ、ある行をラジオボタンがあるので選択→ ⑧決定ボタン押す→⑨ページ内のリンクをクリック→⑩ページ内のリンクをクリック→ ⑪表示された文字列をコピーしてエクセルに出力 なんてことできるの? 説明がわかりにくくて申し訳ない。 ①から③まではできたんだが…④からができるか不安だ。 どうにか③を応用して繋げていけばできるんじゃないかと思っているのだが、これをユーザー分取得するという繰り返しをするとなると、全くイメージ出来ない。 自分でもイメージ出来ていないのに聞くのも難だが、流石に実現不可能かな?



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

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

505:デフォルトの名無しさん
18/10/01 19:14:53.78 DnKjEw0R.net
②のフォームの操作ができてるならあとは全部②の繰り返しだからもう少し頑張れ

506:デフォルトの名無しさん
18/10/01 19:24:39.53 d7lQtBIe.net
>>482
>>484
ありがとうございます!
出来ると聞いて安心しました。頑張って作ってみます。

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

508:デフォルトの名無しさん
18/10/01 19:26:16.86 Zp0cocQA.net
質問者じゃないけど2とか3とかはどうやってやるの

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

510:デフォルトの名無しさん
18/10/01 19:45:57.55 MCBRDKcK.net
>>473
>>465に答え書いてるよ
>>480
vbaでフォームは置けない気がする
?の文字を置くなどで対処はできないか

511:デフォルトの名無しさん
18/10/01 19:47:37.81 MCBRDKcK.net
>>481
相当しんどいと思う
chromeの拡張機能を使ってみては?
「クローム 拡張機能 マクロ」で検索すると出てくる
後はjsごと覚えた方が良さそう

512:デフォルトの名無しさん
18/10/01 20:52:16.85 lLn/Vvr8.net
RPA使えよ
仕事なら買ってもらえるだろ

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

514:デフォルトの名無しさん
18/10/01 21:36:29.14 d7lQtBIe.net
>>490
iMacrosってやつ?試しに使ってみようと思う!

515:デフォルトの名無しさん
18/10/01 23:54:06.64 zfKNS/F/.net
vlookupなんか
どこにも見当たらない
オツムだけじゃなくて目も悪いの?

516:デフォルトの名無しさん
18/10/02 02:04:29.98 /QfTYNRi.net
>>481
Seleniumデザインパターン&ベストプラクティス、2015、オライリー
この本は、Ruby で、Selenium WebDriver を使って、ウェブサイトを自動テストする本だけど、
まさにこういう事を、Rubyでプログラミングする
どのページ(URL)へ飛んで、入力フォームに入力して認証して、
買う商品を選んで、カートに入れて、決済する
まさに、Ruby・Selenium WebDriver が定番
簡単なものなら、iMacros, Selenium IDE で出来るかも

517:デフォルトの名無しさん
18/10/02 05:27:11.42 uy7vLCLd.net
>>489
普通におけるけど。

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

519:495
18/10/02 07:13:32.60 /QfTYNRi.net
結局、ウェブページの自動テストツールを数年やってきた人たちは、次の2つにたどり着く
プログラマーは、Ruby で、Selenium WebDriver、
非プログラマーは、iMacros, Selenium IDE
漏れなんて、自分のPC 内の画像フォルダの画像でさえ、
Ruby・Selenium WebDriverでプログラミングして、ブラウザで見てる
HTML のimg タグに、画像のパスを設定して、ブラウザに表示させている

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

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

522:デフォルトの名無しさん
18/10/02 07:23:48.60 3rK24ppg.net
いや、タダのボケだろ
ちょっとおもしろかったわ

523:デフォルトの名無しさん
18/10/02 07:39:42.84 N1aQvONc.net
頭が悪いのを誤魔化そうとしても意味なくね?

524:デフォルトの名無しさん
18/10/02 07:42:08.16 ahHfhE5m.net
>>480
URLリンク(jizilog.com)
これをショートカットキーに割り付けるだけで行けそう

525:495
18/10/02 09:00:24.92 /QfTYNRi.net
Seleniumデザインパターン&ベストプラクティス、2015、オライリー
この本の著者がこう言ってる
最初は、ウェブページの自動テストを、Selenium IDE でやっていたけど、
大量の自動テストをこなすために、Ruby・Selenium WebDriver でプログラミングするようになった
これは、誰もがたどる道

526:デフォルトの名無しさん
18/10/02 09:10:32.38 fUFII8R1.net
別にVBAでも簡単だけどな。
既にVBAでRPAもどきを作ってある。

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

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

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

530:デフォルトの名無しさん
18/10/02 12:33:06.04 1IC/OUbd.net
Selenium全く必要ないっていう

531:デフォルトの名無しさん
18/10/02 17:44:52.64 rk1+4NE+.net
>>505
技術的負債

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

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

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

よろしくお願いします!

URLリンク(fast-uploader.com)

534:デフォルトの名無しさん
18/10/02 20:25:57.36 vaQcb9tkC
512ですが…

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

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

536:デフォルトの名無しさん
18/10/02 19:07:53.02 qyY5wEk7.net
>>514
そうか
まぁ頑張れよ
さて、忘年会用に何かでビンゴのソフトでも作るか

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


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



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

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

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

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

543:デフォルトの名無しさん
18/10/02 20:34:11.46 t6BWNYue.net
>>516
出力に必要な行列の数だけ要素数を指定して適切なサイズの配列を使うようにすればいいじゃん
複数セル値の逐次更新は更新するセルの個数分だけプロパティ関数が実行されてイベント処理が走るので、同じセル数を更新する場合で比較すると配列による一括処理と比べて格段に重いよ

544:デフォルトの名無しさん
18/10/02 21:04:30.03 GLlKH6rT.net
>>521
返答ありがとう。
INPUTのデータ次第で1行~9999行目まで出力されるので、現状9999行までのセルを配列に格納している。
ちょいと処理時間を計測してみたんだが
出力件数によっては、
例えば200件程度だったときの場合、セルに都度アクセスしたほうが早かったのよね。
実行する度に、INPUTのデータ量次第で配列に格納する範囲が変えられると便利なのだが、それがわからないため9999行まで格納してるって感じかな

545:デフォルトの名無しさん
18/10/02 21:09:51.81 R8M7QKDK.net
URLリンク(fast-uploader.com)
バカが作ったのはまったく使い物にならないから
オレのを使いなさい
ダウソした
総合商品情報.xlsx

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

546:デフォルトの名無しさん
18/10/02 22:36:58.97 ZVIK4UcY.net
PCから投稿したのが繁栄してないかもしれないので…
↓↓↓↓
社内のデータ加工で困っています。
VBAじゃないかもしれないのですが、
賢い方々助けてください。
やりたいことや実際のデータは下記URLにUPしています。
よろしくお願いします!
URLリンク(fast-uploader.com)
用意できる環境に書いてある「Microsoft Office 2016」は「Excel」を意味しています。

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

548:デフォルトの名無しさん
18/10/02 23:02:37.82 uetVBQBr.net
>>522
3回以上セルにアクセスするなら確実に配列に取り込んだほうが早い。
体感出来ないのはコードが完全に最適化出来てないだけ。
あと数式の埋め込まれたセルがあったりするとあり得ないくらい遅くなる。
(ある程度はスイッチで解消できるけど)
あとInputはめちゃくちゃ遅いよ。
バイナリモードで開いて一括読み込みがオススメ。
URLリンク(tetsucom.blogspot.com)
このサイトでは数倍しか差がついてないけど、元データの行数が増えるほどInputと差が開く

549:デフォルトの名無しさん
18/10/02 23:48:15.72 VE+AbZ0A.net
>>524
アップロードしたファイルに店�


550:シが含まれているんだが大丈夫か・・・



551:デフォルトの名無しさん
18/10/02 23:53:53.97 GLlKH6rT.net
皆さん助言ありがとう。
処理のイメージとしては、1行ずつ読み込んで色々判定した後、1行ずつ出力していく感じです。
頂いた助言を試してみて、
事前にeofまでのループ処理で変数をカウントアップさせて、必要な行数を配列に格納させることはできました。
バイナリモードの件と合わせて、パフォーマンスの向上を目指しますm(_ _)m

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

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

554:デフォルトの名無しさん
18/10/03 12:30:49.51 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:デフォルトの名無しさん
18/10/03 16:42:01.11 uB4nYmn5.net
実践的に練習用の課題を解いていけて、段階的にスキルアップできるサイトないですか?

556:デフォルトの名無しさん
18/10/03 21:13:21.04 4mO7hAaA.net
Range(1,1).Value = 1-1
これをやると、1月1日にExcelが日付と解釈して変換する。
これを防ぐにはどうしたらいいですか。
文字列として格納するために""で囲むという手があるがそれをやりたくない。
理由は値(1-1)に加工していじってるから。
ちなみに、1-1は番地のつもりです。

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

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

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

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

561:デフォルトの名無しさん
18/10/03 23:48:07.24 FigU8Mbj.net
Cells(Rows.Count, 1).End(xlUp).Row
これだとhiddenで隠れている行は無視されてしまいます
あくまでも最後に入力されている行を取得したい場合はどうすればいい?
もちろんhiddenを一時的に表示にする以外方法で
隠れていてもデータ行として扱う方法

562:デフォルトの名無しさん
18/10/03 23:54:17.02 7gIy/TEB.net
↓ココに操作手順がおいた
URLリンク(fast-uploader.com)
[SQLの編集]タフ


563:゙に編集の仕方が載ってる(denpyouを例にしてるが、編集の仕方は他も同じ) ※ vbaじゃないからな、コードはない ※ ちなみにデータとデータの抽出結果を出力するブックは別でも問題ない 新規に自分で作成したい場合は >>437 ← コレ を参考にしなさい



564:デフォルトの名無しさん
18/10/04 00:51:18.54 FEHQanR0.net
半角先生口は悪いけど割と優しいからすき

565:デフォルトの名無しさん
18/10/04 00:55:39.43 X6BA3+Oo.net
VBAの実行環境をDockerizeする方法を教えてください

566:デフォルトの名無しさん
18/10/04 07:43:14.54 tsjyo4iv.net
>>538
used range使えば?最終行取得でググれ

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

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

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

570:デフォルトの名無しさん
18/10/04 13:37:33.14 Vut2i4+m.net
挿入でできました 失礼しました

571:デフォルトの名無しさん
18/10/04 14:40:06.72 Vut2i4+m.net
Selenium Webdriverについて質問です。
①chromeを起動
②あるwebサイトのユーザーページにログイン
③ユーザーページ上で作業
という操作を自動化しようとしています。
①、②は良いのですが③が複雑なため、その部分のコードで試行錯誤しております。
しかしコードを修正するたびに①から行っているため時間がかかっております。
①②で起動したブラウザを利用して、③から別のsubプロシージャにして、③だけ実行して検証したいのですがどのようにすればよいのでしょうか。
下が①②のコードです。
sub 1()
Dim driver As New SeleniumWrapper.WebDriver
driver.Start "chrome", "URLリンク(aaa.com)
driver.get ("/")
driver.findElementByName("UserID").SendKeys ("yamada")
driver.findElementByName("pass_word").SendKeys ("1234")

572:デフォルトの名無しさん
18/10/04 17:50:31.63 ImPAYWBj.net
Private driver As SeleniumWrapper.WebDriver
Sub Init()


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

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

573:デフォルトの名無しさん
18/10/04 18:15:13.64 Vut2i4+m.net
>>548
ありがとうございます。
やってみたのですが、getメソッドでSystem.NullReferenceExceptionというエラーが出ます.....
他のスクリプト言語というとRubyということになるのでしょうか?

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

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

576:デフォルトの名無しさん
18/10/04 19:13:03.15 /wVNZxwJ.net
>>551
Private driver As SeleniumWrapper.WebDriver ←モジュール領域(各プロシージャの更に上位)でdriverを定義。ただし初期化していない。
Sub Init() ←Initプロシージャを実行する時にdriverを初期化し①・②を実行する必要がある
Set driver = New SeleniumWrapper.WebDriver ←ココ


577: ① ② End Sub Sub Work() ←Initプロシージャを実行してからWorkプロシージャを実行すると、色々(③)を実行してくれる driver.get(ユーザーページ) ③ End Sub 念のため言っとくと俺は>>548じゃないがついでに解説しただけで、 >>547が求めているものがこれで満たせるのかまでは関知しない。



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

579:デフォルトの名無しさん
18/10/04 19:32:08.96 apogHBJA.net
>>553
忘れたけど ariawase を見れば出てくるんじゃね

580:デフォルトの名無しさん
18/10/04 20:46:51.81 Vut2i4+m.net
>>552
とても丁寧にありがとうございます。追加質問させてほしいです。
A: 今回「driver」はオブジェクト変数となるため、定義の際はnew演算子を使用する。またはsetで格納する必要がある。ということで良いのでしょうか?
B: >>552で「ただし初期化していない」とありますが、あるサイトで「vbaでは変数宣言したときに初期化が行われる」という記述を見ました。
これは、setで格納されてないから初期化すらされてない という意味でしょうか。
C: プロシージャが実行されるごとに初期化されればよいならば、private変数の定義をやめて、①~②、③それぞれでDim driver As New SeleniumWrapper.WebDriver と定義すればエラーは出ないと思ったのですが、
やはり③のgetメソッドのところで「System.NullReferenceException」エラーが出てしまいました。何故なのでしょうか・・・
長文ですみません どうか宜しくお願いいたします。

581:デフォルトの名無しさん
18/10/04 22:18:56.04 /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:デフォルトの名無しさん
18/10/04 22:32:59.61 Vut2i4+m.net
>>556
本当に丁寧にありがとうございます。
伝えるのを忘れていましたが、言われた通りにコードを記述しうまくいきました。それを踏まえてのCでした。
インスタンス、スコープで調べてみます。ありがとうございました。

583:デフォルトの名無しさん
18/10/05 12:52:55.81 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:デフォルトの名無しさん
18/10/05 12:58:15.96 vSWfZutq.net
if文が閉じてないから

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

586:デフォルトの名無しさん
18/10/05 16:54:22.89 9/5M8DWU.net
>>558
インデントが適当だからそういうミスに気がつかない

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

588:デフォルトの名無しさん
18/10/05 17:30:08.09 nkW6jPyv.net
適当ならいいじゃないか

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

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

591:デフォルトの名無しさん
18/10/05 21:14:01.44 sMfkQDgh.net
>>558
根本はエクセルのエラーメッセージが明らかに間違っているから混乱する
けどプログラムの世界って大体そんなもんと諦める必要がある
で、対処法としては
>>561
が正解
インデントが適切なら楽勝で気づける問題
>>564は最悪。開発が超遅くなる

592:デフォルトの名無しさん
18/10/05 22:05:56.09 uERkBuVa.net
質問です。
テキストファイルの中身をセルに出力する処理をやっているのですが、一部のテキストファイルの文字が正常に出力されません。(縦線 " | "のみが出力される)
ただし、判定によってセルの色を変えているのですが、その機能は生きているので、読み込み自体はできているみたいです。
また、全部のファイルで不具合があるわけではなく、特定のファイルの特定のレコードにのみ起こるっぽいです…
補足すると、テキストファイル自体はメインフレームの伝送機能で送ってます。これが原因に関係あるのかはわかりませんが…
詳細聞かれたらお答えしますので、解決にご協力頂ければと思います。

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

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

595:デフォルトの名無しさん
18/10/05 22:17:06.45 KYi5h4An.net
>>567
その特定のレコードを教えて

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

597:デフォルトの名無しさん
18/10/05 22:27:20.22 vSWfZutq.net
>>567
コンピュータのベンダーや年式が違えば文字コード字形の割り当てが違うことも多い
手順
・テキストファイルの文字エンコード、記述形式を正確に把握する
・化けた部分前後数行のみのテストデータを作る
・ウォッチウィンドウを活用して原因を探る

598:デフォルトの名無しさん
18/10/05 22:30:53.32 uERkBuVa.net
>>570
INPUTはJCL(COBOLアプリを動かすためのスクリプト言語)をテキストファイルに落としたものです。
特定のレコードなのですが、テキストファイルを確認しても、他の出力されているレコードと見た目は全く変わりません。(スペース、データの末尾にも問題なし)
にも関わらず決まったレコードのみに不具合が発生します。



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



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

601:デフォルトの名無しさん
18/10/05 22:59:15.65 MhNSlq6Z.net
メインフレームなぁ・・・最後に触ったの20年近く前で、びっくりするほど覚えてねぇ。
ちょっと気になるんだが、正常に出力されない時に表示される縦線は、
元のテキストファイルにデータとかデリミタとして含まれている文字なのか?
それとも変換できなかった文字が縦線に置き換わっているのか?

602:デフォルトの名無しさん
18/10/05 23:11:22.13 VkzGqctC.net
>>558
なんかコピペしたときにend ifが抜けてた

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

604:デフォルトの名無しさん
18/10/05 23:39:05.08 JjUc2WZB.net
>>576
馬鹿は死ねよ

605:デフォルトの名無しさん
18/10/05 23:53:59.29 E7eIsq4P.net
>>577
ファイルからレコードを読み込んだら、イミディエイトウィンドウにも出力しておく
データをセルに書き込んだあと、もう一度セルから読み出して縦線になってたら中断するようなコードを書く
中断したらイミディエイトウィンドウの内容を確認
どこで化けたか、1つずつ追跡するしかないです
意外なところでミスをしていたり、仕様だったり、落とし穴があるもんです

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

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

608:デフォルトの名無しさん
18/10/06 07:12:44.67 GeqHzxmy.net
実はテキストファイルのエンコードがutf8とかだったりして

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

610:デフォルトの名無しさん
18/10/06 07:55:07.00 omtH0luh.net
EOTとかVTの類の制御文字な気がする

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

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

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

613:デフォルトの名無しさん
18/10/07 15:35:18.94 RZXmBbwE.net
>>569
>>571
正解。
でも、頭の使い方を知らない人にとっては理解し難いんだろ


614:う。 頭を使う作業と単純作業を分けるのが自然になってる人はEndIfを先に書く。 他にもEndWithやNextも先に書くな。 Ifまで書いて条件をどこからかコピペするのに気付いた時はIf a Then...EndIfまで書いてからaと差し替えるとか。 あるいはaの差し替えは中身書いた後の時もあるな。



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

616:デフォルトの名無しさん
18/10/07 15:38:37.38 yvtwWR1t.net
そしてaの差し替えを忘れると

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

618:デフォルトの名無しさん
18/10/07 17:11:47.87 RZXmBbwE.net
>>589
二ワトリか?

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

620:デフォルトの名無しさん
18/10/07 21:50:24.98 mIq+f5AO.net
で、pythonみたいな欠陥言語では空文という概念すらない
インチキな制御文で空文を回避する必要がある
つまり、cが言語として一番単純で簡単

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

622:デフォルトの名無しさん
18/10/08 10:58:07.65 Z4ZqXDLl.net
コードの作成ができる方がいらっしゃいましたら、助けていただきたいです。
https:~~/~~~/~~.pdf
で終わるURLが1000件以上あり、業務でそのすべてを印刷しなければならないのですが、
1つ1つIEで印刷していくのが大変面倒で、VBAで一気に印刷することができないか
調べたのですが、.pdfで終わるファイルをwebから自動で印刷するのは不可能なようでした。
そこで、その1000件以上あるpdfファイルを一気にローカルに保存できないかと考えております。
具体的には、
A列にひたすらURLを貼り、マクロを起動するとローカルの任意のファイルにPDFが保存されていくようなVBAが組めないかと考えております。
(一気に印刷することができれば、尚よいのですが)
どなたかコードを組んでいただけないでしょうか。
お手数ですが、よろしくお願い致します。

623:デフォルトの名無しさん
18/10/08 11:21:42.19 H/mp1NsO.net
curl, wget で、ファイルをダウンロードできる

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

625:デフォルトの名無しさん
18/10/08 12:47:36.35 rY44Et0R.net
両面2upで印刷とかだとpowershellでも大変じゃないの

626:デフォルトの名無しさん
18/10/08 12:59:10.13 fNYJDKkK.net
>>595
難しいだのなんだの言われてたけど、テキトーにやってたら簡単にできて拍子抜け
URLリンク(fast-uploader.com)
Book1.zip

Book1.xlsm
にリネームしてくれ
A列はファイル名
B列はURL
C列はokかNGか。アテになるかどうかはシランので、落とした後のファイル数はなどは確認したほうが良い
コードの編集は適当にやってくれ
今はテスト用に3つだけにしている
あと保存するファイル名は被らないようにかなり適当に作っている。適当に変えてくれ
で、pdf印刷はこの辺に任せるといいと思う
URLリンク(dekiru.net)
あと、参考にしたサイト
URLリンク(tonari-it.com)
特に何の関係もない、無害なサンプ�


627:却dfが置いてあったサイト http://www.shikisensha.com/pdfs.html



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

629:デフォルトの名無しさん
18/10/08 13:16:18.75 fNYJDKkK.net
そこまで簡単にできるならもうここで書いてしまって良いんじゃない?

630:デフォルトの名無しさん
18/10/08 13:21:06.52 SdoZVitL.net
クレクレに割く労力など微塵もない

631:デフォルトの名無しさん
18/10/08 13:21:21.13 XarCorGP.net
>>595
そんなのjdownloader2とか
webブラウザのアドオン使えよw

632:デフォルトの名無しさん
18/10/08 13:36:20.93 fNYJDKkK.net
>>602
あれ、そうか
PowerShellあんまり知らないから見てみたかった

633:デフォルトの名無しさん
18/10/08 15:25:31.11 41uO404m.net
>>595
死ねよ

634:デフォルトの名無しさん
18/10/08 15:55:52.70 fNYJDKkK.net
>>603
拡張機能探すのあんまり得意じゃないわ
結局作ったほうが早い
>>605
ざっこw

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

636:デフォルトの名無しさん
18/10/09 01:51:39.58 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:デフォルトの名無しさん
18/10/09 03:48:33.30 GjEV7PXm.net
>>608
秒はどうするの?19分30秒だったら20分00秒にするってこと?
とりま、基本的な処理は分を10で割った余りを求めて、9だったら1を足す
それを選択された全セルに対して繰り返す

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

639:デフォルトの名無しさん
18/10/09 08:27:33.61 0K1bBeTL.net
>>567-588
Ruby で、そのテキストの該当部分を表示して、確かめる。
他の言語でもよい
>>608
いったん時刻に変換して、1分足してから、また元の形式へ戻す。
つまり、表示形式 → 時刻 → 表示形式

640:609
18/10/09 10:04:43.66 0K1bBeTL.net
>>567-588
制御文字の可能性があるから、文字列をバイナリで見る
文字コードや、UTF-8 ならBOM の有無
セルに入力した時に、特別な意味を持つ文字が入っているとか?
シングル・ダブルクォーテーションなど?

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

642:デフォルトの名無しさん
18/10/09 16:53:10.93 i


643:uxGmBKG.net



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

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

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

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

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

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

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

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

652:デフォルトの名無しさん
18/10/09 19:46:02.37 fy0WNSeQ.net
>>613
出発点から「自分で勝手に何かする」というのが間違い。
他の人も言うとおり、まずは自社で管理してるDBなら管理部署に、ベンダのシステムであればそのベンダに、やりたいことを伝えて対応してもらう。
対応してもらうのが無理なら、管理部署やベンダにAPI等を利用してツールを作成して良いか確認を取る。
もしOKなら、API等を利用してツールを自作する。完成したら必ず管理部署やベンタにツールを見てもらう。
勝手にベンダのAPIを利用してSQL発行ツール自作してクビ寸前まで行ったことがある人を知ってる。
大幅減俸で落ち着いたらしいけど今はもういないから実際のところどうだったのかは知らんが。

653:606
18/10/09 20:01:04.99 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 を計算し
これを時刻に直してセルに戻す、という手順で出来ました


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch