Excel VBA 質問スレ Part60
■ このスレッドは過去ログ倉庫に格納されています
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part59
https://mevius.5ch.net/test/read.cgi/tech/1549692750/ accessや.netで作るとメンテナンスもっと面倒だよ >>649
それ、単に考えが雑なだけだろなんにしても
計画性もなく適当に増殖させるから自分でも制御できなくなる セルロックは色々面倒くさくなるのは同意。ほぼ変更なしまで完成されてれば別だが。
なので、自分用とか、可能であれば、式セルに薄い色つけてる。 まあ、ある程度データが大きくなったら、データーはテーブル&数式で処理して
表示、印刷はピボットを使うかフォーマットを定義したシートでまとめろよ
目的も、機能も行き当たりばったりってExcelのシートもVBAも負担なだけ >>653
コメント入れればいいんだよ、印刷しなければ問題ない
面倒くさいって、管理できればそんな必要はないけどな その管理が面倒くさいって話
修正でシート変更したとして、
今度から新しいシート使ってくださいとか言っても
間違えて古いシート使ってきて、でも見た上違いわかんねとかさ
エクセルファイルをコピーした分だけ
プログラム(セルに入れる関数のこと)が複製されるから管理不能。
一つのエクセルファイルを共有して使うとか
何人も人がいればやらんだろ?
それぞれ個別のエクセルファイル修正して提出とかだろ? 削除や挿入でセルがずれない設定があればねぇ
今のところindirectしかない。indirect使うと数式が読みづらくて死ぬ offsetで大体逝ける
始点がずれるのはむしろ使いやすい offsetか、滅多に使わないけどindirectよりは楽そうだ >>657
わかりやすい名前を付けてそれを使えばズレないだろし分かりやすい VBAの一番の欠点は情報が圧倒的に少ない
多言語の1億分の一くらいの情報量
質問してもアンサーが遅い Webで有用な情報を発信できるレベルの人間ならそもそもVBAなんて使いたがらないからね 少しはみ出した使い方とかも出ないし想定内の情報のみ まあね、最近のスマホの使い方みたいに
「見ればわかるよ」ってのが長々と書いてあるね Excel VBAは玉石混淆だけどまぁまぁ情報はネット上に転がってる
Access、OutlookのVBAも最低限の情報ならば探せる
これがPowerPoint、Word、Publisherとかになると途端に情報量が減る >>661は釣りだぞ
検索力低いですね^^;って返すとこまでがテンプレ 検索力の問題とかじゃなくて情報量が圧倒的に少ないのは事実
VBAプレイヤーの絶対人数が違うんだから当然だけど天才的な人もいない VBAの情報量と言われても、EXCEL操作できればそれでいいんだからそれ以上何かいるんけ? 単純なExcel操作の範疇ならそこそこ有能そうな人の記事もあるよね
能力の低い人ほどそれ以上のことをVBAでやろうとするからな VBAしか見ないから少ないと感じる。
普通のExcel操作なんて皆知ってることばかりだろう。 VBAしか見ないから少ないと感じる。
普通のExcel操作なんて皆知ってることばかりだろう。 パワーポイントとワードは同じVBAでしょはよ作ってね
たかがvbaだし期間なんて要らないよねよろしくー
みたいなん多くてうげーてなる >>677
こういうことだろ
上司A 「パワーポイントとワードは同じVBAでしょ、はよ作ってね」
同僚B 「たかがvbaだし期間なんて要らないよね、よろしくー」
俺 「うげー」 恥を忍んできくが
WordのVBAって、なんか使い道あんの?
オレは全角半角統一とか
余白ほかレイアウト調整とか
定型文挿入とか
そんな簡単なのは自作して使ってるけど
「高度な使い方」ってのが思いつかない
文章中心のデータに
定型処理って需要があんのかね >>680
そんだけ活用できてれば十分じゃん
言語仕様を制限する方が余計な手間がかかるから、そのままなんでも使えるようにしてあるだけだろ
高度かどうかは置いといて、Word VBAの使いみちとしては、印刷物の寸法をちゃんと合わせたいとき
Word文書にVBAで罫線なりシェイプを書き込めばいいんじゃない? >>679
すごいな、読む気がなかったかもしれん
>>680
俺は、使ってっるリストボックスで選択した文字で
文書を変更して印刷している
高度である必要あるの?便利であればいいんでないの >>681
>>682
ああなんか救われた気がする
スレチ気味の質問だったが
ありがとう
素朴でも便利な小道具つくって行くわ 【1 OSの種類 .】 Windows10 Pro 64bit
【2 Excelのバージョン 】 Excel 2019
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
Visual Studio Community 2019を入れたら、Excelの設定があちこち勝手に書き換わってしまいました
そのうちの一つとしてVBEでスニペットが表示されなくなったのですが、直し方を教えてください >>680
昔作って、超低頻度だが役に立ってるのが、Windows乗り換えたときに全フォントのサンプル表示と印刷。
各種プログラムソースに色付け、A3縦二段組印刷。(最近はイチから解析しなくなったな〜…) >>680
ExcelVBAのソースコードを自動で色付けするのに使ってる。 >>686
VBAのキ−ワードの色付けは誰かがやってたからそれを貰って、コメントの色付けを追加して使ってる。 >>680
>WordのVBAって、なんか使い道あんの?
ファミコンのエミュレーターとか。 Word VBAでVisualStudio作ろうぜ! >>690 は想像もつかないが
ほかは参考にさせてもらうわ
ありがとう WordのVBAはWord文書をgrepするときに使うくらい フォルダ内に存在するファイルが以下のように構成されています
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が採用されてしまいます
この問題を解決するにはどのようなアプローチで行えばよろしいでしょうか?
なお、日付の次は必ずしも「修正」ではなく別のコメントの場合もあります
ヒントなど頂けますと幸いです すみません訂正です
1-1と1-1*で比較をしようとすると、狙いとしては”1-1修正”がある場合その比較だったのですが1-1と1-11の比較、1-11と1-12の比較...1-19(あるいはその修正版)が選ばれてしまいます >>695
"修正"の文字列が凶悪過ぎて無理だな
"修正"がなければsplit()で分けて、日付データにしてしまうのが一番手っ取り早いんだけど
2019-1-2-修正1
なんてあったらお手上げ >>695
ファイル名ではなくファイル自体の更新日で比較は?
可能ならファイル名の付け方を考え直した方がいいと思うが すまん>>696読んでなかった
Dir("1-1*")で"1-1修正"も読み込まれるはず
ファイル名が"1-1 修正"になってるってことはないか?
それとDirはファイル名昇順で返すから比較せず最後に読み込んだファイル名を使えばいいと思う >>699
1-1修正
1-1最新
なんてのがあると、タイムスタンプ無視して修正が最後になるぞ
コメントが不定なら、数字とそれ以外の文字を判定して切り分けるしかない 1-1修正
1-12回めの修正(「1-1 2回めの修正」のつもり)
ってパターンもあってもうこれ絶対にヤバイ処理 >>696
すまん更に勘違いしてた
"1-1修正"が出て来ず他のが出てくると言ってるのかと勘違いしてた
>>698が無理ならファイル名をsplitで"-"で切って、3つ目の文字列から左2文字のうち数字だけ取得する
ただし>>701の言うようにコメントの最初に数字が来ることがあるならどうしようもない postfix扱いの「コメント」に規則性がないのならそもそも最新版を特定する術がない
運用の方を変えるべきだろう 最新版以外はoldフォルダ作ってそこにほおりこんでおく
そうすれば超簡単に出来る >>それぞれの日のファイルのうち最も新しい物
新しいとする基準は何?
ファイル名で修正1修正2ってあったら修正2が最も新しい?
日付部分のyyyy-mm-dd(ただしmmとddは一桁もあり得る)が固定なら
毎回癖のあるdirとワイルドカードなんて使わないでファイルリストすべて取得してから処理したら? 新たにVBAライブラリを作ったりする人が全く出ないのが取り残された言語の欠点
他の言語は次から次へとライブラリが追加されてより便利に快適にそして簡単になるのに
終わってるVBAには将来性も可能性もないから仕方ないけどね 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 >>706
確かに聞かないな
最新ライブラリで10年前とかの世界だ フォームにしてももう少しグラフィカルだったりアニメーションだったりするだけでイメージが全然違うんだけど
頭の良い誰がライブラリを作ってくれんかね 多くの人にとって有用なライブラリを作れるほどの能力のある人なら、
VBAを便利にすることはVBAの延命や利用人口の増加を招き、それは即ち社会正義に反する行為であると理解しているからね >>706
vbaにライブラリって何か必要?
中途半端なの出てきてもそれ覚えるの面倒なんだよね
jQueryぐら便利で誰もが使ってるようなのならいいんだけど VBAのライブラリ作るよりCOMにしちまうんじゃないの?
VBA以外にも使えるし。
そしてCOMのライブラリなんて腐る程有るんだが何を言ってるんだ? 実際、俺はVBA用にC#でライブラリ作ったりしてる。 >>714
二つ質問
それってCreateObject でインスタンス作って使うの?
どういうジャンル/用途のもの? >>711
> vbaにライブラリって何か必要?
こういう文脈のライブラリなら
アルゴリズム系のライブラリだろ?
ソートとか配列に対する処理(合計求める)とか
VBAの言語の範囲内で実装できるアルゴリズム
あと大きめのやつならCSV読み書きとか
テンプレートエンジンとか >>711
> 中途半端なの出てきてもそれ覚えるの面倒なんだよね
ライブラリの関数名はどの言語にも有るような名前にするので
一般的なプログラマなら覚えるまでもない >>717
一般アルゴリズム系とかCSVならいっぱいあるでしょ
テンプレートエンジンってなに? CSVの読み込みほしいな
住所の番地"1-1-1"を読み込むと日付になって超めんどい
幾つか試したけどどれやっても日付型になってしまった
今思えば頭にピリオドでも付ければ良かったのかもしれん >>695-707
Ruby では以下。
ただし、Date オブジェクトに変換して比較しているから、同じ日付の順序付けは、不明
require 'date'
filenames = %w(abc 2019-1-11さらに修正1 2019-1-11修正2 2019-1-11修正1 2019-1-11 2019-1-1 2019-01-01)
re = /^(\d[\d-]+)/ # 数字で始まり、数字かハイフンだけが続く
# マッチしたものだけを集めて、ソートする。md[ 1 ] は、capture 部分
p results = filenames.select { | fn | fn.match( re ) }
.sort_by { | fn | md = fn.match( re ); Date.parse( md[ 1 ] ) }
p results.first
結果
["2019-1-1", "2019-01-01", "2019-1-11", "2019-1-11修正1", "2019-1-11修正2", "2019-1-11さらに修正1"]
先頭
"2019-1-1" >>721
もうすぐ無くなる言語の話なんてやめようよ ライブラリで有効なのは作るのが面倒なUIだろ
グラフィク系にこそライブラリの有り難みがある そもそもVBAに固執するのは他のものを覚えたくないからであって、
いくら便利なものがあろうと誰もそれを探そうとしないし覚えようともしない
それができる人ならとっくにVBAなんか卒業してるよ >>725
卒業てw適材適所だよ。EXCEL関連の時はvba、webはphp+js、ゲームはC#
これぐらい使い分けときゃだいたいok >>726
VBA使う人には他のものが使えないから使ってる人と単に選択肢の一つとして使ってる人がいて、君は後者であるというだけだ
大多数は前者なわけだし、後者の人はVBAでやりづらいことを無理にVBAでやろうとはしないからライブラリ云々は問題にならないだろう >他のものが使えない
は他のものを覚えたくないだけでなく
他のものを使わせてもらえないというのもある >>728
仕事を選べないor技術的裁量を持てない立場に甘んじているならその程度の能力ってことだ
本質的には大差ない 使わせてもらえないのはごく一部の相手なんですけどね
ほかは普通にいろいろ使ってる 自治体だと、テキストエディタすらウインドウズ標準のものしか使えない。インターネットから切り離されてる不自由な環境なので、VBAとかVBSは重宝される、らしい。 >>732
そういう馬鹿なところのために、
マイク・スピーカー端子経由でデータのやりとりをする
ツール作ったら便利なのだろうかね? 個人的には申請出せば色々使えるけど、それが面倒くさいというのもある。
どうせ、VBAでどうとでもなる。
よっぽどどうにもならない場合は申請出すけど。
最近流行りのRPAとか全く必要無い。
簡単にソース作成する個人ライブラリが既にある。 PC-8001ではカセットテープにプログラムを保存したんだよな
それを最近のPCで録音して、音声ファイルからプログラムデータを復元するWindowsアプリがフリーで公開されてる 下手なの作ってフリーズしたり過去のデータが消えたら責任とれるの?って話になるからな ライプラリってそんな知る人ぞ知るってマイナーな使い方じゃなく簡単に情報入手出来るようになって価値があるよね
汎用性があり改変もしやすくオープンなのが増えると良い。
そんなのVBAじゃなくともって言う人もいるけどそれでもVBAが存在して使用されてるんだから有用なライプラリはあった方が良い GithubでVBAっていれて検索すると3000以上のリポリトジがあるけど、
どうすれば有用なものが見つけられるか
まるでわからん なんとなくvba利用しているような運用職なんですがモノは良いのでもっと横展開出来て再利用性高いものが作れたら作って欲しいと言われました
再利用性が高いとはつまりどういうことでしょうか…
モジュールをそのままコピペして全く別のものでも動くように…? >>743
決め打ちとしてない?
データ全部を処理する時にfor i = 1 tto 100000とかテキトーな数値にしたり
そうじゃなく、最終行をちゃんと取るとか >>743
言ってるやつに聞け。
まあどうせ無理だろ?
どうせそいつが言ってるのは、他の部署でも使えるようにしろってことだろうから
業務内容を統一したものに "変更" しないと無理ですとか言っとけw > 横展開出来て再利用性高いものが作れたら作って
↑これ無理なんだよ。
今あるものを再利用性が高いものにすることはできない。
ただし「再利用性が高いもの」を使うことはできる。
どういうことかというと「今あるもの」は再利用できるものと
再利用できないものが合体してる形。
そこから再利用できるものを分離することはできるが
どうしても再利用できないものは残る。 そうやって責務を分離して再利用性の高いライブラリを構築することは可能。
しかし使いこなすのが難しくなる。
依存関係や凝集度をちゃんと考えた良質なライブラリは玄人受けはするだろうけど、
機能が細分化し抽象性も増すから一般人には豚に真珠状態。 まずはモジュール化
その会社の業務内容に合わせて、部署が違っても共通で使える部分をライブラリとして整備する
まあ言うのは簡単だけど、実際に作るのは死ぬほど大変なんで、理想の高さに比例した地獄が待ってるんだけどな > その会社の「業務内容」に合わせて、「部署が違っても共通で使える部分」
そんなものは存在しない。
業務内容から生み出されている時点で、業務にべったり依存してる。
再利用性の高いライブラリっていうのは、業務内容を切り離している。
業務内容と関係ないから、共通で使える。 ■ このスレッドは過去ログ倉庫に格納されています