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


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

Excel VBA 質問スレ Part60



1 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 20:39:09.64 ID:6HWXzj9o.net]
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part59
https://mevius.5ch.net/test/read.cgi/tech/1549692750/

620 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 20:18:31.42 ID:+T6khn6s.net]
>>608
PowerPivotとPowerQuery使えば楽勝だぞ

621 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 22:29:11.86 ID:Y1e0LUUu.net]
>>608
>「SQLでやるようなクエリーはもちろん不向きだし、途中段階のデータ加工処理にも不向きだと思う」
>に具体的な反論
お前は不向きの内容も具体的に書き込んでないのにどのようなアドバイスが欲しいのかな?
処理速度かな?

622 名前:デフォルトの名無しさん mailto:sage [2019/04/11(木) 00:47:10.88 ID:tqqNlMCs.net]
問題点がなにかも自覚しないから不満なだけで止まるんだよな
で、自分ではなくツールのせいにする楽なこった

623 名前:デフォルトの名無しさん mailto:sage [2019/04/11(木) 00:55:46.53 ID:7m5ZQ9KZ.net]
老害的な様相を呈してる

624 名前:デフォルトの名無しさん mailto:sage [2019/04/11(木) 12:26:22.18 ID:flnPu98l.net]
>>610
言いたかないが、それはレベルが低いだろ。
普通に考えれば分かることだ。

625 名前:デフォルトの名無しさん mailto:sage [2019/04/11(木) 15:17:56.46 ID:t6ZqSbU2.net]
>>603
>でもSQLでやるようなクエリーはもちろん不向きだし、途中段階のデータ加工処理にも不向きだと思うんだがね。

工夫次第で普通にできる。別に不向きじゃないと思う
そういうのはAccessのほうが向いてると言われればその通りだと思うが

626 名前:デフォルトの名無しさん mailto:sage [2019/04/11(木) 17:36:19.55 ID:PzEny+LO.net]
また不毛なマウントの取り合いしてる…

627 名前:デフォルトの名無しさん mailto:sage [2019/04/11(木) 18:18:36.48 ID:ekNCzMbf.net]
不毛で悪いか

628 名前:デフォルトの名無しさん mailto:sage [2019/04/11(木) 18:23:33.78 ID:e8i1eyfO.net]
また髪…



629 名前:デフォルトの名無しさん mailto:sage [2019/04/11(木) 18:50:46.18 ID:Vn+FQLol.net]
やめろ

630 名前:デフォルトの名無しさん [2019/04/11(木) 20:16:57.24 ID:v9KwxSkL.net]
同時接続数の超えられない壁

631 名前:デフォルトの名無しさん mailto:sage [2019/04/11(木) 20:48:03.35 ID:flnPu98l.net]
>>614
元々のVBAを使わずにExcelの機能を使うっていう話の観点で言えば、データが多くなるとExcel関数ではどうにもならないくらい遅くなるということがある。

銀行のデータ整合性チェックをしたことが有るんだが、10万以上のデータでSUMPRODUCTとか全くのアホなことやってたな。
その時はSQLじゃ無いけどVBAで組んだら一瞬になったけど。

今の仕事でも50カラムぐらいで40万件ぐらいのレコードをExcelに吐き出してるのを扱ってるがVBA使わずに関数とか正気の沙汰とは思えない。

632 名前:デフォルトの名無しさん mailto:sage [2019/04/11(木) 21:06:30.96 ID:JHOkJdt/.net]
10万くらいなら関数でも楽勝だろ
自動計算切れば普通に動く

633 名前:デフォルトの名無しさん mailto:sage [2019/04/11(木) 21:12:19.70 ID:2g6t5Llw.net]
数値だけなら楽勝だけど文字列のfindとかは結構キツイ
>10万以上のデータでSUMPRODUCT
これ列全体指定してたら多分計算終わらん

634 名前:デフォルトの名無しさん mailto:sage [2019/04/11(木) 21:33:34.25 ID:7m5ZQ9KZ.net]
ワークシート関数は使い捨てならいいんだけど残して運用し続けるのはつらい

635 名前:デフォルトの名無しさん mailto:sage [2019/04/11(木) 22:23:07.59 ID:+qS75l5K.net]
データベース的に使ってるエクセルテーブルで関数従属関係をワークシート関数で実現するのやめてほしいよな

636 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 01:26:49.44 ID:L59U/aC1.net]
Excelっていうか表計算ソフトは
ゼロから設計し直したほうが良いと思う

セルごとに個別の計算式が入っていて
どれか一つが間違っていても
簡単に気づくことが出来ないとか
一つのセルだけ修正し忘れとか
メンテナンス性が悪すぎる

637 名前:731 mailto:sage [2019/04/12(金) 01:40:03.71 ID:7vLuIMdD.net]
>>625
え?
少なくとも後者は教えてくれるぞ?

前者は数式表示モードにするか、横にformulatextで表示しとけば?

638 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 05:49:04.40 ID:V1CbV9zt.net]
OpenTextFileとCreateTextFiledeのメソッドが返すTextStreamには双方でなにか違いがあるのでしょうか?
ファイルの書き出しにはTextStreamのWriteLineメソッドを利用しています。

FileSystemObjectを使ってテキストファイル(拡張子無し)を作成して、
書き込みを行う処理を実装したいのですが、
CreateTextFileを使うとError 5 となりファイルは作成されるのですが書き込みができないことがたまにあります。
発生頻度が少なすぎて原因を抑えられず、
自力ではここまでが限界のため、何か思い当たることがあればご意見を頂けますと助かります。


OpenTextFileのほうでは少なくとも確認できる限りではエラーが発生しませんでした。


CreateTextFile
https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/createtextfile-method
OpenTextFile
https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/opentextfile-method



639 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 06:48:58.09 ID:jwc5+7Nd.net]
>>625
その意見を支持する

640 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 08:12:24.74 ID:cAaoTUDS.net]
>>621
SUMPRODUCT知らないか、10万のデータでどういう使い方するのか想像出来ない奴は黙ってろ。

641 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 08:24:36.34 ID:LhXUTlO1.net]
>>629
SUMPRODUCTは所詮O(N)だから実質的な計算量はたかが知れてる
遅けりゃSUMPRODUCT使わないで一時セル使った単純な式に展開してもいい

642 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 08:49:24.60 ID:wLs4Sov9.net]
>所詮O(N)だから実質的な計算量はたかが知れてる
O(n2)以上だよ
めちゃくちゃ多い

643 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 09:00:04.80 ID:xRzutCJ1.net]
>>631
O(N^2)となる根拠は?
実装がヘボいのかもしれないけど、仮に手計算でやったとしたら基本的に計算量は行数に比例するだろう
それなら一時セル使えば確実にO(N)で済むよ

644 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 10:26:44.15 ID:39D1tbGN.net]
>>620
そりゃSUMPRODUCTとか使われたら話は違ってくるわな
>>630にあるように工夫すればいいってこと

645 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 10:47:24.57 ID:cY6WK7UC.net]
絶対参照の範囲と相対参照の範囲をSUMOTODUCTする場合は平気でO(n^2)になるよ
Excelでシミュレーションとかしてるとよく出てくる

646 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 11:44:00.15 ID:LhXUTlO1.net]
>>634
それこそ一時セル使えば済む話だろう

647 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 11:48:22.60 ID:cY6WK7UC.net]
>>635
済まないんだよ
想像力足りてないぞ

648 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 12:22:33.93 ID:cAaoTUDS.net]
元々無理矢理VBA使うのはって話から始まってるが、もはや無理矢理関数使うことになってる件w



649 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 13:20:22.74 ID:L59U/aC1.net]
>>625
> 前者は数式表示モードにするか、横にformulatextで表示しとけば?

それぞれが微妙に違ってる(セル座標のこと)画面からはみ出るぐらいの
長い数式が何十個も表示されていて、それがワークシートを
コピーするたびに量産されていくという状態で
全部見て間違いがないことを確認できるわけ無いだろ

650 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 13:41:42.81 ID:cY6WK7UC.net]
>>638
全然本質的な解決にはならないけどR1C1形式にすればセル参照含め同じ数式になって多少は見やすいぞ

651 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 19:58:52.20 ID:BpmudOIO.net]
>>638
その考え方が間違いだろ
フォーマットは統一しろよ
みて確認なんかしない

652 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 20:04:10.53 ID:kdt5VzkQ.net]
>>640
何を言ってるんだ?
一見してフォーマットが統一されているように見えていながら
誰かがミスして数式が壊れたり、修正が必要な時に漏れたりするから
問題だって言ってるんだろ。

フォーマットを統一するのに「人間がミスをしなければ」という
不可能な条件があるから、だめなんだよ

653 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 20:21:45.21 ID:BpmudOIO.net]
>>641
個別に修正なんかしない
そんな事するからミスをする

654 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 20:22:49.28 ID:kdt5VzkQ.net]
> 個別に修正なんかしない
シートにデータ入れる時点で修正するんだが?

655 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) ]
[ここ壊れてます]

656 名前:20:24:13.41 ID:kdt5VzkQ.net mailto: そうそう。エクセルというか表計算は
データと処理(セルに入れる関数)と見た目(色等)が
一つに結合してしまっているという大きな欠点があったな。

分離されてないので、何かを修正する時に
別の何かまで変更してしまって、それに気づかない。
[]
[ここ壊れてます]

657 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 20:27:00.42 ID:BpmudOIO.net]
行でデータを作ったら
列には必ず同じ数式しか入れない
バカなことしてたら何時までも進歩しない

658 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 20:29:31.50 ID:kdt5VzkQ.net]
> 列には必ず同じ数式しか入れない

列には同じ数式入れるとかアホやろwww

DRYじゃない。同じ物は一つだけでいい



659 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 20:30:26.99 ID:kdt5VzkQ.net]
あ、DRYっていうのは同じことを何度も繰り返すなってことねw
わかりやすく言えば、コピペするなってこと。

660 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 20:31:21.74 ID:BpmudOIO.net]
バカに入力させるなら
式はロックしとけよ

661 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 20:39:29.55 ID:kdt5VzkQ.net]
「式をロック」したいだけなのに
そうすると今度はセルの幅などが変えられなくなる。

細かく設定すれば可能だが、面倒くさい。
メンテナンスする人はいちいち解除しないといけない

そして、どのセルがロックされているかわからない
頑張ればできるが・・・

どんどん無駄な頑張りが必要になる。

662 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 21:28:36.09 ID:gNUIO5L9.net]
accessや.netで作るとメンテナンスもっと面倒だよ

663 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 21:41:38.90 ID:bJr/2B+h.net]
>>627
そのエラーが出る部分のコードは?

664 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 11:19:08.13 ID:D8o23bai.net]
>>649
それ、単に考えが雑なだけだろなんにしても
計画性もなく適当に増殖させるから自分でも制御できなくなる

665 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 11:37:11.36 ID:R4ZFT5Jg.net]
セルロックは色々面倒くさくなるのは同意。ほぼ変更なしまで完成されてれば別だが。
なので、自分用とか、可能であれば、式セルに薄い色つけてる。

666 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 11:40:20.37 ID:D8o23bai.net]
まあ、ある程度データが大きくなったら、データーはテーブル&数式で処理して
表示、印刷はピボットを使うかフォーマットを定義したシートでまとめろよ
目的も、機能も行き当たりばったりってExcelのシートもVBAも負担なだけ

667 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 11:50:25.55 ID:D8o23bai.net]
>>653
コメント入れればいいんだよ、印刷しなければ問題ない
面倒くさいって、管理できればそんな必要はないけどな

668 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 12:09:21.02 ID:6byp94bf.net]
その管理が面倒くさいって話

修正でシート変更したとして、
今度から新しいシート使ってくださいとか言っても
間違えて古いシート使ってきて、でも見た上違いわかんねとかさ

エクセルファイルをコピーした分だけ
プログラム(セルに入れる関数のこと)が複製されるから管理不能。
一つのエクセルファイルを共有して使うとか

何人も人がいればやらんだろ?
それぞれ個別のエクセルファイル修正して提出とかだろ?



669 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 12:41:36.98 ID:DFBgdaK8.net]
削除や挿入でセルがずれない設定があればねぇ
今のところindirectしかない。indirect使うと数式が読みづらくて死ぬ

670 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 13:09:48.18 ID:3yfR9cCP.net]
offsetで大体逝ける
始点がずれるのはむしろ使いやすい

671 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 18:07:35.12 ID:U599Z1h6.net]
offsetか、滅多に使わないけどindirectよりは楽そうだ

672 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 09:28:16.57 ID:WyY+5dun.net]
>>657
わかりやすい名前を付けてそれを使えばズレないだろし分かりやすい

673 名前:デフォルトの名無しさん [2019/04/14(日) 09:40:00.62 ID:C6oAesku.net]
VBAの一番の欠点は情報が圧倒的に少ない
多言語の1億分の一くらいの情報量
質問してもアンサーが遅い

674 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 09:47:43.05 ID:Q3MA08tK.net]
Webで有用な情報を発信できるレベルの人間ならそもそもVBAなんて使いたがらないからね

675 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 11:20:06.68 ID:CXJ+kocl.net]
えー
少なくともの本後の情報は十分だろー

676 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 11:20:38.15 ID:CXJ+kocl.net]
の本後→日本語

677 名前:デフォルトの名無しさん [2019/04/14(日) 11:25:05.41 ID:C6oAesku.net]
少しはみ出した使い方とかも出ないし想定内の情報のみ

678 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 11:29:14.13 ID:CXJ+kocl.net]
まあね、最近のスマホの使い方みたいに
「見ればわかるよ」ってのが長々と書いてあるね



679 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 12:01:54.76 ID:8k8FRXsi.net]
ツイッターでVBA検索しても出てくるだろ

680 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 12:23:51.23 ID:TZDtV4Z3.net]
Excel VBAは玉石混淆だけどまぁまぁ情報はネット上に転がってる
Access、OutlookのVBAも最低限の情報ならば探せる
これがPowerPoint、Word、Publisherとかになると途端に情報量が減る

681 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 13:00:23.72 ID:XgRuwrtZ.net]
>>661は釣りだぞ
検索力低いですね^^;って返すとこまでがテンプレ

682 名前:デフォルトの名無しさん [2019/04/14(日) 15:06:27.05 ID:v38VY+Mw.net]
検索力の問題とかじゃなくて情報量が圧倒的に少ないのは事実
VBAプレイヤーの絶対人数が違うんだから当然だけど天才的な人もいない

683 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 15:09:37.61 ID:dD4X90o9.net]
天才的な人がVBAなんか使うわけないだろ

684 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 15:11:39.40 ID:XgRuwrtZ.net]
VBAの情報量と言われても、EXCEL操作できればそれでいいんだからそれ以上何かいるんけ?

685 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 20:42:13.83 ID:ta3d6Ir8.net]
単純なExcel操作の範疇ならそこそこ有能そうな人の記事もあるよね
能力の低い人ほどそれ以上のことをVBAでやろうとするからな

686 名前:デフォルトの名無しさん mailto:sage [2019/04/15(月) 08:13:02.92 ID:ZEg6Csuk.net]
VBAしか見ないから少ないと感じる。
普通のExcel操作なんて皆知ってることばかりだろう。

687 名前:デフォルトの名無しさん mailto:sage [2019/04/15(月) 08:13:28.72 ID:ZEg6Csuk.net]
VBAしか見ないから少ないと感じる。
普通のExcel操作なんて皆知ってることばかりだろう。

688 名前:デフォルトの名無しさん mailto:sage [2019/04/15(月) 09:47:45.91 ID:HgdD6hHz.net]
パワーポイントとワードは同じVBAでしょはよ作ってね
たかがvbaだし期間なんて要らないよねよろしくー
みたいなん多くてうげーてなる



689 名前:デフォルトの名無しさん mailto:sage [2019/04/15(月) 11:01:10.68 ID:OAOOS1Vr.net]
>>676
すまないが、日本語で書き直してくれ

690 名前:デフォルトの名無しさん mailto:sage [2019/04/15(月) 11:24:35.03 ID:K9PTdoK0.net]
わかるけど...

691 名前:デフォルトの名無しさん mailto:sage [2019/04/15(月) 12:40:48.29 ID:Es8LFln/.net]
>>677
こういうことだろ

上司A 「パワーポイントとワードは同じVBAでしょ、はよ作ってね」
同僚B 「たかがvbaだし期間なんて要らないよね、よろしくー」
俺 「うげー」

692 名前:デフォルトの名無しさん mailto:sage [2019/04/15(月) 17:13:58.76 ID:IzRYxIuW.net]
恥を忍んできくが

WordのVBAって、なんか使い道あんの?

オレは全角半角統一とか
余白ほかレイアウト調整とか
定型文挿入とか
そんな簡単なのは自作して使ってるけど
「高度な使い方」ってのが思いつかない

文章中心のデータに
定型処理って需要があんのかね

693 名前:デフォルトの名無しさん mailto:sage [2019/04/15(月) 17:23:54.84 ID:Es8LFln/.net]
>>680
そんだけ活用できてれば十分じゃん
言語仕様を制限する方が余計な手間がかかるから、そのままなんでも使えるようにしてあるだけだろ

高度かどうかは置いといて、Word VBAの使いみちとしては、印刷物の寸法をちゃんと合わせたいとき
Word文書にVBAで罫線なりシェイプを書き込めばいいんじゃない?

694 名前:デフォルトの名無しさん [2019/04/15(月) 17:36:56.85 ID:OAOOS1Vr.net]
>>679
すごいな、読む気がなかったかもしれん
>>680
俺は、使ってっるリストボックスで選択した文字で
文書を変更して印刷している
高度である必要あるの?便利であればいいんでないの

695 名前:デフォルトの名無しさん mailto:sage [2019/04/15(月) 17:41:14.99 ID:UiI6zhV3.net]
>>681
>>682
ああなんか救われた気がする
スレチ気味の質問だったが
ありがとう

素朴でも便利な小道具つくって行くわ

696 名前:デフォルトの名無しさん mailto:sage [2019/04/15(月) 17:41:23.11 ID:Es8LFln/.net]
【1 OSの種類         .】 Windows10 Pro 64bit
【2 Excelのバージョン   】 Excel 2019
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
Visual Studio Community 2019を入れたら、Excelの設定があちこち勝手に書き換わってしまいました
そのうちの一つとしてVBEでスニペットが表示されなくなったのですが、直し方を教えてください

697 名前:デフォルトの名無しさん mailto:sage [2019/04/15(月) 17:49:48.06 ID:RSa+mOrL.net]
>>680
スレタイ読めない馬鹿は死ね

698 名前:デフォルトの名無しさん mailto:sage [2019/04/15(月) 19:14:26.59 ID:32DOVlq8.net]
>>680
昔作って、超低頻度だが役に立ってるのが、Windows乗り換えたときに全フォントのサンプル表示と印刷。

各種プログラムソースに色付け、A3縦二段組印刷。(最近はイチから解析しなくなったな〜…)



699 名前:デフォルトの名無しさん mailto:sage [2019/04/15(月) 19:20:00.80 ID:+NR2IFvh.net]
>全フォントのサンプル表示と印刷。
これ面白いな

700 名前:デフォルトの名無しさん mailto:sage [2019/04/15(月) 19:35:47.06 ID:ZEg6Csuk.net]
>>680
ExcelVBAのソースコードを自動で色付けするのに使ってる。

701 名前:デフォルトの名無しさん mailto:sage [2019/04/15(月) 19:39:30.60 ID:ZEg6Csuk.net]
>>686
VBAのキ−ワードの色付けは誰かがやってたからそれを貰って、コメントの色付けを追加して使ってる。

702 名前:デフォルトの名無しさん mailto:sage [2019/04/15(月) 22:51:44.23 ID:bKeRxbfM.net]
>>680
>WordのVBAって、なんか使い道あんの?

ファミコンのエミュレーターとか。

703 名前:デフォルトの名無しさん mailto:sage [2019/04/15(月) 23:20:36.68 ID:cJmtAKHt.net]
>>684
VSCodeでVBAを書け
以上

704 名前:デフォルトの名無しさん mailto:sage [2019/04/15(月) 23:37:02.12 ID:NJLxUmAX.net]
Word VBAでVisualStudio作ろうぜ!

705 名前:デフォルトの名無しさん mailto:sage [2019/04/16(火) 06:55:26.74 ID:297VTHLy.net]
>>690 は想像もつかないが
ほかは参考にさせてもらうわ
ありがとう

706 名前:デフォルトの名無しさん mailto:sage [2019/04/16(火) 07:45:09.88 ID:BVl9qEwk.net]
WordのVBAはWord文書をgrepするときに使うくらい

707 名前:デフォルトの名無しさん mailto:sage [2019/04/16(火) 18:45:28.10 ID:e8yfqTUa.net]
フォルダ内に存在するファイルが以下のように構成されています

2019-1-1
2019-1-2
2019-1-2修正1
2019-1-3
2019-1-4修正1
2019-1-4修正2

この時、それぞれの日のファイルのうち最も新しい物から値を吸い上げたいです
そこでまずはdir(ファイル1*)とdir()で更新日を比較、大きなものと次を比較...とやろうとしたのですがその場合日付が1桁表記であるため1-1と1-11の比較となり1-11が採用されてしまいます
この問題を解決するにはどのようなアプローチで行えばよろしいでしょうか?
なお、日付の次は必ずしも「修正」ではなく別のコメントの場合もあります

ヒントなど頂けますと幸いです

708 名前:デフォルトの名無しさん mailto:sage [2019/04/16(火) 18:48:04.20 ID:e8yfqTUa.net]
すみません訂正です

1-1と1-1*で比較をしようとすると、狙いとしては”1-1修正”がある場合その比較だったのですが1-1と1-11の比較、1-11と1-12の比較...1-19(あるいはその修正版)が選ばれてしまいます



709 名前:デフォルトの名無しさん mailto:sage [2019/04/16(火) 19:02:23.87 ID:g+D3y3HH.net]
>>695
"修正"の文字列が凶悪過ぎて無理だな
"修正"がなければsplit()で分けて、日付データにしてしまうのが一番手っ取り早いんだけど
2019-1-2-修正1
なんてあったらお手上げ

710 名前:デフォルトの名無しさん mailto:sage [2019/04/16(火) 20:00:26.84 ID:dymnkria.net]
>>695
ファイル名ではなくファイル自体の更新日で比較は?
可能ならファイル名の付け方を考え直した方がいいと思うが

711 名前:デフォルトの名無しさん mailto:sage [2019/04/16(火) 20:24:24.92 ID:dymnkria.net]
すまん>>696読んでなかった
Dir("1-1*")で"1-1修正"も読み込まれるはず
ファイル名が"1-1 修正"になってるってことはないか?
それとDirはファイル名昇順で返すから比較せず最後に読み込んだファイル名を使えばいいと思う

712 名前:デフォルトの名無しさん mailto:sage [2019/04/16(火) 20:48:56.77 ID:akR/dKKk.net]
>>699
1-1修正
1-1最新
なんてのがあると、タイムスタンプ無視して修正が最後になるぞ
コメントが不定なら、数字とそれ以外の文字を判定して切り分けるしかない

713 名前:デフォルトの名無しさん mailto:sage [2019/04/16(火) 20:53:51.23 ID:g+D3y3HH.net]
1-1修正
1-12回めの修正(「1-1 2回めの修正」のつもり)
ってパターンもあってもうこれ絶対にヤバイ処理

714 名前:デフォルトの名無しさん mailto:sage [2019/04/16(火) 21:09:05.64 ID:dymnkria.net]
>>696
すまん更に勘違いしてた
"1-1修正"が出て来ず他のが出てくると言ってるのかと勘違いしてた
>>698が無理ならファイル名をsplitで"-"で切って、3つ目の文字列から左2文字のうち数字だけ取得する
ただし>>701の言うようにコメントの最初に数字が来ることがあるならどうしようもない

715 名前:デフォルトの名無しさん mailto:sage [2019/04/16(火) 21:16:48.22 ID:nc1CJru4.net]
postfix扱いの「コメント」に規則性がないのならそもそも最新版を特定する術がない
運用の方を変えるべきだろう

716 名前:デフォルトの名無しさん mailto:sage [2019/04/16(火) 21:43:33.41 ID:g+D3y3HH.net]
最新版以外はoldフォルダ作ってそこにほおりこんでおく
そうすれば超簡単に出来る

717 名前:デフォルトの名無しさん mailto:sage [2019/04/16(火) 22:27:43.62 ID:XA2NKST4.net]
>>それぞれの日のファイルのうち最も新しい物
新しいとする基準は何?
ファイル名で修正1修正2ってあったら修正2が最も新しい?
日付部分のyyyy-mm-dd(ただしmmとddは一桁もあり得る)が固定なら
毎回癖のあるdirとワイルドカードなんて使わないでファイルリストすべて取得してから処理したら?

718 名前:デフォルトの名無しさん [2019/04/17(水) 05:30:44.38 ID:pTGno1t2.net]
新たにVBAライブラリを作ったりする人が全く出ないのが取り残された言語の欠点
他の言語は次から次へとライブラリが追加されてより便利に快適にそして簡単になるのに
終わってるVBAには将来性も可能性もないから仕方ないけどね



719 名前:デフォルトの名無しさん mailto:sage [2019/04/17(水) 05:35:40.84 ID:JxFBTN19.net]
Sub macro1()
  ChDir "指定フォルダ"
  指定日 = "2019-1-1"

  f = Dir(指定日 & "*.*")
  Do While f <> ""
    t = timestamp(指定日, f)
    If t > 最新t Then
      最新f = f
      最新t = t
    End If
    f = Dir()
  Loop

  MsgBox "日付が" & 指定日 & "のうち最新の物は" & vbCrLf & _
      "ファイル名 " & 最新f & vbCrLf & _
      "日時 " & Format(最新t, "yyyy/mm/dd hh:mm")
End Sub

'ファイル名の日の桁数をチェックして、一致したらタイムスタンプを返す
'一致しなかったら0を返す
Function timestamp(s, f)
  w = Mid(f, Len(s) + 1, 1)
  If "0" <= w And w <= "9" Then
    timestamp = 0
  Else
    timestamp = FileDateTime(f)
  End If
End Function

720 名前:デフォルトの名無しさん mailto:sage [2019/04/17(水) 07:27:27.84 ID:Hz/wxCvM.net]
>>706
確かに聞かないな
最新ライブラリで10年前とかの世界だ






[ 続きを読む ] / [ 携帯版 ]

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

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