Excel VBA 質問スレ Part56

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/08/23(木) 07:25:24.98ID:Kh3D3mRW
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK


※前スレ
Excel VBA 質問スレ Part55
http://mevius.5ch.net/test/read.cgi/tech/1532236398/l50
23デフォルトの名無しさん
垢版 |
2018/08/23(木) 20:16:31.88ID:1ATD5kR7
世間にこれ程エクセルコンプレックスを持ったパソコン博士が居ったとは
正直驚いている
2018/08/23(木) 20:45:49.20ID:woFPjL3r
>>21
そういう極限状態ですらPowerShellという強力なライバルがいる
VBAはもはや本気でビジネスに活用するような言語じゃない
もちろんPowerShellがなかった、あるいは普及してなかったXP時代だったらVBAもビジネスで通用した
でも今はもう便利な道具が揃ってる
2018/08/23(木) 22:05:21.42ID:5czy+V1T
PSって簡単に1ファイルにできるんだな
1ファイルおじさん涙拭けよ
2018/08/23(木) 22:06:49.39ID:Dg6LSkki
だが、伸びないPowershellスレw
27デフォルトの名無しさん
垢版 |
2018/08/23(木) 22:33:07.38ID:mr/xvEY6
うちの会社ではPowerShellがデフォルトでは使えないだけど、作ったものは動かせるのかな?
2018/08/23(木) 22:40:39.71ID:SlWSkCRM
お前の会社のことをここで聞かれてもな
29デフォルトの名無しさん
垢版 |
2018/08/23(木) 22:42:09.05ID:EIhBcxjq
>>28
同じ会社かもしれないだろ、お前の会社のことを言えよ
2018/08/23(木) 22:42:39.62ID:VIt1epE4
で、とうやってExcelとPS連携するの?
PowerShell押しの人、ノウハウ教えて。
(普段はVBAだけど固執するつもりはないので)
31デフォルトの名無しさん
垢版 |
2018/08/23(木) 22:47:42.13ID:SlWSkCRM
>>29
ここはVBAのスレであってPowerShellのスレではない。
お前、字も読めないバカ?
32デフォルトの名無しさん
垢版 |
2018/08/23(木) 22:51:44.59ID:EIhBcxjq
>>31
だったら最初からPowerShellのことをここで言われてもなと言えよ
会社がどうとかふざけたこと抜かしやがって
33デフォルトの名無しさん
垢版 |
2018/08/23(木) 22:52:11.76ID:EIhBcxjq
PowerShellもここで良いだろ逆に
34デフォルトの名無しさん
垢版 |
2018/08/23(木) 23:02:01.12ID:mr/xvEY6
>>28
それって会社によるのか?
PowerShell自体が使えない環境でも作ったスクリプトが動くなら
どこか1箇所だけ使える環境を用意してやれば済むんだけど。
2018/08/23(木) 23:11:41.91ID:VIt1epE4
>>31
ちげーよ、VBAとPSをどう連携できるのか聞いてんのよ。どっちがいいとかの雑談にはウンザリだけと、出来る範囲を広げるのはいいだろ?
なのでPS押しの人たちが普段どうしているか知りたいわけ。
2018/08/23(木) 23:23:18.86ID:8FHoLqVu
PSを煽る気満々のやつにわざわざ教えるわけねーだろ
2018/08/23(木) 23:31:56.28ID:dogWJKVx
Powershell利用のマルウェアが多いため、Powershellはセキュリティリスクという考えの社が多い。
やっと去年のWin10からかなり監査が出来るようになったので、今後は順次開放されるのではと思うが
2018/08/23(木) 23:32:50.94ID:XWjfkmKJ
PSめんどくさいんだよ
バッチファイルと同じで、なんか変なとこで管理者権限が必要だったりするから、
一般事務の子に「これダブルクリックしたらok〜」とか気軽に言えない
https://ledsun.hatenablog.com/entry/20120325/1332642151

何だかんだで気軽に扱えるのはVBSとvba
特にエクセル+vbaの相性が良すぎてサクッと使い捨てコード書くならこれ以外考えられない
2018/08/23(木) 23:40:01.25ID:qUZ5eK5Q
PowerShell(PS) で、Excel を起動して読み書きするとか、

PSで、データベースからExcelへ、データを読み込むとか
2018/08/24(金) 00:02:12.55ID:zdXjL1Gc
>PowerShell(PS) で、Excel を起動して読み書きするとか、
これは最悪
素直にvbaで良い
41デフォルトの名無しさん
垢版 |
2018/08/24(金) 00:36:36.97ID:2VotvySN
>>27
動く

>>30
好きにすればいい
https://github.com/dfinke/ImportExcel
ここ充実してるので参考にするといい

>>37
んなこと言ったらVBAもなにもかもリスク
メールで気軽に送受信してしまう1ファイルVBAは比較的リスクが高いと言える

>>38
管理者権限は不要

>>39
VBAはブックに埋め込んでブックを開かないと動かせないから面倒くさい
42デフォルトの名無しさん
垢版 |
2018/08/24(金) 05:48:18.65ID:xDm94xVe
VBAの最大のデメリットは
自分: プログラム書けます!
他人: C#? Java?
自分: .........

恥ずかしくてVBAだって言えない事
今時VBAってwww
2018/08/24(金) 07:09:42.47ID:srP6ovAZ
今時VBA「しか」使えないのは確かに恥ずかしいな
44デフォルトの名無しさん
垢版 |
2018/08/24(金) 07:30:56.58ID:bUYoJBbe
>>43
お前が言うな
2018/08/24(金) 07:50:15.08ID:g+y0M0OA
>>41
なるほど基本、外部から起動して一処理完結型の目的に使うイメージですね。ボタンやイベント駆動に割り付けるのではなく。
リンクありがとう。ちょっと覗いていろいろ遊んでみます。
2018/08/24(金) 07:59:11.40ID:srP6ovAZ
>>44
思わず反応しちゃうということはさてはお前VBAしか使えないな w
2018/08/24(金) 08:08:55.41ID:zdXjL1Gc
vbaって普通、事務用途なんだから他言語使える人は少ないよ
2018/08/24(金) 08:14:56.26ID:RA0Vn5Gg
外部から起動するのがダメダメだろ。
それだったらどんな言語でもOK。
C#とかにするね。

昔、VBAからShellで別言語で作ったプログラムを呼び出して、そのプログラムが特定のテキストファイルを残して終了するまで待ってからVBAでテキストファイルを読み込むなんてかっこ悪いことしてたことが有るんだけどPowerShellも同じ匂いがするんだよな。
.netのフォームが使えるのは良いかもと思ったけど、ここでも同じ匂いがする。
VSTOの方がよっぽど良い。
2018/08/24(金) 08:15:03.43ID:LUWnMn3S
こマ?
2018/08/24(金) 08:15:30.07ID:LUWnMn3S
>>47
これマジ?
2018/08/24(金) 08:17:17.16ID:iPiTj0p3
UI部品やイベントでゴテゴテに装飾したエクセルGUIを使う場面ってビジネス上そんなにないよね
2018/08/24(金) 08:19:21.36ID:iPiTj0p3
>>48
発想がチープっすね
おじいちゃんPGが好きそうな構造
2018/08/24(金) 08:41:40.00ID:HeVrgcXD
Powershell(またはバッチ),vbsは必須だろ...単なるファイル処理にVBA書く奴の気が知れん
2018/08/24(金) 08:44:24.10ID:RA0Vn5Gg
>>51
そう。
だからVBA標準のフォームで十分。
2018/08/24(金) 08:45:13.75ID:RA0Vn5Gg
>>53
そう。
Excelが絡まないなら他言語の方が良い。
2018/08/24(金) 08:48:03.57ID:RA0Vn5Gg
でもここはExcelVBAのスレなのでExcelが絡むのが基本。
そうすると他言語はどれもダメダメ。

Excelから起動出来ないとか、かっこ悪い匂いしかしない。
2018/08/24(金) 08:51:53.95ID:iPiTj0p3
>>54
?
.netあるのになぜエクセルでフォーム?ギャグなの?
2018/08/24(金) 09:02:02.23ID:RA0Vn5Gg
>>57
バか?
Excel上で使うフォームのことを言ってるんだが。
そこに.netの高機能なフォームなんて必要無い。
2018/08/24(金) 09:05:39.56ID:PRwKDkO6
>>47
俺はexcelでやる作業を楽したいからVBA覚えたけど(関数覚えるようなものだし)、他のプログラム言語なんて大学生のときに教養の授業で少しやっただけで、必要なかったし、今後も全く必要ないと思う
60デフォルトの名無しさん
垢版 |
2018/08/24(金) 11:47:05.80ID:DLTYmqpl
エクセルは多くの一般人に便利に使われている一方で、多くのプログラマに嫌われている言語ですね
2018/08/24(金) 12:27:48.07ID:RA0Vn5Gg
>>60
嫌われているのじゃなくて碌にプログラムが組めない奴、もしくは他言語の初心者が自分能力の低さが悔しくて憂さを晴らしやすいのがVBAなんだろう。
2018/08/24(金) 12:34:00.31ID:AkhzDIRR
PowerShellからインタラクティブにExcelいじるのが便利
VBAって対話的に実行できないんだよね
2018/08/24(金) 12:51:53.83ID:RA0Vn5Gg
そりゃ、今でも何でもコマンドラインの方が良いという人はいる。
2018/08/24(金) 16:27:42.29ID:9KBmVSUv
対話的インタフェースってあまりありがたくないけどな
2018/08/24(金) 16:47:35.08ID:AkhzDIRR
俺はありがたいんだよ
2018/08/24(金) 17:42:03.82ID:Ia7dcRVj
みんな好きな方法でやれよ。
外からのコントロールも覚えれば幅も広がるかな?勉強しよっと。
でも、Excel介さずにファイル操作するほうが効率的ってならこのスレに関係ない話だな。
全く関係ないスレで暴れてる人たちって何がしたいんだろ。
好きな方法で好きなことさせればいいのに。
2018/08/24(金) 18:25:12.83ID:Yv7qaAWo
>>62
さすがにそれは・・・イミディエイトウィンドウ知らんの?
2018/08/24(金) 18:47:05.36ID:Tb9uhLLL
流れを読まずに、、皆さんListObjectって使ってます? Oracleとかからクエリするとできあがるアレ。
2007あたりからの機能だと思うけど、慣れないから範囲に変換して独自のアクセス方法で使ってた。
もしかしてリストで表組みすればプログラムでスゲー便利だったりします?
ここが便利とか、こんな使い方があるよ、ってのがあったら教えてください。
69デフォルトの名無しさん
垢版 |
2018/08/24(金) 19:14:05.46ID:eMTWpNIK
>>67
自分は作業をイミディエイトウィンドウでこなすことが多いんだけど、
あれって対話的インタフェースっていうもんなの?
2018/08/24(金) 19:22:15.85ID:n2aXOJxU
イミディエイトで日常作業とか苦行だろ
冗談キツイよ
2018/08/24(金) 19:26:58.79ID:zdXjL1Gc
みんなが作るvbaのUIってどんな感じなの?
俺はいつもこう。設定縦一列に並べてボタン押せばokって感じにしてる
https://i.imgur.com/WZkV4cG.png
2018/08/24(金) 19:29:26.52ID:zdXjL1Gc
イミディエイトウィンドウを対話的インタフェースってのは面白い言い方だな
ただ、あれは普通のコンソールとしか呼ばないと思う
2018/08/24(金) 19:34:39.13ID:zdXjL1Gc
>>68
知らなかった
テーブルをobjyect扱いにしているのか?
便利そうっちゃ便利そう
2018/08/24(金) 19:45:02.42ID:n2aXOJxU
ここにいるVBAerってPSerよりVBA知識少ないみたいだな
ListObjectも知らないとかまじかー
2018/08/24(金) 20:39:07.26ID:zdXjL1Gc
>>74
そもそもテーブルをvbaで触ることがない
システムから吐き出されたデータをvbaで集計して、vbaで体裁整えて、vbaでファイル分割してコピーして、vbaで所定のフォルダに入るようにして終わり
ListObjectとか頑張って使う人は結構たいへんな環境だと思う
2018/08/24(金) 20:44:55.61ID:Tb9uhLLL
PSでの対話的処理って具体的にどんなするの?(定義に行き違いがありそう)
2018/08/24(金) 20:51:02.74ID:Tb9uhLLL
>>74
お?詳しそうだね。
便利な使い方があったら教えて!
78デフォルトの名無しさん
垢版 |
2018/08/24(金) 21:00:09.88ID:eMTWpNIK
>>70
なんで?
環境を整えればワンライナーでガシガシいけるyo!
2018/08/24(金) 21:24:35.45ID:2VotvySN
>>78
指定フォルダを再帰的に検索してファイル名が*.csvにマッチするCSVファイルを列挙
各CSVからX列, Y列, Z列を読み取ってD := (X^2 + Y^2 + Z^2)^(1 / 2)を計算する
Dの大きい順に並び替えてX, Y, Z, Dを新規Excelブックに出力して
出力した全行をテーブルレイアウトに変更する

例えば↑のような処理があったとしてイミディエイトのワンライナーだとどういうコマンドになるの?
80デフォルトの名無しさん
垢版 |
2018/08/24(金) 21:29:18.23ID:H0CBQlWs
ぼくが考えた目一杯難しいプログラムみたいでワロタw平和やなあw
2018/08/24(金) 21:30:26.97ID:zdXjL1Gc
そんなもんワンライナーで書くわけ無いだろ・・・
2018/08/24(金) 21:37:29.53ID:2VotvySN
>>80
え? VBAユーザーの感覚だとこの程度の処理が難しいの?

>>81
ファイルの検索、解析、整形、出力なんて日常茶飯事だろう
こんな典型的な基本パターンすらワンライナーで書かないならなにをワンライナーで書くんだよ
83デフォルトの名無しさん
垢版 |
2018/08/24(金) 21:41:19.42ID:H0CBQlWs
マウンティングワナビー剥き出しのナイーブなレスでワロタw平和やのうw
2018/08/24(金) 21:49:06.20ID:2VotvySN
やっぱりイミディエイトじゃ大したことできないじゃん
85デフォルトの名無しさん
垢版 |
2018/08/24(金) 22:02:01.47ID:bUYoJBbe
いやまあ向き不向きはあるでしょ
不向きなもの取り上げてダメだというのは自作自演ですよん
86デフォルトの名無しさん
垢版 |
2018/08/24(金) 22:02:51.21ID:eMTWpNIK
>>79
ごめんなさいごめんなさいそれはワンライナーでは無理でした
実力もないくせにワンライナーとか言ってごめんなさい
87デフォルトの名無しさん
垢版 |
2018/08/24(金) 22:03:18.60ID:bUYoJBbe
>>82
ちなみにPowerShellではどう書くんだい?
88デフォルトの名無しさん
垢版 |
2018/08/24(金) 22:20:36.13ID:H0CBQlWs
なんやワナビーwせっかくのマウンティングチャンス見送ってまうんかw
89デフォルトの名無しさん
垢版 |
2018/08/24(金) 22:36:32.96ID:eMTWpNIK
ごまんなさいオレには無理でした教えてください
そういう関数を作ってイミディエイトから呼び出せばそりゃできるけどそれじゃワンライナーとは言えないですよね...
2018/08/24(金) 22:45:50.22ID:2VotvySN
gci . -Recurse -Filter *.csv | % { ipcsv $_ } | % { $_ | Add-Member -PassThru -MemberType NoteProperty D ([math]::sqrt([math]::pow($_.X, 2) + [math]::pow($_.Y, 2) + [math]::pow($_.Z, 2))) } | Sort-Object D -Descending | Export-Excel -Now
2018/08/24(金) 22:47:49.25ID:zdXjL1Gc
>>90
うおおおおおおwwwwwwwwwwwwwww

って試してないけどそれっぽいから驚愕しとくぜ!
ってかvbaってそもそも
「提携業務の自動化」
がコンセプトだと思うんだけど、
そこにワンライナーを持ち出す意味がわからないぜ。やれるならすげー!って思うけど、エクセルのファミコンエミュみたいな大道芸と変わらん
92デフォルトの名無しさん
垢版 |
2018/08/24(金) 22:52:49.94ID:eMTWpNIK
>>79
冷静に考えたら「新規Excelブックに出力して〜 」の部分を除けば
イミディエイトウィンドウ上のワンライナーでもいける気がしてきた
93デフォルトの名無しさん
垢版 |
2018/08/24(金) 22:56:59.98ID:eMTWpNIK
>>90
ん?
X列, Y列, Z列ってなんの事だ?
2018/08/24(金) 22:58:35.81ID:2VotvySN
>>91
自動化はプログラミング言語共通の目的なので、VBAのコンセプトと言うにはビミョー

というか大道芸に見えるか?
ファイル漁って解析して整形して出力ってごく日常的な作業だから、大道芸でも何でもないし、
息吸って吐くみたいな作業をいちいちスクリプトファイル化したくないので、ワンライナーで書くんだよ
2018/08/24(金) 23:01:55.40ID:2VotvySN
>>93
X, Y, Z
1, 2, 3
1.5, 0, 100

こういう形式のCSVがあると思ってくれればいい
2018/08/24(金) 23:10:09.34ID:RA0Vn5Gg
何かPowerShellユーザーが哀しくなるようなレベルの奴が来てるな。

そんな簡単なものを自慢して何になるんだ?
PowerShellってのはそんなに使えないもんじゃ無いだろうに。

見た瞬間に組めると思うかどうかだよ。
簡単かどうかってのは。
ワンライナーかどうかは関係ない。
2018/08/24(金) 23:10:55.71ID:RA0Vn5Gg
まったくもってクダラナイ。
98デフォルトの名無しさん
垢版 |
2018/08/24(金) 23:25:36.43ID:H0CBQlWs
まだマウンティング終わっとらんのかよw
最近はダラダラ時間ばかりかけて主旨のようわからんアホが多すぎるわ
2018/08/24(金) 23:49:03.30ID:2VotvySN
>>96
自慢に見えるならキミの潜在意識では、なんかすごいことやってるな、って感じてるってことだろうね
でもこの程度で自慢してるとか言われてもネ
呼吸することを自慢する人間はいない
100デフォルトの名無しさん
垢版 |
2018/08/24(金) 23:51:12.91ID:bUYoJBbe
ブルーボトル日本開店おめでとう。西海岸で飲む、いつもの味。僕にとって新鮮みがないことが、成功の証だと思う。
2018/08/25(土) 00:16:21.97ID:r5O9PJUC
>>99
> 呼吸することを自慢する人間はいない
そうだな、呼吸することをいちいちこんなスレに書くやつもいないわな w
2018/08/25(土) 01:48:48.16ID:i/FnC0mp
>>90
おお、便利そうですね。勉強になります。
Excel絡んでるの、最後のとこだけ?

PowerShellも腰据えて勉強しようかな?
2018/08/25(土) 01:54:18.00ID:i/FnC0mp
でも、ここVBA質問スレなので、別スレに分かれてるとうれしいな。
Excel PowerShell 質問スレ とか作ってそこでご指導いただけると
ありがたいです。
2018/08/25(土) 05:01:12.37ID:gxBSyOuw
>>79
そういう複雑なものは、PowerShell では難しいから、Ruby を使う

Dir.glob('C:/Users/Owner/Documents/Ruby/test/**/*.csv') do |file| # 再帰的に
next if File.directory? file # ファイルだけを処理する

CSV.foreach( file ) do |row| # 各行
# row[0] 〜 row[2] (列0〜2)を使って計算する
end
end
105デフォルトの名無しさん
垢版 |
2018/08/25(土) 11:15:08.47ID:qAZZDdLI
>>104
> 新規Excelブックに出力して
> 出力した全行をテーブルレイアウトに変更する

要件満たしてなくない?
2018/08/25(土) 11:31:23.83ID:2t4MGrQo
>>79
>>82
これVBAはおろか、そもそもエクセル案件ですら無い件。
せめてファイル形式くらいxlsxにしないと・・・
2018/08/25(土) 11:38:28.45ID:RyVjXt1l
>>106

新規Excelブックに出力して出力した全行をテーブルレイアウトに変更する
て書いてあるじゃん
2018/08/25(土) 11:40:32.66ID:t7aLMQyu
Excelから始まってExcelに終わる
Excel以外の外部環境とは隔離
これがエクセル案件
VBAはエクセル案件のためにある
2018/08/25(土) 11:54:03.16ID:2t4MGrQo
>>107
何故か見落としてた。すまんな。
2018/08/25(土) 12:32:54.50ID:+ZJnaWB8
>>108
データ量を考えた場合、RDBとの連携は認めても良いとは思うのだけどね。いちいち>>104みたいにRubyを持ち出すバカは別にして
2018/08/25(土) 12:34:48.30ID:t7aLMQyu
>>110
認めたら他の言語が優位になってしまう
エクセルでやるならエクセルだけで完結させる
これは絶対的なルールで例外は認められない
112デフォルトの名無しさん
垢版 |
2018/08/25(土) 12:41:34.89ID:0r5h6/lL
普通にdll作ってexcelからdllの関数読んで作るような案件ないくらでもあるかな
追うのが困難な知恵遅れ大量クソVBAを知恵遅れが書くのを防止することもできる

excelでvbaを書くぐらいしかできない知恵遅れ無能に
できるだけ余計な事をさせない事前策にもなってる
2018/08/25(土) 13:28:24.31ID:bGX52BVk
自分用のちょっとしたツール
 スプレッドが必要
  操作補助が必要
   補助の内容が複雑->.NET(COM)+VBA(イベント, フォーミュラひも付けのみ)
   補助の内容が単純->VBA
  操作補助が不要->自分の環境で使用可能な任意の言語
 スプレッドが不要->自分の環境で使用可能な任意の言語
他人に配布するツール
 依存関係(※1)が揃っているとわかっている->その依存関係で使用可能な任意の言語
 依存関係(※1)が揃っているかわからない->PowerShell 2.0

※1 Excelは依存関係の1つと数える
114デフォルトの名無しさん
垢版 |
2018/08/25(土) 13:30:13.57ID:uy5cTArP
RDBとの連携 ← 必須
dll作って呼ぶ ← 普通にやる
テキストファイルの読み書きをする ← あんまりやらない
2018/08/25(土) 18:46:09.73ID:8J3vBuCl
>>99
呼吸することをわざわざ宣言するバカはいない。

なんでPowerShellバカばかり来るんだろう。
2018/08/25(土) 18:49:03.73ID:8J3vBuCl
実際、VBAじゃどうにもならないこともある。
なんで他言語自慢はVBAでも出来ることばかりなんだ?
他言語でもレベルの低い奴ばかり来てるんだろうな。
117デフォルトの名無しさん
垢版 |
2018/08/25(土) 19:21:39.09ID:bGX52BVk
>>115
呼吸みたいなこともできんので驚いたって話だよ
118デフォルトの名無しさん
垢版 |
2018/08/25(土) 19:38:40.64ID:zQ0fIRr+
自分から驚きにいってあえて驚いたと言いたがるアホw
2018/08/25(土) 19:40:49.82ID:DCt62qfA
VBAの何が良いって、適当に書いたプログラムを他人に渡しても、受け取った人(IT系では無い一般事務員)がその場で治せることが一つのメリットだと思う。
Powershellみたいに一行に何でもかんでも押し込まれたら、読めるもんも読みたくないわ
ましてや電話越しにデバッグして貰うとかVBAか関数にしか無理
120デフォルトの名無しさん
垢版 |
2018/08/25(土) 19:48:19.41ID:zQ0fIRr+
>>119
別にパワーシェルやから一行に何でもおしこめる訳ちゃうわw
ワンライナーに童貞を奪われた厨房ってのは何時の時代も一定数おんねんw
2018/08/25(土) 20:12:22.32ID:RyVjXt1l
ワンライナーは人に渡すもんではなく、自分用だよ、きちんとps1ファイルに書くことも可能
2018/08/25(土) 20:14:43.66ID:t7aLMQyu
>>119
かつて無いほどアホくさいレス
2018/08/25(土) 20:27:16.37ID:t7aLMQyu
試しに同じ処理をVBAで書いてどっちがわかりやすいか、変更・拡張しやすいか、比べてみませんか
ハンデとしてワンライナーじゃなくても構いません
VBAユーザーの皆さんさあどうぞスマートなコードを書けるものならぜひ書いてみてください
もちろん尻尾巻いて逃げるのは構いませんがそんな情けない人はここには居ないと信じています
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況