Excel VBA 質問スレ Part55
■ このスレッドは過去ログ倉庫に格納されています
ExcelのVBAに関する質問スレです コード書き込みや作成依頼もOK ※前スレ Excel VBA 質問スレ Part54 https://mevius.5ch.net/test/read.cgi/tech/1527334657/ >>748 C#のusing的な使い方になるってこと? >>750 単に End Withのタイミングで Class_Terminate が呼ばれるってだけだけど Sub・Functionの終了を待たずにそのタイミングをコントロールできるのがいい。 >>750 なるほど、廃棄が前提ならアリやな。 でもVBA掲示板のプロっぽい風吹かしてるやつらは、廃棄する必要のないworkbookとかworksheetをワザワザwithする不思議。 >>752 VBAのガベコレは参照カウンタ方式だから、参照がなくなったら廃棄されるだけ 変数に受けても、明示的にNothing代入すればその場で解放されるはずだからタイミングのコントロールはできる >>753 そもそもWithは、単に何度も同じオブジェクト参照を書かなくて済むだけの機能だから 廃棄するかどうかとは関係ないしそんなものと絡めて使うべきではない >>755 明示的にNothing代入するのがだるいって話さ >>755 > 廃棄するかどうかとは関係ないしそんなものと絡めて使うべきではない >>748 みたいな奴ならEnd Withで廃棄されるだろ 難癖つけてるだけにしか見えん >>758 だよな vbaなんてサクッとエクセルデータをどうにかしたり印刷の体裁整える程度でいい そんなインストラクタだのガベージコレクションなんて考えて書く言語じゃない >>758 ああ、そうだな VBAではっていうより、ここでは不要だな どうせまともな議論にはならんしな >>758 ああ、そうだな VBAではっていうより、ここでは不要だな どうせまともな議論にはならんしな >>763 明確に賛成 vs 明確に反対 の罵り合いになるなら荒れても面白いんだけど、なぜかそうならんね みな本題から逸れたところで言い争う >>753 WorkbookやWorksheet等の組み込みオブジェクトであってもWithで参照保持した方が良い場合もある 実際比べてみると分かるがオブジェクト変数を使うとメモリを確保する分動作が重くなるし、一つの処理の中でWithを使わず何度も同じプロパティ参照を行えばその分計算量は増える それなりに大きな配列を処理したり何百ものブックやシートを処理したりするプログラムになれば、この手の小手先の調整が大きく動作に影響したりするよ オブジェクト変数って言っても中身は参照でしょ? どんなポンコツPC使ってるんだ >>766 With なんちゃら .Hoge End With の代わりに Set ref = なんちゃら として ref.Hoge とするなら原理的に同じはずでは? アマチュアのVBAユーザーだとインスタンスと参照の概念はよくわからないんじゃないかな Java研修などでも新人が躓きやすいところだし勘違いしてもしょうがない VBA推しの人の前提条件がアプリのインストールも何もかも出来ないって会社の話でしょ? そんな会社は特殊な極一部じゃん 普通はインストールも出来るしアプリも入れれる でもそうなるとVBAを使う意味が全くなくなるから特殊な環境の話をこじつけてるんでしょ? >>770 >特殊な極一部じゃん 中小企業にばかりいればわからないかもな そこら中にあるぞ 本当にエクセルしか使わない大企業などというものが存在するのだろうか 具体的にどこの企業のことなんだ? やたらとメール重用で社内システムは古臭いwebアプリ 末端はこそこそエクセル開発ってイメージ ただの偏見だけど >>775 そんなんで仕事になるのかね? 大企業じゃなくて底辺か中小の話ではないのかそれって 大企業からwebアプリでやってそうだけど 違うんだ 共有や同時接続が決定的にダメダメなエクセルで仕事しなけりゃいけないなんで気の毒だな 大企業でも大抵は入れていいアプリはホワイトリストとかで持ってるし申請すれば大抵は通る じゃあVBAしか使えないって大前提が崩れるじゃん そしたらVBAなんて使う意味ないじゃん VBAしか使えないのに色んな工夫して凄いなぁーって とてつもなく面倒で生産性の悪い事をさせられてるんだなーって ループっても前提条件が大きく変わったんだから議論は初めてと言っても良いだろ >>775 メールは使いにくい!チャットワーク導入! →チャットワーク使いにくい! →メールへ って感じ >>779 根本的なところで根拠がないんだよ Excelが周りで使われているんだからVBAも当然使いたくなるだろう 今からVBAを覚えようとしてる人へ 他言語ならもっとシンプルで簡単にそして高速ですよ それに開発ツールも遥かに強力だしインテリセンスも抜群に効くし半分の労力で10倍の生産性があるので無意味なVBAを覚えるなんて遠回りしない方が良いですよ VBAは主に大企業で制約がとてもキツく何もインストールさせて貰えない環境で働かされてる人向けです 俺は.NETに惚れ込んでMS好きになったから、MSファミリの代表格であるExcelやVBAも好きになりたい でも、ExcelとVBAの使い道を必死に探しても、残念ながらC#やPowerShellには勝てない日々が続いている なんでもいいから、VBAコミュニティが努力して革命的な利用方法を発明してくれればいいんだけど >>784 VBAは大企業では大いに役に立つわけですな ここはVBAのスレだから VBAのポジティブなところにフォーカスしたいよね その他の言語は専用スレに行っていただくとして 大企業で活かせるっていうのは良いですよね >>786 お前が.NETに惚れ込んでいようとなんだろうとそんなのはこのスレに何の関係もない >>789 VBAのメリットや効果的な運用方法を教えてください 前提条件が崩れてアタフタしとる ちなみにお前は大企業の書類選考も通らん なので好きなだけインストール出来る環境なのにVBAでのたうちまわってる >>790 Wikipediaから引用するけど Excel、Access、Word、Outlook、PowerPointなど Officeのアプリケーション・ソフトウェアの機能を拡張できる。 Microsoft OfficeシリーズにはVBAのコード作成・編集ソフトが最初から付属している 使用を始めるにあたり、Office以外の特別なソフトの用意やセッティングを要しない。 文献やネット情報も多く、最低限の学習で誰でも手軽にプログラミングが始められる。 実行も容易。 効果的な運用方法はわかりません。 大企業の書類選考を通らない人は中小企業に就職するしかありませんね。 中小企業に就職したとしても大企業の下請けとして仕事することも在りますので 大企業で使われているVBAは中小企業でも使われることは自明なわけであります。 まとめるとVBAは大企業で大いに役立つし 中小企業でもその知識や技術は重宝されるよってことです GoogleやMicrosoft、Amazonなどの大企業ではエクセルVBAを推奨してほかのツールはインストール禁止なのでしょうか? エクセル以外は何もインストール出来ない環境だからって前提は変更で良いのね その上で実は色んな言語もIDEも試せるけどエクセルにはVBAが1番ピッタリだって事に変えとけば良い? その前提だとVBAが一番ってことにならないからダメ >>768 違う オブジェクト変数は4バイト以上のアドレス領域をメモリ上で占有する Dimとかで宣言すると、その変数に何も代入されておらず処理に全く関与していない状態でも4バイト以上消費することになる 一方、With文中で取得した参照はブロックスコープ内でしかROMを占有しない この違いは案外大きいよ 今のマシンで4バイトのメモリなんて気にする必要ないだろ ファミコンか! >>792 メリットとしては弱いかな >>795 VBAがExcelにピッタリというのは実は根拠に乏しい 本当にピッタリならVSTOやExcel Python、Excel JS APIなどといった他の言語への需要は生まれなかったはず ユーザーの素直な気持ちとしてVBAはExcelにふさわしくないのでは? という思いがあるから、他の言語への需要があるんじゃないかな >>797 大きいわけないと思いまーす >>800 それらって成功してるの?(曖昧な質問) >>797 もうやめとけ そんな微細な違いでは8:2法則に飲み込まれてパフォーマンスには影響しない そもそもコンパイルされたらどっちの書き方でも関数やプロシージャの消費するスタックサイズは同じだろう それともなにかVBAは分岐によって動的にスタックサイズを変えているとでもいうのか? そんなのは4バイトのメモリをケチるよりももっと無駄なコストだ vba、当時は言語が入り乱れていてbasicでもいいかなって感じだったけど もう今やBasicベースの言語が壊滅的すぎてな 今ならJS、python、C#どれでもいい 個人的にはweb系火事tているのでJSで掛けるとありがたい。 >>806 GoogleスプレッドはJSを採用してるね たしかに良い とある大学の情報の先生がOCamlを教えたあとに Javaを教えるとJavaは難しいですと言ってくる生徒が多いって言ってた Excelのマクロと関数型言語は親和性高いから F#とかこれから覚える人にとってはVBAよりもわかりやすいかも 優秀な言語の条件 情報やサンプルの豊富さとIDE F#なんてVBAより奇特 マイナーが好きなの? >>807 JSは本当に使いやすくていいね 昔は定数「undifined」に代入出来たりとやんちゃな言語だったけど、大分更生した vba自体は嫌いじゃないけど、折角プログラム覚えたのに、 他言語へのつぶしが効かないのがちょっと勿体無い ただ、F#はちょっと・・・ せめてGoとかで >>808 OCamlが好きなの F#はOCamlの.NETバージョンだから >>809 Goも良いよね、ミニマリズムって感じ あれ設計した人は良い意味で変態だよ もう言語ありすぎて追い切れないけど VBAの一番の問題は、馬鹿が作ったVBAをもっと馬鹿には理解できないことだろ >>811 もしVBAがなければその現象がほかの言語・環境になだれ込むんだぞ? というか90年代にVBが爆発的に売れた経緯を忘れてる 当時GUIに関してはVC++よりも開発し易かった おまいらここVBA質問スレだからな 雑談は雑談スレがあるだろ 質問したい人がしにくい雰囲気になってるじゃねーか >>814 それはVBではなくGUIフレームワークの成果だろ VBそのものは今も昔も使いにくかった > >>814 > VBそのものは今も昔も使いにくかった 具体的事例よろ >>818 言いたい事がまとまっているサイトがあったわ http://crapp.hatenablog.com/entry/2014/12/31/235842 個人的には今も昔も >E等価演算子と代入演算子が同じ。 これがあまりにウンコすぎる。本当に最悪 VBとVB.NETの区別もできないバカ → >>819 >>800 用途が全く違う。 それに大抵の言語は用途が違っていてもある程度は被ってる。 矛盾するようだが他言語で出来ることは大抵VBAでも出来る。 一方、VBAで出来ることが他言語で出来ない場合は結構多い。 他えば、IEが自らをスクレイピングさせるために専用言語を用意したとする。 そうするとVBA含めて他言語は勝負にならない。 なぜならスクレイピングする運用方法が違うから。 どちらも使用者が取得したいデ―タを取得するプログラムが出来てると仮定してPythonと架空のIE専用言語を比較するとWebを見ていて、スクレイピングしたいページが有った時にその場でボタンやメニューから出来るのと、スクレイピング用のプログラム探しを始める違い。 この差は致命的に大きい。 まず、機能が実現出来ることが一番大事。 次にスピード。 プログラミングしやすいかどうかはその後。 そしてユーザーインターフェースは一番大事な機能に含まれる。 >>821 この意見に全く同意出来ないんだけど そしてIE専用言語って何? >>821 IEの開発者ツールのデバッグコンソールから実行するjavascriptとかIE専用言語みたいなもんだけど それがあるからといってPythonやRubyでIEを操作することをやめはしない そもそもスクレイピングするのにIEを通すことなんてしないので例えが悪すぎる Web開発してるときにIEでの表示チェックぐらいか? それならなおのことIE専用言語なんて出番がない マジでスクレイピングごときになんでIEだのCOMだの持ち出さないといかんのか IEのサポート終了と同時に消える技術だってのに IE専用言語ってもしかして ActiveXの事とかの事? そうでもない? 雑談やりたけりゃ雑談のスレでやれや、ヴォケナス野郎ども >>823 違うよ。 そういうものが有ったとしたらという話。 今の開発者用ツールはWebぺージを作るためのものでスクレイピングするためのものじゃ無い。 >>823 IE専用言語があったとしてもPython使うわボケって言ってんの > スクレイピングしたいページが有った時にその場でボタンやメニューから出来る これに近いことが今でも開発者ツールでできるから具体例として挙げたの 文盲の相手マジ疲れる >>819 いろいろと賛同できる部分は多い。 だけど、等価演算子と代入演算子を分けたところで参照を返せないという仕様がネックになる面もある。 単に a = b して b を返すAssign関数を作って a = b = cのつもりでAssign(a, Assign(b, c))と書くことはできるし効率上も問題ないけど、 一般に関数Funcが Function Func(ByRef b As Variant) という形をしているとき Func(Assign(b, c)) と書くわけにはいかない。 Assign関数の返り値が大きな配列の場合は効率上の問題になる。 >それに大抵の言語は用途が違っていてもある程度は被ってる。 >矛盾するようだが他言語で出来ることは大抵VBAでも出来る。 >一方、VBAで出来ることが他言語で出来ない場合は結構多い。 VBAはλを始めとしてモダンな言語機能軒並み未実装なので、他の言語で当たり前のように出来ることがVBAでは出来ない >他えば、IEが自らをスクレイピングさせるために専用言語を用意したとする。 >そうするとVBA含めて他言語は勝負にならない。 >なぜならスクレイピングする運用方法が違うから。 >どちらも使用者が取得したいデ―タを取得するプログラムが出来てると仮定してPythonと架空のIE専用言語を比較するとWebを見ていて、 >スクレイピングしたいページが有った時にその場でボタンやメニューから出来るの>と、スクレイピング用のプログラム探しを始める違い。 >この差は致命的に大きい。 APIやドライバがするべき仕事を特定の言語やアプリ専用に組み込むとかアホの極み >まず、機能が実現出来ることが一番大事。 >次にスピード。 >プログラミングしやすいかどうかはその後。 >そしてユーザーインターフェースは一番大事な機能に含まれる。 VBAは機能の実現に手間がかかるし現実的なコストでは出来ないことも多い VBAはスピードが遅い VBAはプログラミングしにくい VBAのユーザーインターフェース(スプレッド)は ・検証が貧弱 ・誤操作でUIがすぐぶっ壊れる ・死ぬほど遅い ・描画領域の無駄が多くディスプレイが狭く感じる などUXはかなり低い >>830 ほら、λとかアホなこと言い出した。 機能のことを言ってるんだ。 ユーザ一にとってはそんなもんどうでも良いだろ。 APIやドライバ? 根本的に勘違いしてるよ。 最後の部分も殆ど分かって無いな。 VBAで出来ないことは勿論ある。 でも君は殆ど挙げられないようだ。 >>831 そりゃお前の中にしか存在しないIE専用言語と全く同じことができるわけ無いだろ ニュアンスを読み取れよめんどくせえな 日本語が通じない相手がいちばん厄介なのはどこいっても同じだな >>833 確かに。 でも、そういう言語が有るとして、そういう言語への一般的要件というのは考えられるだろう。 ・IE自身のメニュー、ツールバーから実行できる。 ・IEでWebぺージを見ながらデバック実行等できる。 ・標準で、つまり他にインストールなり設定変更なりを必要としない。 ・作ったプログラム単体の配布で別ユ―ザーの環境でも実行できる。 これらは最低限だ。 IEが専用言語を用意したとしたら上記をクリアしてくるのは当然のように推測できる。 >>835 そんな妄想機能があった上でなおPython使うって言ってんだよ お前がすべきなのは他人にとっては分かりきっていてなお批判されるお前の考えの足りないただの妄想を 言葉を尽くして語ることじゃなくて他人の意見を読み取ることだよ >>835 IEはC++や.NET Edgeはhtml/javascript がブラウザ拡張用の言語としてそれぞれ用意されてます あなたの妄想の世界に存在するMSという企業のようにブラウザ拡張だけに特化した新しい言語をわざわざ創造するという果てしなく無駄なことはしません なぜなら汎用性と利便性が高く長い時間をかけてテストされてユーザーの知識も豊富な既存の言語から利用できるAPIを提供すればそれで最大の効率が得られるからです >>836 Pythonにゃ実現不可能。 メリットも殆ど無い。 もっとも、そんな言語が有ったとしてPythonよりもコーディングがやりにくいとか、そういう可能性はある。 ただ、それは先にも書いた通り機能よりは優先順位が低い。 >>835 こいつは言語とライブラリと実行環境の区別がついてないしデバッグの仕組みもしらんのだろうな VBAばかりやってきたからプログラミングの常識が身につかなかったのだろうね 例え話も理解できない人が多くて驚く こんな人たちが社内や部内で使うシステムやツールを作ってるんだと思うと寒気がする >>837 うん。 だから有ったとしての話。 結局、専用言語にゃかなわない。 不思議なのが、ここに来てる人はプログラマ視点でしかものが見れない人が多いことだな。 それと、感情的になってるのか分からんが冷静な思考が出来ない人が多いということだな。 >>840 多分、冷静な判断の出来ない人、もしくは冷静な判断の出来ない状態にあると思われる。 >>838 実現は出来る 多くのスクリプティング言語は他の言語からインタプリタを生成するためのライブラリを提供している 例えばPythonなら https://docs.python.jp/3/extending/embedding.html が公式だ PythonだけでなくRubyでもLuaでも同じことできるし、あまり知られていないが実は.NET CLRも他の言語からホストすることが出来る なのでMSがやろうと思えばExcelやIE、Edgeの上でpythonだけと言わず様々な言語を動かすことが出来る とはいえ出来るのとやるのは別の話で経営判断になる ライトユーザーが多いからExcelにはVBAで十分だろう だけど、いちおうアンケートとって需要があるならPythonも検討しよう ブラウザにはJavaScriptという強力な言語の実行環境が既にあるので、あえて他の言語を動かす必要はないだろう ましてやリスクを犯して需要の全く無い新言語を作る理由はどこにもない といった経営判断は十分に考えられる 架空のIE専用言語って何だよwww話がややこしすぎるわwwww >>841 逆だね 専用言語じゃ汎用言語には勝てない なぜならユーザーは千差万別で拡張への期待も千差万別だから ブラウザコントロールに特化した言語では多用なニーズを満たすことは出来ない なので利便性の高い汎用言語にブラウザコントロールのための洗練されたAPIを提供するのが正しい答え マイクロソフトはその正解をわかってるから近年はJavaScriptへの投資が増えてる OfficeにもJavaScriptアドインが導入された ブラウザの拡張もCOMや.NETではなくJavaScriptが主力 VSCodeに至っては基盤そのものがElectronというnode.jsのフレームワークで拡張もJSだ 本家VSにも堂々とNode.jsの開発環境が公式ラインナップされている 今更になってExcelやブラウザでしか動かない新しい独自マイナー言語なんて作って、 ExcelやEdgeを鎖国化したら、今度こそユーザーに見放されてしまうよ そのご高説をExcel VBAスレでするのが理解できないんだよな。 こんなところで誰を説得したいのか? VBAが1番とか言ってるから違うんだよって言ってるだけ。 じゃないとこれからプログラミングを始める人に間違った情報与えることになるでしょ。 VBAなんて今から覚える必要なんて全くない言語なんだから。 >>847 こういう極端な馬鹿がいるから荒れる ExcelがVBAを使える限り覚える意味はあるのに VBAを利用すべきではない内容の質問にVBAを利用すべきではないよって回答してあげてるだけでしょ 質問者はVBAを使いたいのか?違うだろ問題を解決したいんだろ >>849 全ての答えがここにある 無駄な事を簡単にするのがプログラミングの本筋なんだからさ ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる