Excel VBA 質問スレ Part69

■ このスレッドは過去ログ倉庫に格納されています
2020/12/13(日) 00:22:23.67ID:Fd224klc0
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付ける

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

※前スレ
Excel VBA 質問スレ Part68
https://mevius.5ch.net/test/read.cgi/tech/1598756127/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2021/02/27(土) 20:28:08.24ID:9QiTc1mX0
>>777
やっぱりweb系のプログラミング知識がないと無理っぽいですかね
自分はさっぱりなので、そっち系でも聞いてみます。
2021/02/27(土) 20:46:04.22ID:Ydjbk0QN0
ってそれExcel2013?
2019だとどちらも見えていて、
Table4が自動でTable5が固定になっている。

もし2019が使えるなら、QueryTables.Addじゃなくて、
Queries.Addでやってみるといい。
2021/02/27(土) 21:38:16.92ID:9QiTc1mX0
>>779
わあああ!できました!!!
自分のだと、テーブル5だと自動で、テーブル6が固定でした!!
固定と自動でテーブルずらすだけで良かったんですね。
本当に助かりました;;感謝!
2021/02/27(土) 21:44:40.46ID:9QiTc1mX0
なるほどー
URLの違いじゃなくてテーブル数が増えていてテーブルの変更でレイアウトを別々で読み取っていたんですね
今後も参考になる知識でめっちゃタメになりました!
いやーID:Ydjbk0QN0さんの着眼点のおかげで助かりました。感動です
2021/02/27(土) 23:59:01.77ID:W4zZ+WShM
いいってことよ(≧∇≦)b
2021/02/28(日) 00:38:35.67ID:1YMxSz2W0
XMLを取得したあと、要素を取得するためにgetElementByIdを使用する方法は無いでしょうか?
XMLでは仕様上IDの規定が無いのでこのメソッドは無いようですが、
対象にしているデータはIDが重複していない(タグ名は重複)ことが分かっています
2021/02/28(日) 08:33:47.20ID:0O+t6o860
やったことないけどXMLをブラウザーで開いて取得とか
2021/02/28(日) 13:49:51.41ID:0oELj/fSM
>>783
単なる属性値だからxpathで属性検索すればいいんじゃね?
2021/02/28(日) 17:16:05.41ID:1YMxSz2W0
>>785
ごめんなさいこれで出来ました
コーディングミスしてただけだったようで…
2021/02/28(日) 23:20:44.51ID:Kw7HIYRo0
テーブルを使った列転記について質問です。
オートフィルターを使って、
特定条件に合致する列のみを別シートに転記するvbaを作成しています。
検索条件が1件でもヒットすれば、うまく動くのですが、
検索条件の結果が0件の場合、なぜかテーブル内にある全ての列がコピーされてしまいます。
解決方法をご教示いただけたら幸いです。

With Range("A3").ListObject
   .Range.AutoFilter 1, "佐藤"
.Range.AutoFilter 2,"2020"
.Range.AutoFilter 3, "土地"

.ListColumns(4).DataBodyRange.Copy Sheets(2).Range("B12")
.ListColumns(5).DataBodyRange.Copy Sheets(2).Range("D12")
.ListColumns(6).DataBodyRange.Copy Sheets(2).Range("C12")
End With
2021/02/28(日) 23:38:01.73ID:aFXd9lq10
0の時コピペしない
2021/03/01(月) 03:56:15.13ID:eH/icf8Z0
Countifsで、1件以上の時 と
条件分岐させるのが読み返してわかりやすくなるんでね
2021/03/01(月) 16:05:10.88ID:SmQDGBhxa
前回の表示が残っているならメッセージボックスとか出すといいかも
791デフォルトの名無しさん (シャチーク 0C76-CIDx)
垢版 |
2021/03/02(火) 13:09:41.26ID:hWjLfumtC
(1)A1〜A100セルにそれぞれ0001.txt〜0100.txtという文字列が格納されている
(2)ファイルサーバ上(\\share\txt)に(1)の名前と対応する実際のテキストファイルが格納されている

→この場合、B1〜B100セルの中に(1)と対応する(2)のテキストファイルの中身を自動で入力させたいのですが、どのようにすれば可能でしょうか。。
792デフォルトの名無しさん (ワッチョイ 0b8e-v+iG)
垢版 |
2021/03/02(火) 13:28:23.53ID:xn7W4wyt0
丸投げか?
まずは自分で作ってみろよ
2021/03/02(火) 13:38:46.86ID:Myd7KGhQ0
先生が添削してくれるみたいです
2021/03/02(火) 15:10:40.09ID:S4zyTxBwM
A1セルに書かれたファイル名を読み取る
そのファイル名を開く
B1セルから書き込む

を繰り返せばいいと思います
2021/03/02(火) 17:47:07.08ID:stzBjdlCH
いつもの人
2021/03/02(火) 19:42:52.19ID:h1fr2K930
>>791
どうでもいいがB1〜B7へは入力じゃなくて出力って言った方がいい
2021/03/02(火) 23:19:45.83ID:yDNF8xvg0
>>791
マクロの自動記録
2021/03/03(水) 02:30:35.83ID:hWQCqBl50
>>720ですが、解決というか悪化したので一から作り直すことにしました。

原因と思われていたフォームモジュールを解放しても常時コンパイルエラーが発生するようになりました。
思い切って順に全て解放しながらコンパイルしてみたところシートを含めた全てのモジュールを
削除して新規シート一枚の状態でも発生する始末です。

>>733
試してみたところ、使用できない文字を使った時と同じ「不正なオブジェクト名」だと怒られます。
(もし重複なら「既に〜使われています」)
コンパイルエラーの原因にある「ユーザー定義型」というのはフォームのモジュール名の事だったのかも・・・
ちなみに原因らしいフォームのモジュール名を変えても同様のコンパイルエラーは発生し、
その新しいモジュール名でも同じ症状が出るようになります。

>>732
>>何をもってライブラリと言ってるのかは分からん

すみません。参照設定にあるCOMコンポーネントの事です。
APIはSleepしか読み込んでおらず、
コントロールもリストボックスとコマンドボタンとオプションボタンのみです。

元の環境で実行も出来ませんでしたが、
テストで色んなモジュールの解放してインポート、モジュール名変更して戻すを繰り返していると、
プロジェクトのコンパイルは同じエラーがでるが、(環境問わず)実行は可能という状態になりました。
コンパイルのテストしかしていなかったのでどのタイミングで実行可能になったのかは分かりませんが、
引き続き調べてみます。
2021/03/03(水) 02:46:34.41ID:hWQCqBl50
>>733
レスに追加です
名前の変更では「不正なオブジェクト名」と出ますが、その名前でのインポートは成功します。
インポート出来れば自由にフォーム名を変更したり戻したりできました。

>>735
見てみましたが、特に変わりはないようです。

>>738
フォームモジュール以外を全部移したところコンパイルが通りました。
同じフォームを作って再発すると怖いので、
フォームに有ったコントロールはシート上に再現して、とりあえずこれで運用してみることにしました。
2021/03/03(水) 21:19:07.61ID:CdcHt2GZ0
シートの中身を初期化しようと、範囲選択してClearcontentしたら処理が滅茶苦茶重くて
他のどの処理よりも一番重いまであります
セルの中身をクリアして真っ新にしたいんですが、軽くなる方法とか削除するのに他のいい方法は何かありますか?
2021/03/03(水) 22:01:26.45ID:x1QDDRPj0
画面更新切ってないとか
2021/03/03(水) 22:53:36.00ID:cY/9Er0+0
場合によってはシートごと削除&同じ名前のシート作成orテンプレで用意していたシートをコピー
803デフォルトの名無しさん (スプッッ Sd02-rjlL)
垢版 |
2021/03/03(水) 23:58:49.06ID:zTCiutcbd
>>800
Clearcontentsじゃなくて単に「削除」に時間が掛かってるだけ説。
どうしようもないExcelのバグ、俺もこの前株シミュレーター作ってて直面した。
たかだが3万行×1列消すのに10分掛かる糞仕様。
どういうわけかD列とE列に入っているがD列を消してからだとE列が、E列を消してからだとD列がそうなる。
2007と2013入れてたがどちらでも同じ結果。スプレッドシートでならサクっと消せた。
2021/03/04(木) 00:37:39.40ID:0V1y42950
質問させてください
業務用PCのためDsoFramerのインストールを容易には出来ない環境で、ユーザーフォームにワークシートを表示するシステムを作成するのは厳しいでしょうか
2021/03/04(木) 02:10:45.74ID:EcELbNCH0
レスありがとうございます
画面更新は勿論切ってます
ただ初期化したいだけなのにアホみたいに時間が掛かるので、同じ使用のシートを作る処理にする事も検討します
2021/03/04(木) 06:47:21.46ID:yRtnuXOv0
変数に入れてから消すとか、同じ選択範囲の配列(空白)ぶっこんでみてもだめかな
2021/03/04(木) 10:44:48.81ID:B7/1q6yvH
一気に何万行も消さずに100行ずつとか小分けしたら軽くなったりしないのかな
2021/03/04(木) 10:49:05.92ID:1zCrSMV60
ClearContentsで重かったことなんてないなあ。
めんどくさくてVBAじゃなくマクロで作って選択範囲小分けのまま放置してるからかな?
2021/03/04(木) 11:15:36.75ID:fKYNPqjU0
>>800
ふーん
範囲指定して消したらどう?
後、最近のEXCELはひょっとして
セルの内容が変わったら
再計算しているかも知れないから
一応自動計算も切ってみたら?

セル値が変わった時のイベント拾って
何かやってるとかいうオチだったら
問題外だけど
2021/03/04(木) 11:36:50.11ID:EtHhkpeQ0
スレが見つからなかったのでこちらで失礼します
C8の値が$100にならない理由を教えて下さい
https://i.imgur.com/XLERVNc.png
2021/03/04(木) 11:53:16.96ID:w9aQykj0M
関数変わっちゃうけど代案を出すなら
VLOOKUP(B8,B1:C5,2,FALSE)
とかどう?
2021/03/04(木) 12:01:03.02ID:1zCrSMV60
なんだこりゃ
LookUpって欠陥あるんかね
2021/03/04(木) 12:21:33.50ID:w9aQykj0M
LOOKUPって近似値を検索する関数だから文字列探そうとすると上手くいかない事が多かった気がする
だから面倒臭くなってVLOOKUP,HLOOKUPを使うように癖をつけた記憶がある
2021/03/04(木) 13:49:43.11ID:1PJYOy7Jr
これ思い出したわ

https://i.imgur.com/x2uWdkO.jpg
https://i.imgur.com/fnrEWzZ.jpg
2021/03/04(木) 13:50:26.95ID:FInty+sk0
新規作成してから試してみたけど$100になったな
2021/03/04(木) 14:14:53.10ID:Kq0/JwOuM
>>810
C8 が "もり " みたいに空白入ってるとかじゃね?
2021/03/04(木) 14:47:21.95ID:skJUg0gJ0
検査範囲の値は昇順にしてください
そうでなければ正しい値はえられません
並んでないときはVLOOKUPやHLOOKUPを使ってください

という旨のことをヘルプに書いてある。
2021/03/04(木) 16:50:41.38ID:b7V1SruDM
LookupにもVLookupやHLookupみたいに検索方法のオプションあればいいのにね
まあMSとしてはExcel最新版にしてXLookup使ってねって言うことなんだろうな
2021/03/04(木) 18:46:57.78ID:EcELbNCH0
初期化で若干重たいのは取り敢えず諦めることにして、外部のCSVをクエリテーブルで読み込んでから
Refleshでシートに書き込んでるのですが、この書き込む前の段階で、クエリテーブル上で不要な列のデータを削除する事って可能でしょうか?
不要なデータが大量に混ざっているので、全部まとめてシートに書き込むとやはり重たいので軽量化したいのですが……
820デフォルトの名無しさん (ワッチョイ 0b8e-v+iG)
垢版 |
2021/03/04(木) 19:49:49.80ID:V/SEJayw0
いつものあいつだな
2021/03/04(木) 20:49:35.42ID:yRtnuXOv0
lookup系よりindexmatch使うことが多いな
2021/03/04(木) 20:55:32.61ID:INwEijJcM
lindexmatch使いアピールしてはじめて自称excel上級者として一人前
2021/03/04(木) 21:28:29.09ID:Cjl2zDCE0
昔はユーザー定義関数作ったけど、今はXLOOKUPがある。
2021/03/04(木) 22:18:19.39ID:1zCrSMV60
IindexMatchなんぞ使わず、
列をボーンとコピー挿入してVLOOKしてこそ一人前
2021/03/05(金) 05:33:04.89ID:eGeMRqFI0
いつものあいつて何?
2021/03/05(金) 09:21:20.59ID:n//DPju00
とうしつの自己紹介
2021/03/05(金) 21:02:22.60ID:s30llsqJ0
臭う質問者の総称
2021/03/06(土) 12:22:29.01ID:yJvSdslEH
実際に使ってないような質問をして答えさせて悦に入る人
2021/03/07(日) 10:26:06.26ID:FD1rrusm0
webページからデータをとってきてセルに格納するマクロを書いています
msxml2.xmlhttpというのを使うとページの内容をgetすることができるのですが、これはどうやらieを利用しているようです
ieはいつなくなるかわからないので他の方法があれば今のうちから変えておきたいのですが、vbaで使える方法で他にどういうのがあるか教えてください
2021/03/07(日) 10:30:32.44ID:ZX3XyXetM
IEはなくなるのにVBAは大丈夫だと思う理由は?
言語もPythonとかにしてBeautifulSoupやSeleniumでも使った方がよい
2021/03/07(日) 10:37:32.50ID:4ExLqYxe0
パワークエリはどうかな
2021/03/07(日) 10:42:14.29ID:TW4NSoKtM
無くなったときのビジネスインパクトはIEよりもVBAの方が遥かに小さいから、MSがどっちか先に切るとしたらVBAだろう
最悪VBAは切られてもExcelのバージョンを塩漬けにして運用できなくはないしな
2021/03/07(日) 11:28:15.07ID:zpOLYdVD0
>>830
まあそのうちpythonに移行するんでしょうけど、今は慣れない言語を一から勉強してる暇はないので
それで、あなたはvbaでやる他の方法を示せないということでよろしいですか?

>>831
どうかな、じゃなくてどうやるのか教えてください
2021/03/07(日) 13:02:06.24ID:JbGOdXToM
704 名無し~3.EXE sage 2021/03/01(月) 20:11:45.17 ID:hZCKpI4x
デスクトップ版のVBAマクロに替えてWeb版はOfficeスクリプトがプレビュー中(現在は法人向け365のオンラインのみ)
https://docs.microsoft.com/ja-jp/office/dev/scripts/resources/vba-differences

705 名無し~3.EXE sage 2021/03/01(月) 20:16:10.79 ID:hZCKpI4x
Excelの新自動化ソリューション「Office Scripts」プレビュー版が登場
https://ascii.jp/elem/000/004/000/4000725/

Excel操作をJavaScriptで記録 〜Microsoft、“Office Scripts”をパブリックプレビュー
https://forest.watch.impress.co.jp/docs/news/1227931.html
2021/03/07(日) 13:04:56.15ID:JbGOdXToM
788 名無し~3.EXE sage 2021/03/03(水) 18:26:40.20 ID:5NVXQTtc
Excel関数ベースのプログラミング言語「Microsoft Power Fx」登場 オープンソースで公開予定
https://www.itmedia.co.jp/news/articles/2103/03/news080.html

Microsoft、自社製RPAツールを全Windows 10ユーザーに無償提供 マウスクリックやキーボード入力をGUIで自動化
https://www.itmedia.co.jp/news/articles/2103/03/news096.html
836デフォルトの名無しさん (ワッチョイ cb8e-3QAQ)
垢版 |
2021/03/07(日) 13:46:03.75ID:5FBwssoR0
>>833
なんだただの馬鹿か
煽って聞きだそうとしてもこのスレはいつものあいつで耐性ができた人ばかりだから無理
2021/03/07(日) 14:06:40.31ID:4ExLqYxe0
触れないようにしてたけど辛辣で草
2021/03/07(日) 17:25:15.30ID:CYFzWFvV0
>>836
答えられないならレスしなくていいよ
無能に用はないから
839デフォルトの名無しさん (ワッチョイ cb8e-3QAQ)
垢版 |
2021/03/07(日) 17:51:15.16ID:5FBwssoR0
>>838
悔し買ったか?馬鹿
2021/03/07(日) 18:27:16.06ID:REgzkSN70
な、age厨だろ?
2021/03/07(日) 20:22:49.89ID:l5mf+U2f0
反論できなくてアゲサゲ言い出す奴は見苦しい
2021/03/07(日) 21:30:58.30ID:iHuYVCVV0
言われて下げてやんのwww
843デフォルトの名無しさん (ワッチョイ cb8e-3QAQ)
垢版 |
2021/03/07(日) 22:58:33.05ID:5FBwssoR0
馬鹿は自分が相手にしてるのはただ一人だけと思い込む
2021/03/08(月) 05:43:53.99ID:bSh0ioyn0
な、age厨だろ?
2021/03/08(月) 07:03:19.05ID:+AeHqC2j0
自己紹介www
2021/03/08(月) 09:05:36.54ID:+ItxpBbz0
類友
2021/03/08(月) 09:36:00.68ID:gk28PyLU0
もはや論点なにそれ状態
2021/03/08(月) 10:52:47.61ID:TrYviUKj0
保存して閉じる処理をしても、ファイルは閉じてもExcelはとじません

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'処理
Application.DisplayAlerts = False
Application.Quit
ThisWorkbook.Close savechanges:=True
Application.DisplayAlerts = True
End Sub
これでもダメでした
Application.Quit
ThisWorkbook.Close savechanges:=True
2021/03/08(月) 11:07:15.73ID:9xs5g46P0
ActiveWindow.Close
2021/03/08(月) 11:38:58.50ID:TrYviUKj0
>>849

Application.Quit
ThisWorkbook.Close savechanges:=True
ActiveWindow.Close
これもダメでした
2021/03/08(月) 11:53:11.92ID:9xs5g46P0
Application.Quit
Application.DisplayAlerts = False
ThisWorkbook.Close savechanges:=True
Application.DisplayAlerts = True
2021/03/08(月) 11:57:13.64ID:vFSNvomr0
Application.DisplayAlerts = False
If Workbooks.Count = 1 Then
Application.Quit
Else
ThisWorkbook.Close
Application.DisplayAlerts = True
End If

とかどう?
2021/03/08(月) 11:59:04.12ID:ub+dBY/l0
>>848
何でセーブする前にEXCELのアプリケーション閉じようとしてるの?
2021/03/08(月) 12:04:00.24ID:TrYviUKj0
>>851
>>852

ダメでした。
ほかのファイルでは問題なくExcelが終了するのですが
Private Sub Workbook_BeforeClose(Cancel As Boolean)
を使うマクロのときだけ、閉じなくなるような気がします。関係ありますかね?
2021/03/08(月) 12:23:48.80ID:Qtlmv4rK0
>>853
2021/03/08(月) 12:30:21.22ID:ub+dBY/l0
わざわざセーブメッセージ叩き潰して
ブック捕まえたまんまにして
アプリケーション閉じようとしてるんだから
わざと閉じられないようにしているようにしか見えない
2021/03/08(月) 12:44:18.76ID:Qtlmv4rK0
savechangesでも無限ループしてそう
2021/03/08(月) 12:56:18.62ID:vFSNvomr0
>>854
BeforeCloseにApplication.Quit記述してイミディエイトからThisWorkbook.Closeを実行してみたけど問題なく閉じたから何か別の物が干渉してる可能性があるかなぁ
2021/03/08(月) 13:04:41.43ID:9xs5g46P0
めっちゃ古いバージョンとかじゃないだろうな
2021/03/08(月) 13:32:58.59ID:TrYviUKj0
>>855
当初はこれでしたが、ググったら、Application.Quitを上に書くらしいです

ThisWorkbook.Close savechanges:=True
Application.Quit

>>856
Application.Quit
ThisWorkbook.Close savechanges:=True
だけでも同じでした

>>857
他に保存する方法を教えてください

>>858
自分でも試してみましたが、確かにちゃんと閉じますね。他の干渉を疑ってみます。

>>859
2019です
2021/03/08(月) 13:49:36.30ID:9xs5g46P0
Application.EnableEvents = true
を頭に付けてみるとか
2021/03/08(月) 18:00:51.59ID:+0kCYoNG0
そこでやるべきことは ThisWorkbook.Save だけだと思うんだが
2021/03/08(月) 18:30:55.70ID:bSh0ioyn0
コマンドプロンプトでtaskkill /f /im excel.exe
2021/03/08(月) 19:53:15.72ID:Awv++sSE0
Quitは最後では
変なExcelプロセスが残ってないか確認した方がいいのでは
2021/03/08(月) 21:03:57.98ID:53ng3r6C0
VBEでVBAを使って出来たものがマクロであってる?
本屋にVBAの本とマクロの本があるけど同じことと思っておk?
2021/03/08(月) 21:12:54.65ID:ub+dBY/l0
>>865
半分正解
2021/03/08(月) 21:17:42.97ID:ub+dBY/l0
「VBEで作ったものはマクロ」
これは合ってる
「VBAとマクロは同じことを言っている」
マクロにはVBAtで作られたもの以外に
4.0マクロと言うものが有ってだな・・・
まぁ、あまり気にしなくても良いかもしんないけど
2021/03/08(月) 21:34:20.02ID:B96zl28N0
マクロ
スクリプト
関数
これらはプログラムのひとかたまり
厳密に区別しずらいけどそれぞれ
ニュアンスの違いはある
869デフォルトの名無しさん (アウアウクー MM4f-YFKC)
垢版 |
2021/03/08(月) 21:58:36.85ID:U/cFdqiVM
>>865
VBEはエディタ。Excelの場合はVBAとマクロは同じ意味で使われる。ExcelマクロがExcel VBAのコードで表現されるため。
2021/03/08(月) 22:10:13.99ID:Awv++sSE0
>>867
なんかいろいろ違うぞ
2021/03/08(月) 22:16:46.29ID:Dj6nESKZ0
関数は全然違うだろwww
2021/03/08(月) 22:42:26.89ID:53ng3r6C0
>>866
まだ表紙なのに理解半分かw

>>867
4.0マクロネットで見て使ったこと1回だけあるけど関数みたいなやつだった記憶。

>>868
スクリプトも便利そうですよね。
デスクトップかっこ良くするフリーソフトに自由にスクリプト使えますって書いてあって挫折した。。

>>869
出来たもんがマクロでVBAが設計図でVBEが紙と鉛筆か。

みんなありがと、ネットにも解説サイトあるけど違うとこ見ちゃうから本買ってくるわ。ノシ
2021/03/08(月) 23:14:12.98ID:u4CRr3CF0
そういえばvbaをjsで書ける世界まだなんだっけ?
gasみたいな感じで書けないかな
2021/03/08(月) 23:18:26.32ID:hUWITx/G0
WScriptのJScriptでExcel使えるだろ
2021/03/09(火) 00:19:47.43ID:fLnH8jKyM
>>873
>>834
2021/03/09(火) 02:53:50.15ID:uNAjD4zcH
微妙に違う気がするなあ
VBAはプログラミング言語の名前(の略称)。単語と文法が書いてあるだけの辞書みたいなもん
その言語で書かれた物がマクロで、むしろ設計図はこっちが近い
VBEはマクロの作成を手助けするツール、紙と鉛筆って考え方はだいたい合ってる
で、マクロの中でも結果を一組だけ呼び出し元に返すように作られてるのが関数
2021/03/09(火) 05:15:21.29ID:suvlK62N0
機能とワークシート関数とか全くわからん
操作なんてVBAで良いじゃん
周りでもそういった人いるしさ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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