Excel VBA 質問スレ Part62

■ このスレッドは過去ログ倉庫に格納されています
1
垢版 |
2019/06/24(月) 00:21:37.48
!extend:checked:vvvvv:1000:512

ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

※前スレ
Excel VBA 質問スレ Part61
http://mevius.5ch.net/test/read.cgi/tech/1556203263/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2019/08/16(金) 10:17:36.89ID:2/+GjR180
>>632
ダイアログが出るまで、ループ中にFindWindowとSleepを入れて待つ。
2019/08/16(金) 10:23:09.43ID:MTb2pfw1M
よーしパパ同じ名前のウインドウ別プロセスで立ち上げちゃうぞ
637デフォルトの名無しさん (ワッチョイ 292c-fkm4)
垢版 |
2019/08/16(金) 11:14:05.14ID:T8TNcgJH0
2019/8/14配信のWindowsUpdateを適用すると、Windows 7/8.1/10(全バージョン)で、

・VBVisual Basic 6 (VB6)で作成したアプリケーション
・Visual Basic for Applications (VBA)で作成したマクロ
・Visual Basic Scripting Edition (VBScript)で作成したマクロやアプリケーション

が応答しなくなり、『invalid procedure call error.』と表示される場合があるという
不具合が発生している模様。

WindowsUpdate 2019年8月度 注意事項と各KBメモと直リンク [Update 4: VB関連死亡]
http://blog.livedoor.jp/nichepcgamer/archives/1074802426.html
2019年8月14日のWindowsUpdate後、VB関連が死亡。Windows10全バージョンにて
http://blog.livedoor.jp/nichepcgamer/archives/1075495666.html
2019/08/16(金) 12:33:15.26ID:cw5RArPO0
>>637
> 2019年8月14日のWindowsUpdate後、VB関連が死亡。Windows10全バージョンにて
> http://blog.livedoor.jp/nichepcgamer/archives/1075495666.html

この記事で、Win10のバージョンと不具合の生じたKBの対応表があり、
https://i.imgur.com/gyz63Lm.jpg
先日(8/14)のアップデートが正に該当KBだったが、
https://i.imgur.com/4jCXivm.jpg
試しにExcelのVBAを実行したところ、何の問題もなく実行できた

記事をよく見ると、
 「invalid procedure call error.』と表示される場合があるという不具合が発生しています」

『表示される場合がある』だから、マクロを作りまくってるところは確認が大変だろうねぇ
2019/08/16(金) 13:23:21.28ID:weKSkgAm0
会社のツールやばい…
640デフォルトの名無しさん (アウアウエー Sae3-SXVW)
垢版 |
2019/08/16(金) 13:47:25.09ID:mZqFzvyqa
スレ勃った
【アプデ/10】 2019年8月14日のWindowsUpdate後、VB関連が死亡。Windows10全バージョンにて
https://asahi.5ch.net/test/read.cgi/newsplus/1565930238/
2019/08/16(金) 14:06:13.60ID:MTb2pfw1M
普通企業だといきなり素でwindowsupdate当てなくね?
wsusとかsccmとか使うでしょ
2019/08/16(金) 17:22:38.96ID:WXGx/ZZ40
>>641
ちょっとした企業ならそうだね
まあ直接MSにつないでアップデートする不届き者がいたりするけどw
2019/08/16(金) 17:27:01.26ID:k7tPUw8I0
windows10の強制アップデート阻止できんの?
2019/08/16(金) 17:50:52.66ID:7ZUhNgED0
ParamArrayが死ぬみたいだな
https://software.opensquare.net/relaxtools/archives/3603/
2019/08/16(金) 17:58:09.50ID:cw5RArPO0
>>643
10 Proなら手動更新に変更できる

【Win10】 Windows10 Proの自動更新を無効にして手動更新にする方法
〜更新プログラムの有無だけ自動確認編〜
http://blog.livedoor.jp/nichepcgamer/archives/1069099391.html
2019/08/16(金) 23:13:44.62ID:OVA1KWrl0
>>634
URLないので使えないと思われます
>>635.636
馬鹿なのでもう少しkwskお願いします・・お願いします・・
2019/08/17(土) 07:54:34.24ID:8I/+NAgPM
いまホットな話題のParamArrayについて誰か詳しく
2019/08/17(土) 09:45:42.30ID:kME64/ZP0
>>647
このあたり見てわからんのならあきらめろん
https://www.google.com/amp/s/excelwork.info/excel/paramarray/amp/
2019/08/17(土) 09:49:36.55ID:8I/+NAgPM
可変長引数のキーワードということで理解しました
650デフォルトの名無しさん (ワッチョイ 292c-fkm4)
垢版 |
2019/08/17(土) 11:27:09.01ID:A2kuY6Eb0
VB6、VBA、VBScriptの不具合の件、MSが対応策を取ったことで>>637の2ページも更新された。
Windows7はKB4517297、Windows8.1はKB4517298を手動ダウンロード後、適用で修正。
Windows10は、v1903/v1809/v1803が8月下旬、v1703/v1607/v1507は数日中の修正予定。
v1709のみ8月17日公開のKB4512494で修正された。
2019/08/17(土) 12:36:18.52ID:ZiMaCmm00
レポおつです。
652デフォルトの名無しさん (ワッチョイ 517c-yBk9)
垢版 |
2019/08/17(土) 15:54:42.36ID:iIHdaZG00
VBAでもPythonでもないなら何を推奨してるんですか?ExcelマクロはVBAでやるしかないんだけど。Excelを使うなってことかな。
2019/08/17(土) 15:55:45.89ID:HLb3E5lg0
質問です。以下のようにArraylistにPersonを5つ、それぞれ1から5の番号をつけて追加して、そのあとセルに表示というコードなのですが、
Dim per As Person
Set per = New Person
を、Dim per As New Person に一行でまとめるとセルの出力が全部5になってしまうのですが、
これはどういった理屈なのでしょうか?
一行でまとめて書いていたのでこの仕様に気づくまでかなり苦戦してしまいました、、


'--------------------標準モジュール------------------------
Sub test()
Dim col As Object
Set col = CreateObject("System.Collections.ArrayList")
Dim i As Long
For i = 1 To 5
Dim per As Person
Set per = New Person
per.num = i
col.Add per
Next
For i = 1 To 5
Cells(i, 1) = col.Item(i - 1).num
Next
End Sub
'--------------------------ここまで--------------------------

'----------------------クラスモジュール(Personクラス)-----------
Public num As Long
'----------------------------ここまで--------------------------
2019/08/17(土) 16:26:09.37ID:zNYQ6gFwM
https://sites.google.com/site/kanaetechwiki/vba/-vba-newtokonsutorakutanitsuiteno-zhu-yi-shuki

この辺が分かりやい?かも
宣言時にnew書くと変数の初回参照時に暗黙的にインスタンスが作成される

質問の例だと宣言時newにした場合、インスタンスはループ初回に一回しか作成されなかったものかと
2019/08/17(土) 16:36:08.32ID:kME64/ZP0
>>653
Dimはスコープに入った時に1度だけ実行されるらしい
https://thom.hateblo.jp/entry/2018/06/02/185716
2019/08/17(土) 16:52:36.35ID:HLb3E5lg0
>>654-655
なるほど、一行だとpersonが一つしかインスタンス化されてないからコレクションの中身が全部
同一のpersonを指していたのですね、、
またDimの仕様も初めて知りました
VBA特有なのでしょうかね
ありがとうございました!
657デフォルトの名無しさん (ワッチョイ 5994-OqLs)
垢版 |
2019/08/17(土) 19:14:32.76ID:RXxx1rXC0
VBAなんて死亡で何も問題にない
やっと消えてくれて良かったよ
MSグッジョブ!
658デフォルトの名無しさん (ワッチョイ 4901-yBk9)
垢版 |
2019/08/17(土) 20:27:14.12ID:TTG1tsty0
>>657
VBA使わなかったらExcelは何を使って動かすの?
659デフォルトの名無しさん (ワッチョイ 1342-DuLZ)
垢版 |
2019/08/17(土) 20:50:19.45ID:N2s/0hZJ0
夢と情熱で動かせばいい
2019/08/17(土) 21:05:24.35ID:He41kTu90
Excel 使わず perl python R などということでは?
2019/08/17(土) 21:06:33.10ID:zNYQ6gFwM
任意の言語でExcelObjectをCreateするんやで
662デフォルトの名無しさん (ワッチョイ 517c-yBk9)
垢版 |
2019/08/17(土) 21:32:02.44ID:iIHdaZG00
事務職がある限りExcelはあるし、事務員はPython出来ないからExcelマクロしかない。VBだから安くて済むのに事務員もPythonやるようになれば給料が高騰するな
2019/08/17(土) 21:42:22.66ID:Fw+V3P9r0
>>646
待つのはこんな感じ。

Do
 戻り値 = FindWindow(ダイアログのクラス名, ダイアログのキャプション)
 Sleep 1000
Loop While 戻り値 = 0

>>636みたいな嫌がらせをうけたら誤爆するけど、まあ普通はないでしょう。
2019/08/18(日) 11:00:31.17ID:C1gx08WLd
PythonがExcelに搭載されていないとデメリットが大きいので使わんよ。
665デフォルトの名無しさん (スップ Sd73-OqLs)
垢版 |
2019/08/18(日) 11:09:28.84ID:4FW1F7ZHd
エクセルに古臭いVBAしかない理由って知ってる?
アップデートもなけりゃ最新言語に対応もしない本当の理由知ってるか?
2019/08/18(日) 11:14:54.55ID:FqYQ2+OrM
知ってるよ
667デフォルトの名無しさん (スップ Sd73-OqLs)
垢版 |
2019/08/18(日) 11:40:45.27ID:4FW1F7ZHd
マジィ?
2019/08/18(日) 12:00:07.61ID:T9/88dVq0
鮫島事件が絡んでるからな
669デフォルトの名無しさん (スップ Sd73-OqLs)
垢版 |
2019/08/18(日) 12:20:01.35ID:VmB6zVS1d
鮫島よりペルシチェネンコ事件だろ
670デフォルトの名無しさん (ササクッテロラ Sp85-yBk9)
垢版 |
2019/08/18(日) 12:21:49.45ID:bLuo7bGBp
>>665
Excel自体にそこまで需要がないから。最新言語を対応させても得られる利益は変わらない
2019/08/18(日) 12:54:47.98ID:XgJSnVlI0
Excel自体の需要はあるやろ…
無職かよ
2019/08/18(日) 13:06:20.90ID:T9/88dVq0
Excelに需要がないは草
673デフォルトの名無しさん (スップ Sd73-OqLs)
垢版 |
2019/08/18(日) 13:22:03.41ID:fr36iN96d
VBAに需要がないのは間違いない
誰にも必要とされてない
お前らの独りよがり
じゃなきゃコミュニティも盛り上がるはずだけど全く超低空飛行
674デフォルトの名無しさん (ササクッテロラ Sp85-yBk9)
垢版 |
2019/08/18(日) 13:31:43.08ID:bLuo7bGBp
Excelマクロなんて事務員くらいしか使わない。マクロを使わなくてもいいようなシステムを開発したらいいだけ。企業はマクロよりRPAを使うようになってきてる。
2019/08/18(日) 14:20:33.70ID:/SWswUk70
末端の人がパーフェクトに便利さを感じられるシステムを
会社が構築してくれたらいいんだけど
実際はそういうわけには行かないわけで
隙間をうめるためのお手軽自動化ツールとしてVBA使う事になる
うちではそうだわ
VBAがなかったらクソくだらない作業を手作業でちまちまやらないといけなくなる
676デフォルトの名無しさん (ワッチョイ 1394-OqLs)
垢版 |
2019/08/18(日) 14:49:48.58ID:IrH+YuBi0
VBAなんて使わない方法を考えたら?
もう世間は誰もVBAなんて見向きもしてないから現状はこうなんだよ
いつまでも昔のやり方を変えないのもどうかと思いますよ
時代に合わせよう
2019/08/18(日) 14:54:23.89ID:DpEllfNwM
Excelに付属してるから管理が厳しいところでも配布しやすいから使ってるだけ
時代も何も使えなくなったら代替手段探すだけのこと
2019/08/18(日) 14:55:25.23ID:D/c0fmWr0
個人的なものは好きにできるが、仕事の場合それはできない
2019/08/18(日) 15:27:12.36ID:C1gx08WLd
>>673
...。
働けよw
2019/08/18(日) 15:27:45.78ID:C1gx08WLd
>>674
もっとヒデェじゃね―かw
2019/08/18(日) 15:28:27.65ID:C1gx08WLd
>>676
働こうw
682デフォルトの名無しさん (スップ Sd33-OqLs)
垢版 |
2019/08/18(日) 17:09:34.94ID:VGD+ydi8d
クソ言語にしがみ付くなって
VBAなんて将来性もゼロの全く価値のない子供向けのお遊びコード
2019/08/18(日) 17:11:35.43ID:Onid3Fuw0
子供のおもちゃが企業で使われているので
コチコチ頭の上司たちが変わるまでは仕方がない
2019/08/18(日) 22:03:42.03ID:fdTZq+Kkp
>>663
ありがとうございます!
明日職場で試してみますね。
2019/08/18(日) 23:03:48.28ID:VOTiyLwud
>>682
それもう20年前から言ってるぞ
2019/08/19(月) 00:03:40.71ID:s+b3eGRm0
>>684
ミスると永久ループになるので、n回トライしてダメならExit Doするようにする。
分かってると思うけど念のため。
2019/08/19(月) 01:54:47.41ID:8cX0ZsGs0
ゴルゴかよ
688デフォルトの名無しさん (ワッチョイ 291a-b/Zd)
垢版 |
2019/08/19(月) 18:24:33.37ID:YB9Wg1qd0
ExcelもPythonで動かせるようになるんでしょ?
2019/08/19(月) 18:31:08.40ID:1gWkLKQh0
結論から言うと純正はMSとしてのPython搭載計画は無いJavaScriptはあるらしい

https://qiita.com/yniji/items/b38bc312e860027108ac
2019/08/19(月) 19:04:43.88ID:dIBRQUcza
まーPythonが使えるようになると
一挙に統計の計算で出来ることが増えるようになるらしいけど
お前らObject指向すらままならないのに
関数型言語なんて覚えられるの?
691デフォルトの名無しさん (スップ Sd33-OqLs)
垢版 |
2019/08/19(月) 19:11:40.32ID:I77Hqr4od
無理
そんな事が出来るなら今どきVBAなんて使ってない
2019/08/19(月) 19:27:03.18ID:KJlIhGbm0
>>690
Excel自体がオブジェクトなので
cells(1,1).value="foo"
だけでも立派にオブジェクト指向
問題はオブジェクトを操ってる感覚が少なすぎることかもな
2019/08/19(月) 19:28:39.19ID:KJlIhGbm0
pythonはpandas辺りの数学系ライブラリがめちゃくちゃ便利なだけで言語としては至って普通だと思う
2019/08/19(月) 19:40:05.21ID:+1Fs+fGnM
本体に付属するなら何でもいいよ
2019/08/19(月) 19:56:47.47ID:kG35/yIv0
>>689
これのどこを読んだら「マイクロソフトが Excel に搭載するのは JavaScript であって」なんて出てくるんだろう?

Cool to see the excitement around Python.
We had an awesome response to our survey on the Python UserVoice item. We’re working on the best way to address that feedback.

・In the meantime, these are some great tools you can use like PyXLL and XLWings
・Additionally, you can also host your backend logic via a web service in any language, including Python, and you can use web add-ins or a custom function to call that web service.
2019/08/19(月) 20:48:52.44ID:mQFW2r4sd
>>690
逆だ。
どんな環境でも対応出来るからVBAでやってる。
他の環境になったら対応すればいいだけ。
2019/08/19(月) 20:57:32.17ID:nwpYw8PQ0
>>693
でも、普通に書きにくい
698デフォルトの名無しさん (ワッチョイ 1394-OqLs)
垢版 |
2019/08/19(月) 21:10:37.00ID:hlBLM62K0
今出来てない奴の典型的な言い訳だな
2019/08/19(月) 22:25:52.74ID:azaBJJ3f0
Pythonのどこらへんが関数型言語なんだ
700デフォルトの名無しさん (ワッチョイ 517c-yBk9)
垢版 |
2019/08/19(月) 22:38:19.44ID:yJROWsyT0
VBAが出来ればPython簡単でしょ。プログラミング何も知らなくても一か月あれば覚えれるし!
2019/08/19(月) 22:40:28.20ID:WV8MsfnG0
haskell と間違えた?
2019/08/19(月) 23:00:47.92ID:s+b3eGRm0
hellshake矢野と聞いてすっとんで来ました。
2019/08/19(月) 23:06:13.11ID:/B6DUDSo0
初心者質問ですいません。
下のコードで、Range("V3:V8")だと何事もなく範囲を指定できるのですが、
Range(Cells(…),Cells(…))だとエラーが出てしまいます。
何が悪いのでしょうか?

Worksheets("シート1").Activate

ActiveSheet.ChartObjects("グラフ1").Activate

ActiveChart.PlotArea.Select

ActiveChart.SeriesCollection.NewSeries

ActiveChart.FullSeriesCollection(1).XValues = Worksheets("シート2").Range("V3:V8")

ActiveChart.FullSeriesCollection(1).Values = Worksheets("シート2").Range(Cells(3, 3), Cells(8, 3))
2019/08/19(月) 23:14:40.96ID:0TFEcX9a0
>>703
シートを指定せずにセルを指定してるから
2019/08/19(月) 23:16:02.88ID:0TFEcX9a0
シート名.Cells
2019/08/19(月) 23:19:13.86ID:Kd4gHXGIM
なんのCellsかを指定せんと
2019/08/19(月) 23:22:23.07ID:/B6DUDSo0
あー、そういうことでしたか!
初歩的なミスですね、、ありがとうございました!!)^o^(
2019/08/20(火) 10:43:23.94ID:Lb9pYe6wM
すいません、もうひとつ助けて頂けると嬉しいです。

ActiveChart.FullSeriesCollection(1).Name = Worksheets("シート2").Cells(3, 3)

で、参照先のセルにはユーザー定義にて"8月19日"のように◯月◯日形式で表示させていますが、
グラフ凡例には2018/8/19のように表示されてしまいます。

凡例にも参照先のセルと同じように◯月◯日形式で表示させる事は可能なのでしょうか?
2019/08/20(火) 11:09:16.51ID:rI3Ok1/U0
左辺よくわからんけどString型っぽいから
Worksheets("シート2").Cells(3, 3)を
Worksheets("シート2").Cells(3, 3).textにするとか
2019/08/20(火) 11:34:51.82ID:gC7P9E5oM
>>708
グラフ側に、書式も合わせる設定なかったっけ
2019/08/20(火) 14:41:48.00ID:zjWJczhSd
>>708
Format(Worksheets("シート2").Cells(3, 3).Value,"MM月DD日")
712デフォルトの名無しさん (スプッッ Sd33-OqLs)
垢版 |
2019/08/20(火) 19:07:42.10ID:a4NGfQR+d
この程度の事も解決出来ないなんてセンス無さすぎだから職を変えた方が良い
2019/08/20(火) 20:10:24.14ID:Lb9pYe6wM
>>709-711
ありがとうございます!なんとか出来ました!
助かりました〜、思い通りに走ってくれて嬉しい〜
2019/08/20(火) 20:11:19.07ID:Lb9pYe6wM
>>712
最初は誰もが皆初心者という事で許してくださいませ!
2019/08/20(火) 20:40:08.64ID:rBqV29v90
>>714
そいつただの荒らしだから相手しなくていい
2019/08/21(水) 14:26:40.58ID:3vArKtvAM
VBAとVB.netの違いって何?
2019/08/21(水) 14:30:54.32ID:4OnBvdVtM
なんだろうね
ググってみるとわかるかもしれない
2019/08/21(水) 15:08:20.30ID:3vArKtvAM
やかましい
719デフォルトの名無しさん (ワッチョイ 298e-2nrJ)
垢版 |
2019/08/21(水) 16:13:42.94ID:DR/m4EzU0
ID:3vArKtvAM

ゆとりの馬鹿は早く死ね
2019/08/21(水) 16:17:07.75ID:fu57+dJz0
>>716
「.net」ドットネットというのは便利な関数がめちゃくちゃたくさん入ってる箱
マイクロソフトががんばって作った

それがVBから一発で呼び出せるように準備されてるのがVB.net
別にVBAからでも使おうと思えば使えるけど調べるのが大変
2019/08/21(水) 17:27:53.89ID:gVbfBf0Fd
>>720
その説明は...
ちょっとマズいんじゃね?
2019/08/21(水) 20:02:36.72ID:G939Yiu90
>>716
VB.netをOffice特化にしたのがVBA
2019/08/21(水) 20:07:15.59ID:gVbfBf0Fd
>>722
オイオイw
2019/08/21(水) 20:16:48.70ID:UWHhP4Rfa
それでいいよ
VB.NETの方が早く消滅しそうだし
2019/08/21(水) 20:27:43.70ID:u1HjpT+T0
VBAはPython以上に難しい。
2019/08/21(水) 20:51:45.74ID:lLmU49+5M
いやいや、VB6そのものだし
2019/08/21(水) 21:27:40.88ID:UWHhP4Rfa
歴史的経緯を知らないと理解できない変な制限や仕様が多い
そういう意味ではかなり難しい
2019/08/21(水) 21:36:56.28ID:yHZlY2VU0
というか単純に古すぎる
2019/08/21(水) 22:58:52.93ID:6FMyMBWp0
Python vs Excel 五番勝負 - 仕事で使えるのはどちら? 2019/08/21 14:37 クジラ飛行机
https://news.mynavi.jp/article/zeropython-53/

第一回戦 - どちらが気軽に使えるか?【判定】気軽に使えるのは、Excel。ただし、
Excelは有償。また双方ともWebブラウザからも使えるなど利便性は互角。
第二回戦 - CSVファイルが見やすいのは?【判定】美しく表示されるのは、Python。
ただし、Excelは汎用用途に特化しているのに対して、PythonライブラリがCSVファイルの
読み込みに特化していることが理由。
第三回戦 - グラフが作りやすいのは?【判定】引き分け。マウス操作で直感的に操作
できるのはExcelだが、Pandasやmatplotlibのライブラリに習熟していれば、Pythonでも
簡単に描画できる。
第四回戦 - 複雑なグラフが作りやすいのは?【判定】引き分け。
第五回戦 - 集計してみよう【判定】処理が複雑になればなるほどPythonが優勢。
2019/08/21(水) 23:06:25.04ID:t1IwCgGE0
>>727
> 歴史的経緯を知らないと理解できない変な制限や仕様が多い
32KB縛りとかあるけど、言うほど制限多いか?
具体的に数件挙げてみてくれる?
731デフォルトの名無しさん (ワッチョイ 517c-yBk9)
垢版 |
2019/08/21(水) 23:17:16.37ID:ou2s2vhN0
事務職がPythonやり始めたら自分でシステム作って回せるからシステム屋なんていらないよね
2019/08/21(水) 23:49:02.48ID:yHZlY2VU0
>>731
と思うだろ
ネットワークにセキュリティにハード等次々と恐ろしい壁が立ちはだかる
極めつけは社内のお局さま
「いままでこうやってきたから」
2019/08/22(木) 01:27:44.72ID:Oq4Y6cV40
セキュリティはプロに委託しないとまずいだろ
あれ対人戦だから
2019/08/22(木) 07:51:00.42ID:UEI1uExP0
>>732
それ
最後の1行
それで全てが終わるんだわ
2019/08/22(木) 12:34:15.51ID:MtNZNIvl0
そういう問題じゃないな
インフラこそ企業による差異もなく誰がやっても同じで雑事として他人任せでいいもの
経験値がないとスパゲッティ化して要件変更に対応できなくなったり、直せなくなったり
あるいは処理速度、使いやすさ(業者にも上手い下手あるが)
そもそも業務要件自体がSEが入らないと整理できなかったり、入って初めて抜けが発覚したり

「作れるか否か」と「言語仕様」に相関があると思ってるのが素人
もし「作れる」なら、他の言語でも作れたはず
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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