Excel VBA 質問スレ Part80
レス数が950を超えています。1000を超えると書き込みができなくなります。
ExcelのVBAに関する質問スレ
コード書き込みや作成依頼もOK
次スレは>>980が立てること
無理なら細かく安価指定
関連スレ
Excel VBA 質問スレ Part79(ワッチョイあり)
https://mevius.5ch.net/test/read.cgi/tech/1674875532/
※前スレ
Excel VBA 質問スレ Part79
https://mevius.5ch.net/test/read.cgi/tech/1674874007/ >>848
5chは老害の巣窟ですよ。
あきらめて他所で遊んだ方が良いですよ。 まあ、それは 他のスレッドだとじぶんが付いていけないからなんだろうな
唯一自慢できるのがVBAなんだろう、たぶん 人生の勲章がVBA
退役軍人が懐かしい酒場に入り浸って昔語りし続けてお互いの傷を舐め合ってるような景色
前世紀の遺物だよ 死に掛けのヨボヨボじじい共
しかし、地球の危機が宇宙の彼方からやって来たとき、彼らが!!・・ VBAじゃ出番無ぇな 例の零細企業でワープロを使えるのを自慢していた馬鹿じゃないの? なんでBASIC絡みのスレって>>842みたいなアセンブラ爺さんがたまに沸くんだろう。いや、俺もジジイだけどさ。 そりゃBASICの高速化といえば機械語しかないからでしょ >>842
インテル8086のように移行期の互換性を考えていないCPUがデファクトスタンダードになることはない
インテル自身も64ビット化では失敗作を作って、AMDのx64規格に救われた。 課で唯一のVBA使い
要望に応えてどんどん部内で共有する処理システムを強化してしまっている
土台で処理するtxtデータが12万を越えた
ライセンス料払ってたソフトをやめて社内運用でコスト削減
時代に逆行しすぎ テキストデータが12万というのは、ギニュー隊長の戦闘力のことでも言っているのか? わざわざ糞つまらん事を連投して面白いとか思ったのかな 12万文字でも12万行でも多くないし、12万といういまとなっては大きくないサイズは、いったいなんなんだ? IoTとかで取り込んだCSVとかのテキストデータが12万行とかだろ まだ88万行おk
すぐにパンクしそうではあるが そんな時こそ前処理でPowerQuery! とか、当人は意気込んでるんだろうな
いずれにしろ部内の要求に応じてるなら、現状ではハリキリマンということで、評価はアゲアゲ
それをやっかんで戯言吐きにきた、と Windowsとエクセルのバージョンが上がったら今まで使ってたVBAマクロが動かなくなったっていう経験ある人いますか?
そんなことは普通起こらない? ある。
基本的な機能使ってるだけならまずないが、
参照設定使うとか、特殊なことやってるとよく起きる。 >>867
同じバージョンでも再インストールとかで今まで32ビット版だったExcelを64ビット版に変えるとちょっと凝ったマクロでエラーになる事がある。
ググれば結構例は出てくるので修正は出来る。 いやでも80年代からおぢさん達は飽きずに挫折せずに続けている事には尊敬できる。
昭和の人って忍耐力半端ないイメージがあります。 確かに、スピルとか言う他のセルにも影響を及ぼす計算式(?)には驚いた。
自分は某福祉NPOでパソコンの助っ人みたいなことをしているが、パソコンの更新が進まず、エクセル2010がまだ多数残っているので新しい機能を使わずに(勉強せずに)済んでる。 新しいPCに変えたら、SendKeysを使うとNumLockが解除されてしまうようになった
普通にNumLockを押すようにコードを足せばいいんだが、
問題は今までNumLockを押したらIMEがオフになるようにしていたから他のキーに変えないと駄目になったのが辛い Static WshShell As Object
Set WshShell = CreateObject("WScript.Shell")
Shell pathname:="notepad.exe", windowstyle:=vbNormalFocus
WshShell.SendKeys "^V", True
WshShell.SendKeys "^(+S)", True
Set WshShell = Nothing
こんな感じで回避した 実際は3行目に
Application.Wait Now + TimeValue("00:00:02")
を入れてる。メモ帳が立ち上がってしばらくしないとメモ帳自体がSendKeysを受け付けなかったので。 ちなみにメモ帳の受付開始のタイミングがWindows 10と11とで違っていて、
Wait Nowは11に対応するための処置。 やはり、メモ帳の受付開始のタイミングがWindow10と11では違うよな
俺は新メモ帳が嫌なのでサクラエディタでやる事にした
どちらにせよwaitは必須だけど もしかしたらタブ形式を使用停止すれば一緒になるかな? テキストファイルなんて直接イジれば良かろうなのだよ
WordやTextBoxなんかもあるし VBAでSendkeysは使うな、が鉄則
機種・環境依存、送るタイミングの遅延等など、開発時どんなに検証して安定させたつもりでも、利用者の
機器構成・起動させている他アプリとの相性・アプデ・えtc で容易に不安定に成る
不安定だけならまだしも、思わぬアプリに予定していないキーを送って誤動作の事態に陥ったりまで
自分だけで使うなら兎も角、他のマシンでも使う可能性が1_でもあるなら、それは以降のメンテ対応に
頻繁に追われる要因を埋め込んでるも一緒に成り果てる 楽で便利を求めてムダな苦労をする
ネットに繋いでいないスタンドアロンとか、ごく限られた利用環境とかならまだしも
って、15年ぐらい前にタガミ君が言ってた それ以来ボクはその教えに従ってる 別のアプリをコントロールしたいならAPIを使え
ウィンドウが開いたかどうかもAPIなら確実にチェックできるし、OSやパソコンの性能が違ったり、途中で誰かが触っても大丈夫なように作れる
それこそメモ帳を起動して文字入力程度ならぐぐればいくらでもサンプルが出てくる sendkeyで苦労した層からしたら全力回避だな
昔は情報も技術も無かったから使ったことあったけど、今ならRPA(使えるなら)とかもあるし、ウィンドウが開いたかwinapiでも確定できるし Officeスクリプトとは是如何に?
VBAから移行?
Power Automateとは違うのか? 外出なんかする暇あったらパソコン触っていたいんでしょ?
他に興味沸かないもんね 投資のツール作ってるので今はムリ
山の上の方の桜が散るまでには見に行くつもり 外に出なくても窓から満開の桜が見えてる俺は勝ち組ってことでよろしいか? >>896
うちも窓からと車で走ってる土手にズラッと並んでるけど、マジマジ見るのは遠くへ出かけて見る桜だけだな じゃあアレか?俺がお前らの頭を引っ叩いて、「キモヲタみたいにパソコンばっかやってねえで外の桜を見てこい!」って言えばどうなるんだ? >>899
フッそいつは残像だ、お前の力はその程度か、ならば桜と共に散れ って言う >>899
はあ?そんな事したらぜってー許さねえよ 関数や機能で出来るならその方がいいけど繰り返しや一括処理でVBAに勝てるわけないのに
なんじゃこりゃってくらいものっすごい長い数式をセルに入れてドヤられるのもイライラする >>904
マクロ仕様の警告出る出ないは大きく違うから仕方ない LETのような長い計算式を見やすくする機能はどんどん追加してほしいよね
画面幅超えるような式見るとちゃぶ台ひっくり返したくなる いまだにちゃぶ台なのかあ なんかちょっと切なくなった 和式生活送ってたらちゃぶ台くらい普通だろ?
と思ったら脚たためないとちゃぶ台とは呼べないのか
うち掘りごたつだから座卓と呼ぶらしい
勉強になった ヒーターが出っ張ってて足がみすぼらしかっただけだよな >>909
それはGoogleスプレッドシートの話とごっちゃになっているだけだろうな >>917
あなたは今のコタツを知らない
使えるの意味が違う 布団をはぐると、コタツとはわからない、テーブルとしてまったく違和感なく使えるデザインになってる 関東でも内陸だと座卓は冬はコタツになる。
まともな座卓もない家に育ったのかな? ヒーターが部分が出っ張っているコタツなんていつの時代のコタツだよw
安物を使っていただけなのに、いまになってそうではないものがあると気づいたのか? 自己流で課内のデータ処理システム作らされて15人規模で共有してたけど
他部署にまで配布すんじゃねーよ
僕のデスクトップのデータが処理出来ないんですけど?とか内線電話きてキレそう >>922
何コタツに必死になってんだか
あ、そういうことか。可哀想にw 座卓がないような家庭だったんだろ
コタツのイメージが小さくて安いものだった貧乏家庭だったのは馬鹿にしているわけではないが、ものを知らずに最近は、最近はと言い出したら、高齢者の仲間入り。 大きなテレビとコタツが必ずあった時代は平成で終わり
最近の家庭はどっちも買わないって知ってた >>926
コタツじゃなくて座卓だ
安いコタツをコタツと呼ぶのはかまわないが、座卓もコタツが多い
狭い家に住んでいると大きなテレビはそもそもいらない。立派な座卓もいらない
冬がさほど寒くない地域と札幌なみの気温になる東京都や埼玉県の内陸は、室温を上げる暖房は非効率すぎてエアコン暖房はやらない。
都心のオフィスビルも床は温まらない。不動産屋が語るイメージと実際は異なる。 度を超えた長い式、エラーになってる時あるからもはやお手上げ。
どこから取ってきたんだと言いたい長い式ね Microsoftが作ってるアドインの「Excel Labs」の導入をおすすめします。
数式機能が入ってて、各種検証も使えます 結構マルチな機能でかーなり便利な出力システムをVBAで作ろうと思ってる
具体的なイメージは全くないけどすげー!ってレベルのもんを何とか作りたい >>932
今一部でブームな投資系はどうだろ
投資先の分析、複数口座をまとめて管理などあれば便利
複数証券会社、銀行またがってこれらを統合活用、管理できるのは無いと思う
マネーなんちゃらが一部まとめだが完全じゃないのよね
すでに複数先で投資してないとモチベ上がらない(検証できない)だろうが >>933
ごめん、そんな高尚なもんじゃない
分析職場で色んな機器からピコピコ出てくる色んな種類のExcelやcsvのデータをシュババって類別して計算させて社内サーバーに累積させていくような
専用システムっぽく作りたい
ユーザーフォームにボタンを何個も作ってそこで全部制御出来るみたいな
ここだと自分の仕事を楽にする小技として作ってる人が多い?
複数の機能を追加して課や部で当たり前に使われてるツール作ってる人いるかな? >>934
作ってる人も作れる人もいるでしょ
ポイントは色々あるけど、仕様をまとめてくれる人が必要
難しすぎる構成にしないで、別の人でもメンテできる範囲にしとかないといけない
これがなかなか難しい >>934
分析なら power queryや Access DB使ったら楽なのにと思っても、使える人はほぼいない
もし社内でoffice365使ってるならAccess使える
これ使えるようになるとめちゃ便利なんだけどね
(DB機能はもちろんレポートが優秀) >>936
パワークエリやアクセスは無理なんだわ
俺ももうおっさんだし勉強する脳がない
データベースってほどじゃなくあくまで別のワークシートに出力させたり計算させたりの処理がメインで値は少しずつ蓄積されてくだけ
ということでVBAで勘弁してほしい
一部アクセス使ってるのも上司がエクセルに統一すると言うてる
おーこれすげーじゃんやるじゃん
レベルのシステムをVBAで作りたい ユーザーフォーム至上主義おじさんだからとにかくこれを制御パネルとして専用システム、専用ソフトっぽく作りたい
あと自分がいる時はアメーバのように組み替えて直して要望があればすぐメンテも出来るように作るけど自分がいなくなったらゴミになっても全然構わない
別の人が見て直したきゃ勝手に直せスタイル
かなり職場を効率化させようと野望を企んでる その、分析機器から出て来るデータファイルって、大抵はメーカーが指定したマシンに繋がってるとかで
「ネットに繋げないでください」みたいな制限無い? アプデのせいでアプリが誤動作するとかいう理由で
繋いだことに依る故障やエラーは保証外です なんていうのも稀によくあるんだけど
そういう縛りが無ければ、分析結果をサーバーの特定領域にデータ転送して、あんなことやこんなことを
するのは容易だと思うけど、その縛りのせいで已む無く部署別に単独で処理するっきゃない、という現場が
多いような気がする 気がするだけだけど それと、そういった機器は結構高額なものが多くて、会社から買い与えられた段階で何だかわからないけど
得体の知れない特権階級意識みたいのが芽生えてしまって、おれさまと俺様が許した奴にしか、ぜってー
触らせねえ!なんぴとたりとも近付く事すら許さねえ!がるるー に陥って、にっちもさっちもいかなく
なる場合も有ったり無かったりする 上の方の根回しが出来なきゃ絵に描いた餅(画餅)に終わってしまう
誰もが容易に扱えるように成ると、自分の立ち位置がヒラに逆戻りしたような気にでも成るんだろうか
まぁ、それは、システムを制作する側にも言えることだけど >>939
社内のセキュリティも糞厳しいから出力されたデータのみ通信可能なよう申請も出して運用してる
仰る通りでメーカー機器のPCはOSアップデートないし基本スタンドアローンだね
そのPCでは基本分析ソフトしか運用するな、他の事やったら保証できないと言われてるけど出てきたcsvの吸い出しは大丈夫ですよと言われてる
だからVBAは別のPCでやる
csvデータの複数の情報を条件によって分岐処理して社内サーバに400くらいあるワークブックに入れていきたい
csvを魔術師のように華麗に確実に処理させたい
ただ計算とかあってどうしたらいいのかまだまださっぱり >>937
>値は少しずつ蓄積されてくだけ
>一部アクセス使ってるのも上司がエクセルに統一すると言うてる
蓄積されているデータ扱うならDBにしとくのが普通と思っていい
excelでDBもどきのロジック組んでも、やらなくていい労力使ってるだけ
メンテ性も落ちる
今のアクセスのツール?がDBに相応しい処理ならエクセルにするのは愚の骨頂
ムダに移行後ツールを新規に作って、さらにDBの使い勝手、発展性を全部捨てる行為
まあそうは言ってもリーマンはしょうがないのもわかる
>おーこれすげーじゃんやるじゃん
>レベルのシステムをVBAで作りたい
スゲーのはまずメンテが難しくなると思ったほうがいい
スゲー=メンテが難しくなっても知らん
なら止めない(それっぽいこと書いてましたね)
スゲーのを作るんじゃなく、適材適所でエクセルもパワークエリもアクセスもそれぞれ相応しい場面で効率的に使えるジェネラリスト(大げさ)を目指す方がよっぽどマトモ(あるべき姿)です
これらを駆使したシステムこそ真のスゲーシステム
(IT関連社員からの理想論でした。無理せずできることやりましょw) >>944
正確には元IT関連でFIREして西の方の田舎でノンビリ
近くなら昼飯交通費でアドバイス行けるんだけどね >俺ももうおっさんだし勉強する脳がない
パワークエリーってクエリーって付いてるからAccessのクエリー(SQL)みたいなもんだと無視してたら違ったw
これ↓見て、便利に使えるとこあるじゃんってわかったのよね
そこから活用するようになった
(まずはexcelの範疇ですし)
とりあえず11章全部目を通してみて
おぉ~ってなるとこあるはず
【初心者向け】パワークエリ入門:ETLツールを使ってエクセルデータを簡単に整形・統合しよう!(1/11)
https://ittrip.xyz/soft/excel/lesson1#google_vignette 重複起動させないコードを作成してみた。自己流です。
これで、上手くはいってるようですが、
皆様はどのようにコーディングしてますでしょうか?
Private TTT As String
Sub 四角形角度付き1_Click()
Dim dt As Long
'''重複起動チェック
If TTT = "" Then '初回での起動時(つまりTTT = "") では、重複起動チェックしない。
Else
dt = Abs(DateDiff("s", Time, TTT))
If dt < 60 Then ''''重複起動チェック 60秒内の起動は断固阻止!!!
MsgBox "60sec以内に重複起動∴重複した処理中断!あと" & CStr(60 - dt) & "秒 待ってネ"
Exit Sub
End If
End If
TTT = Time
'''本処理
〜ファイル書込みがある少々重い処理 60秒位かかる〜
End Sub 年齢なんてただの値 勉強はいくつになってもできる。 >>947
それ二重起動が問題なんじゃなくて、本処理という部分の実装がおかしいんだぞ?
ファイルの読み書きを同じフォルダ、同じファイルでやることがおかしい。 >>947
そもそも本処理が非同期というか、別スレッド、別プロセスとかになってないと…
そのメッセージ出せるか?出てるのか?
それと、クリックしてはいけないのなら、そもそもクリックできないようにしておくのがbetterなUI
(仕様は詳しくわからんけど)
ボタンenableをFalseとかにしておく MsgBox "60sec以内に重複起動∴重複した処理中断!あと" & CStr(60 - dt) & "秒 待ってネ"
はでる。
ちなみに、図形(オートシェイプ)をクリックで
Sub 四角形角度付き1_Click()が起動する仕組み
10秒ごとに図形をクリックし、その為にmsgboxの[OK]を
10秒未満でクリックし続けると
「あと50秒まってネ」
「あと40秒まってネ」
「あと30秒まってネ」
「あと20秒まってネ」
「あと10秒まってネ」となり
そして、その後は本処理実行できるが、また
「あと50秒まってネ」
「あと40秒まってネ」
「あと30秒まってネ」
… となる。かなり忙しくクリックしまくればだけど レス数が950を超えています。1000を超えると書き込みができなくなります。