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/06(火) 01:47:40.96ID:jLnmJ2DC0
DOSは演算子で分かれてるんだよな
==は文字、EQUは数値
&””が高速なら、専用演算子があればもっと高速になるような
ちなみにStrCompも遅いし、Nullはエラーになる

ちなみにDOSもNull問題と似たような<ECHO は OFFです。>問題があって、
やはり”%HOGE%”==””みたいな、文字連結しながらが標準
2019/08/06(火) 01:52:00.75ID:nCnvS7DE0
echo.%abc%
2019/08/06(火) 05:36:32.23ID:GHPQhf970
全角英数字やめようよ
2019/08/06(火) 07:12:51.81ID:vRSgvXkj0
>>589
あまりにコードが長いので、Pythonにするわ。
597デフォルトの名無しさん (ワッチョイ 75f1-xVkp)
垢版 |
2019/08/06(火) 10:15:51.32ID:AyLoeOe80
タブブラウザで新しいタブに追加する方法はあれから発明されましたか?
598デフォルトの名無しさん (ワッチョイ ad7c-nSnx)
垢版 |
2019/08/06(火) 11:43:42.12ID:fqxmaW9H0
VBAからJavascriptを操作
2019/08/06(火) 12:11:42.24ID:ANeL+6+I0
>>595
半角カタカナもな・・・
2019/08/06(火) 19:08:40.09ID:kWi2YXzG0
zenkaku mojimo yameyouze
2019/08/06(火) 22:24:53.84ID:nCnvS7DE0
Win95のハンカクからゼンカクになった時はえらく間抜けに見えたものだ
2019/08/06(火) 22:44:49.97ID:Uq1zh0Vl0
?
2019/08/07(水) 23:19:02.03ID:OP2ywupH0
JSObjectのaddAnnotで、PDFに注釈付けてるんだけど、
getProps → プロパティ変更 → setPropsで、
何故かtextSizeだけが反映されない。
他の、strokeColorやcontentsは反映されるのに。
何でだろう?
エラーも出ないし。
直接setPropsなら設定出来そうなんだけど、
引数の順番がわからん。
2019/08/07(水) 23:21:30.53ID:OP2ywupH0
↑ちなみに、typeとtextSizeを同時に設定しようとすると、サポートされていない云々のエラーが出るので、
先にtypeを設定してからtextSizeを設定するようにしてる。
2019/08/07(水) 23:49:11.47ID:OP2ywupH0
↑解決はしてないんだけど、おそらくこれしか無いだろうと思われる答えを見つけたので、一応自己解決。

ググったら、海外でも同じ現象が起きている人が何人かいて、
自動翻訳を頼りに調べたら、「そこだけJavascriptで書け」ってのが答えらしい。

なんでだよwwww
2019/08/09(金) 02:28:12.10ID:Sa/tT/Cw0
マウスが滑って列幅やグラフをいつのまにかズラしてしまう心配

ActiveSheet.Protect Contents:=False, UserInterfaceOnly:=True
どうも、Contents:=True にしないと列幅固定できない様子

でも Contents:=False にしないと、
ActiveChart.Axes(xlValue).MaximumScale = 100
こういうのでエラーになる
(DrawingObjects:=True は関係ないっぽい)

とりあず Contents:=False でグラフのズレだけは防止できるので列幅は諦め中
Workbook_SheetActivate で保持して Workbook_SheetDeactivate で戻すとか
そういうことはなんとなくやっちゃいけない気がする
2019/08/09(金) 22:26:35.64ID:6C2oLUnF0
グラフはなぁ・・。
間にDoEvents挟むと収まる謎のエラーとか、ワケワカラン。
2019/08/09(金) 22:39:48.74ID:HA0wV+Cx0
DoEventsはExcelでなんか処理がたまってメモリが爆発するのを回避してるんだろうなぁとかポインタが暴発してるのかなぁとかふんわりと考えている
2019/08/10(土) 15:00:29.70ID:70gCQNsL0
配列に、大量のセルの値を一気に入れると、メモリ不足のエラーが出るけどさ、
行が65536から1048651に増えた時点で、やばいって気づかなかったんかい!
2019/08/10(土) 15:01:14.35ID:70gCQNsL0
すまん、雑談スレと間違えた。
2019/08/10(土) 15:41:05.83ID:UG670C7Ka
VBAは既に非推奨になっていて今後改良されることもExcelの仕様変更に追従することもない
ヤバいとしたら未だにVBAを使っていることがヤバい
2019/08/10(土) 16:12:09.58ID:6zXh0uMNM
Excelに標準でついてるから使ってるだけ
2019/08/10(土) 16:39:23.75ID:uXgY3OKMM
>>611
>VBAは既に非推奨になっていて
詳しく
2019/08/10(土) 19:55:14.58ID:Um+tCRmgr
Excelにpythonが載るらしい事と関係ある?
2019/08/10(土) 20:56:10.58ID:JqqZRPld0
乗らないよ
アドインで作るならpythonせもC3でも書ける
2019/08/12(月) 08:16:20.47ID:rWCvfjYy0
環境の仕様上、仕方なくexcel_vbaからedgeを操作するコードを書く必要があります。
ieのようにcom?ole?オートメーションより操作する方法が用意されていないことが分かりました。

結果的にwebdriver経由以外は操作不可という認識です。
>>589の方も書かれている通りなのですが、
楽をする意味でもseleniumbasic+webdriverの組み合わせが最善なのでしょうか?
617デフォルトの名無しさん (スプッッ Sdfa-k+MG)
垢版 |
2019/08/12(月) 08:43:02.45ID:jMLB7Ls7d
>>616
Javascriptにしとけって
なんでわざわざ難しくするのか理解出来ない
2019/08/12(月) 08:49:36.79ID:pwPFXa0Y0
jsを管理ツールにぶっこんで動かすほうが100倍早そう
619デフォルトの名無しさん (ワッチョイ 7df1-6/mF)
垢版 |
2019/08/12(月) 09:35:57.54ID:DZttgA6c0
Jacascriptならタブブラウザのタブにページを追加することはできますか?
2019/08/12(月) 10:01:18.74ID:pwPFXa0Y0
>>619
一行
window.open('http://www.yahoo.co.jp', '_blank');
2019/08/12(月) 10:03:33.42ID:1s6J+agPa
「環境の仕様上、仕方なく」って
そんなに難しい日本語だっただろうか?
JavaScriptは理解出来ても日本語が弱いなら
とりあえずJavaScript板から出て来るなと
622デフォルトの名無しさん (ワッチョイ 7df1-6/mF)
垢版 |
2019/08/12(月) 10:06:01.90ID:DZttgA6c0
>>620
ありがとう。ところでVBAからJavascriptはどうやって呼び出すのですか?
2019/08/12(月) 10:15:28.94ID:pwPFXa0Y0
>>621
回答してあげれば?

>>622
あぁ、すまん
JavaScript疑似プロトコルを使うのが楽だと思う
https://www.vba-ie.net/ie/javascript.php

「IE(InternetExplorer)のJavascriptを実行するサンプルコード」
の部分

要はURLに
javascript:〜
とjsコードを書いてページ遷移させようとするとコードを実行できる。もちろんページ遷移はしない
2019/08/12(月) 15:17:47.26ID:w42U52pdd
>>616
COMオートメーションで操作できる。
Edge内の部分にIE相当がいる。
2019/08/12(月) 15:22:43.84ID:w42U52pdd
internetexplorer_serverがその部分。
2019/08/15(木) 07:57:00.06ID:itT4sC0lp
IEページ内の特定文字の表示されたリンクをクリックする簡便な方法ありませんか?
2019/08/15(木) 08:19:26.16ID:itT4sC0lp
>>626
漠然としすぎてたので少し補足します
すでに開かれたIEで、
特定の文字列の入ったリンククリック
特定の文字列の入ったボタンクリック
ラジオボタンクリック
検索窓に文字入力
ダウンロードボタンをクリックしDL画面から保存
この流れを実行したいですどうかお助けください
2019/08/15(木) 09:22:54.15ID:C/2yP5k80
そういう自動化は自力で調べてやるもんだ
2019/08/15(木) 10:02:29.24ID:pn7G4suB0
その程度ならちょっとググれば全部出てくるでしょ
このへん一通り読んだら?
https://www.vba-ie.net/
http://www.ken3.org/cgi-bin/group/vba_ie.asp
2019/08/15(木) 10:07:22.52ID:1u/FSOBg0
簡便ってどのレベルかわからんけど、
getelementsbytagname("タグ名")(0).clickより簡単なのは知らん。
2019/08/15(木) 12:35:46.51ID:itT4sC0lp
>>627
なんとか途中までは出来ました、ありがとうございます
ただ、ダウンロードダイアログが出るまで待機する処理がわかりません、おたすけください
2019/08/16(金) 01:00:49.86ID:R9HO/Wkcp
>>631
ダウンロードウィンドウ出るまで待機&出たら保存クリックのやり方がどうしても思いつかない・・
633デフォルトの名無しさん (ワッチョイ 298e-2nrJ)
垢版 |
2019/08/16(金) 03:05:47.27ID:mEybPnb20
>>631
馬鹿丸出し
2019/08/16(金) 10:08:51.17ID:2LlAcZB1d
URLDownloadToFile使えないのけ?
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"
だけでも立派にオブジェクト指向
問題はオブジェクトを操ってる感覚が少なすぎることかもな
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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