Excel VBA 質問スレ Part55
レス数が1000を超えています。これ以上書き込みはできません。
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part54
https://mevius.5ch.net/test/read.cgi/tech/1527334657/ >>1
すれ立て乙
そして前スレ976のリストビューがずれる現象は
splitしてる結果を比較してみろとエスパー
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
以下、知ったかぶりがVBAにマウントをとる長文と
VBA老害が見当外れのレスをする長文をお楽しみください クラスモジュールの正しい使い方わからん
コレクションとかディクショナリとかそれらにぶっこむ変数定義して関数かましてMEをぶっこんで行くのって使い方として正しいん?
コレクションは標準側にもったり別のクラスに持つべき? >>5
そんな事が知りたい?
オッケー
じゃあそれもマクラーに解説させるわ 別に使わなくても良いよ。
コンストラクタ引数が使えないし、オーバーロードないしで読みづらくなるだけ。 oopになりきれてないんだよね
正しいかどうかは状況によるけど俺は何度も繰り返す処理を自作クラスにしておく程度かな
vbaの文字列操作は遅いから自前でjavaのstringbuilderみたいなのつくったりとか マクラーがPSスレで大暴れしたけど反応薄くてワロタwww たしかにYahoo知恵遅れのPGカテ見てると
なぜそれをVBAでやろうとする?て質問だらけでウンザリするな VisualStudioとか他の開発環境はダウンロードもインスコも面倒だで
慣れてる人から見れば簡単だろうけど、未経験者には敷居がかなり高い テキストファイルのコピー/マージ/分割、Webスクレイピングもどき
に貧弱で重いコーディングしかできないVBAですか?という…
せめてPowerShellもバッチも使えよという 意識してスクレイピングという言葉を使っていないんだろうけど、Web操作なら分かるがスクレイピングにPowerShellは向かない。
取ってきたデータをどうするんだよ。
取ってきて終わりで、それをExcelの絡まない他のシステムに渡すだけというなら分かるけどな。
でもそれだったらそもそもExcel関係ないから俺でもそうするかも。
でもその場合でもPowerShellじゃなくて別の言語にするかも知れない。
多分VB.NetかC#とかの方が有力だな。
PowerShellからExcel起動してデータを表示するようなの作ってきたらセンスが無いの一言で終わりだね。
それにユーザーの使い勝手より自分のコードの書きやすさを優先するような奴は使えない。 一緒に働いてたら、同じ動作するVBAのコードを提示して俺のが採用されるだろうな。
何でPS1とxlsxの2つのファイルを扱わなきゃならんと言われて。 もうおまえら好きなの使えよwwwNGワード登録めんどくせーんだよ
ただここはExcel VBAスレだ ろくなパーサーもない、正規表現すら覚束ないVBAでスクレイピングとかマゾかよ
PowerShell以上に向いないのに
データ取り込んでVBA有利な作業したいって条件でも、
Excelからスクレイピングツール(psでもrbでもcsでもなんでもいい)呼び出すのが正解だろ
使い分けというの言葉を知らんのか
ほんとマクラーは何でもかんでもVBAだけでやろうとするのが好きだな
もしかしてそれしか出来ないのか? 標準入力すら素直に受け取れないVBAじゃ他のツール呼び出すの難しかったね
ごめんね俺が間違ってた
全部VBAでやるのが正解だよ
それしかできないもん >>17
>>18
それでもお前のコードは採用されない。
2ファイルになった時点で埋めようが無い差だ。
VBAで出来ないことなら別だがな。
VBAで標準入出力使うことはあまり無いなあ。
それで困ったことも無い。
そういう環境だと思うが。 powershellは起動するためにもう一工程要る PSなんて使う必要ないだろ
PSこそ中途半端な機能だわ
こんなの使うくらいならVSとかのIDEで良いよね vbaだと云々かんぬんはまぁ分からんでもないけどあーするといいこうしろよとか無くps勧めてくるのはありえんわ
知識そこで止まってる化石かなんかかよ 使いにくい言語を使い本来不要な問題を作り出す
その問題を工夫して回避することが大事なんだ
便利なツールを手軽に作りたいだけの軟弱者は別の言語を使えばいい VBAを否定するつもりはないが固執する理由もない
どの言語も向き不向きはあるしExcel周りはやっぱVBAが一番手軽で楽なんだよ
ただ行番号くらいはデフォルトで設定設けろ VBA質問スレなんだからVBAに固執してくれよ
逆に固執したくないならこのスレに固執するなよ
てかなんでVBA質問スレで最適言語談義が延々続いてるのかさっぱりわからない Colloctionに入ってる要素をランダムに並べ替えたいんですが
どういうコード書けばよいですか? >>32
やりたいのはこういうこと?
Key1 → Value1
Key2 → Value2
Key3 → Value3
↓
Key1 → Value3
Key2 → Value1
Key3 → Value2 >>28
これってVBAの言語的な優位性というかランタイムがエクセルに乗っかってるからってだけだよね
Pythonが乗っかったら急速に消え去りそう
VBAでおまんま食ってる人達は怯えてるだろうね >>33
いえこういうことです
>>32
やりたいのはこういうこと?
Key1 → Value1
Key2 → Value2
Key3 → Value3
↓
Key3→ Value3
Key1 → Value1
Key2 → Value2 collectionは順番って概念がないからあまり意味ないけど。。
目的次第だけど一度配列にぶっ込んで
インデックス乱数で作ってその順でcollection作り直したら? inputboxにdefaultを設定すると選択状態になりますが、
これを選択しない状態にすることは可能でしょうか? >>37
VBAにはinputboxは無いし、text boxにはdefaultプロパティもないんだが、一体なんの話だ? >>34
いや、あのね...
与えられた環境でどうするかって話で、そんなの当たり前だろ。
VBAも同時に使えるなら消えないだろうし、pythonに置き換わってVBAが使えないならpython覚えるだけだろ。 >>35
もう1個Collection作ってランダムに入れれば良いんじゃね? >>34
VBAでおまんま食ってるPython未経験だけど
Python移行を熱烈に希望します >>41
せめてそれくらいはしてほしいよな
理想はC#AだがVB.netAでもいいわ >>40
なるほど。
テストでこういうコードを「アホレ スイスイスーダララッタ スラスラスイスイスイ」と一瞬で作ったら一発で成功した。
あらためてオレは頭がいいな。
------------------------------
Sub test()
Dim i As Integer
Dim r As Integer
Dim c1 As Collection
Dim c2 As Collection
Dim c As Class1
Set c1 = New Collection
Set c2 = New Collection
For i = 1 To 100
Set c = New Class1
c.i = i
c1.Add c
Next i
For i = 1 To 100
r = Int(Rnd * (100 - i + 1)) + 1
c2.Add c1(r)
c1.Remove r
Next i
For i = 1 To 100
Debug.Print c2(i).i
Next i
End Sub
------------------------------
Class1
Public i As Integer
------------------------------ Vbaってコレクションのランダムソートごときにすごい行数を使うんだなあ驚いた 1、2、3、たくさん、すごい、って数える部族の人コンニチワ VBAもBASICの一種だから行番号は付けられるんだけどね
Sub Foo()
10 Dim i As Integer
20 Debug.Print i
30 i = i + 1: GoTo 20
40 End Sub >>37
inputbox関数のことです
引数defaultに文字を入力した時、選択されないようにしたいのです
Sub foo()
bar = InputBox("", "", "選択されてしまう")
baz = Application.InputBox("", "", "選択されてしまう")
End Sub >>50
そうです、文字が選択されてしまいます
フォームでも作るしかないみたいですね
ただ、右キーで選択解除できるのは大きな収穫でした(endキー使っていました)
ありがとうございました おれはテキストボックスにフォーカスが当たったらテキストが選択されてない方が嫌だけどな
ダイアログボックスのUIに対するガイドラインみたいなのなかったかな また偏った知識で変なUIがVBによって作られてしまうのかと思うと忍びなくてな >>48
Integerオーバーフローまで無限ループw クラスインスタンスをJSONにシリアライズしたいのですがどうすればいいでしょうか
クラスの種類が1000種類ぐらいあるので個別に作ると工数が足りません >>58
そうです
エクセルVBAの使用以外の開発は全て禁止されています VBAでクラスを1,000種類?
バカなのかネタなのかはっきりしてくれ w ならお前の工数見積もりのミスだな
おとなしく謝って人員投入してもらえ そこをなんとか
バカは承知なのですが他の選択肢は禁止されているんです
工夫でどうにかなりませんかね? 出来ませんって言えば?
実際出来ないんだし
正直に言えば済むだろ こんな簡単なことがVBAではできないのでしょうか? 出来る出来ないじゃなく
出来るけど工数がかかるだけだろ…馬鹿か? >>67
もしできるなら工数はほとんどかかりませんよ
できないから工数がかかって大変なのでなんとか工夫してできませんか?という話をしてます
人にバカという前に自分の理解力の程度を自覚したほうが良いのでは? apiでメッセ送れば未選択状態に出来なかったかな? クラス定義はテキストだし、JSONもテキストだし、変換しようと思えばできるじゃない
まさかそこの手法レベルで悩んでたの?
クラス定義が1000種類もあり、変換定義を書く工数が足りないって話だとばかり思っていたよ… クラスのソースからコンバータ自動生成するプログラム作れば解決
つかクラス1000個とか、VBAに向いてないのを差し引いても、どう考えても設計間違ってるわ VBAではJSONシリアライズのようなちょっとした処理のためにVBAパーサーを書かなければならないんですか?
他の言語だと基本ライブラリを使って1行で出来る処理なのでにわかには信じられません
経験上、コード生成は資源管理や後々のメンテナンスでトラブルが発生することが多いのでできれば避けたいです
VBAは工夫しだいで何でも出来る言語だと思います
もっと工夫して実行時に解決することはできませんかね?
>>72
小さいオフィスの事務作業ではどうか知りませんが1000クラスは業務システムでは少ない方ですよ
1つのシステムでプロジェクト(機能)が100以上、それぞれのプロジェクトに画面がいくつか、クラスが10〜、なんてことは別に珍しくもないです VBAはRuby、Python、.NETと比較されるほどの優れた高級言語なので
他の言語で当たり前のようにできることがまさか出来ないとは思いませんでした
こんなことで見積もりを誤ったなんてまるで交通事故にでもあったような気分です 使った事ないけどリフレクションぐらいあるに決まってんだろwww
それ使えば簡単に実装できるわ オブジェクトブラウザにクラス一覧やメソッド一覧が表示される
という事はメタデータの取得方法が存在するって事だ
詳しい方法はいつもの達人VBAerが教えてくれるだろう >>76
>他の言語で当たり前のようにできることがまさか出来ないとは思いませんでした
>こんなことで見積もりを誤ったなんてまるで交通事故にでもあったような気分です
ただの無能じゃん。部下がこんなしょぼいミスしたらブチ切れるわ > VBAはRuby、Python、.NETと比較されるほどの優れた高級言語なので
その認識からしておかしい、ネタだろ?w >>66
実際、貴方が出来ないんだから僕には無理でした
って言えば?って事ですよ
カッコ付けて安請け合いするから変な事になる >>79
あれは定義が見れるだけで
実際のインスタンスから値が取れることにはならん
>>80
俺ならVBAに対する理解がこの程度の部下に
1000を超えるクラスが必要な規模のVBA案件見積させた上司にもブチ切れるわw >>85
それJSONをVBAで解析するやり方で、
クラスをJSONに出力する方法じゃないから >>86-87
あぁごめん、その続きの方貼ったつもりだったけど前のページ貼ってた
検証する気も起きないけど、ちょっとでも役に立てば バカは適材適所を知らないという見本のような質問だな。
俺の職場にバカがいなくて良かった。 シートからデータを抜き出して重複しないリストを作ろうとしています。
For
If Cells(i+1,1) = .List(i) then
中略
Next
で重複の判定をさせているのですが、エラーが出ます。
InStrで判定させると期待通りに動きます。
検索しているのは数字なのですが、エラーの原因がわかりません。
挙動としては問題ないので、ひとまず満足はしているのですが、もし原因エスパーして頂けるようなら教えてください。 このスレの質問らしいw
エラーが出てるってだけでどんなエラーがどこで出てるのか言わない www >>91
今確認し直したらエラーが出ているのではなく、重複の判定ができていませんでした。
デバッグで変数を追っていましたが、表面上は同じ数字が入っているように見えるのですがifの中身を読みに行ってくれません。
例えば100〜110の数字を重複なしでリスト化したいのですが、
100
100
101…
といった表示になってしまいます。
質問の仕方もわからないような有様で申し訳ありませんが、よろしくお願いします。 >>91
重複なしのリストは、フィルタをうまく使えば一瞬でできるぞ
あと色々とめんどくさいから
・どういうリストを
・どうしたい
を書いてくれ
コードを書くから、それとどう違うかを照らし合わせると良い >>91
>検索しているのは数字なのですが
まずこれがあやしい
エクセルは表示されてる物と実際の値は違うぞ
そもそもそのコードで重複除去できると思えんけどな
1重ループで重複除去できるアルゴリズムあるなら教えて欲しいわ >>94
納入日…
納入先1 納入先1' 製品名 納入額
納入先1 製品名1'' 製品名 納入額
納入先2 納入先2' 製品名 納入額
このような元データから納入先1と2をそれぞれリスト化してUserFormのリストボックス1と2に表示、そこから納入先のデータを引き渡して別途データまとめるものを作ろうとしてました。
納入先については数字で管理されています。
納入先1にはさらに細かくいくつかの納入先2があり、リストボックス1に納入先1のリストを表示、選択された納入先1に紐付いている納入先1'を表示させるのが目標です。
ExcelVBA逆引き辞典とネット参考に関係しそうなコードを自分で打っていくと上記のようなコードが出てきたので使ってました。重複除外のコードは本から流用してます。
よろしくお願いします。
>>96
なんとなくそこが原因だとは思うのですが、具体的にどうなっているのかわかりません。
cellsでは数値を返して、listでは文字列として見ているような理解でいいのでしょうか。
>>95
一行ずつ動かしてみましたが、cellsと.listの中身は同じ表示をするのにifの中に入ってもらえなかったのでどうなっているのかもわかりませんでした。 Dim d As New Dictionary(Of String, MyClass)
なぜかエラーが出るのですがなぜでしょうか??? >>97
vba リストボックス 重複除去
辺りで検索すれば山程出てくるよ やはりVBAばかりやるとプログラミングの基礎がおろそかになるね
見た目を意識したスプレッドシートをそのままデータとして使う、といった発想は基礎ができてないVBAer特有の現象
Excel VBAは入門用と宣伝されることが少なくないが、正直、特殊な環境だから初心者は避けたほうがいい >>101
誰もvbaでプログラミングの基礎なんて覚えないでしょ
よっぽどで無い限りフレームワークは無料
vb6以前なら仕方ないけどね、あの頃は色々と有料だった どの言語でも言えることをさもVBAでのみ起こるかのように言うw
CだろうがPythonだろうが誰かが頓珍漢なことをした時に言えば良いんだから 専ブラJune使ってるんだけど何の設定もしてないのにあぼーんされてるのってなんで?
デフォでNGワード登録されてる単語あるの? >>107
> デフォでNGワード登録されてる単語あるの?
当然ある。 このスレで確認できる
NGワード絞り込みスレッド★117
https://agree.5ch.net/test/read.cgi/mango/1532726276/
最後に「This is Original」と出ればOK
「Rock54ed.」とでればNGワードが含まれている レベルが低いから質問しに来てるのに
質問者のレベルが低いとあざ笑うだけの書き込みしに来る人ってのは
やっぱりVBAプロなんでしょうか >>109
え?質問をする理由はレベルが低いから「だけ」だと思ってるの?馬鹿なの? セル関数だけで今開かれているWorkbookのWorksheetの一覧を作れるかい? >>109
質問内容を変に隠すのが嫌われてるだけだよ
あと、わかったフリ >>114
=aaa()みたいにセルに関数入力するやつ >>112
できるっちゃできるし、現にSheet1をメニューのように使って
Sheet追加したりも可能 それはすぐにメニューに反映されるし
文字で説明するよか現物Upした方が早いだろうから あした 質問です
画像みたいにSheet2の氏名と県名から数値を検索してSheet1の黄色セルを埋めることは関数でできますか?
https://i.imgur.com/VtolpQf.jpg あの説明じゃ何したいんだかさっぱり判らんけど出来るかってんなら出来るんだろうなぁ w >>121
日本語に不慣れな外人ならその言い訳は通用かもだね
(普通の常識というか社会経験があれば、外人であっても通用しないと思うけど) >>118
vlookup キー 2つ
とかで検索するといい
ただ、普通に作業列作ったほうが良い つーかVBAスレで関数とはどういうことよ
WorksheetFunction? >>121
文は文脈に関係なく不変の意味を持つという形式意味論の立場ですね
一方で、自然言語の解釈は文脈や発話者の意図と密接に関係しているという
立場をとるのが語用論です
夏目漱石は「I love you」を「月が綺麗ですね」と訳しなさいと
言ったらしいですがこれなんかは文脈を考えないとわからない言葉です
それでは問題です
最初にりんごが3個あります、あと2個りんごを買ったらいくつになるでしょう? >>129
お前みたいな馬鹿が質問するとおかしくなる
馬鹿なら何をしてもいいわけじゃない >>131
文脈を理解してないあなたの方が馬鹿です
死んでどうぞ こうして回答も得られず、何も叶わず、¥無駄な人生を歩むのでした >>118
の者です
なんだかお騒がせしてしまってすいません
Sheet2の別の列に検索キーとして氏名と県名の結合文字列を作ってvlookupで参照するようにしました
もっとスマートなやり方があれば一番良いのですが… >>135
sheet1のデータの持ち方がはっきりしないとむずかしいかも
各人名でどれか1つの値しか持たないなら最初の表から簡単にできる 複数シートのデータを3次元配列に格納する効率の良いコードを組みたいんだけど、
サンプルコードをお願いできない?
条件
・三次元配列は(シートのインデックス番号,行,列)を想定
・対象のシートはインデックスの二番目から最後までで、現状5シートだが10シート程度まで増える見込み
・一枚のシート内におけるデータ数は、列数は30程度で固定、行数はシート毎に可変で現状は100程度だが1000程度まで増える見込み >>137
行、列、シートで三次元になってるから、
sheets(1).cells(2,3)
みたいに配列にいれずそのまま扱うのは駄目なの?
効率がいいかどうかは知らんけど、
二次元配列ならセルを直接保折り込めばok
これをシートの数だけ回せば瞬殺
Sub foo()
a = Range("a1:b2")
End Sub >>137
max_row = 0 : max_col = 0 : result = array() : jug = array()
for i = 1 to Worksheets.Count
buf = Worksheets(i).UsedRange.Value
Redim Preserve jug(ubound(jug) + 1) : jug(ubound(jug)) = buf
if max_row < ubound(buf, 1) then max_row = ubound(buf, 1)
if max_col < ubound(buf, 2) then max_col = ubound(buf, 2)
next
redim result(ubound(jug) + 1, max_row, max_col)
for i = 0 to ubound(jug)
for row = 1 to max_row
if row > ubound(jug(i), 1) then exit for
for col = 1 to max_col
if col > ubound(jug(i), 2) then exit for
result(i + 1, row, col) = jug(i)(row, col)
next
next
next
これで result(1, 2, 3) で取り出せるし
インデックスが0オリジンでよければ jug(0)(2, 3) でも取り出せる
UsedRangeのとこは適当に書き換えてね >>139
こういう感じになるから三次元配列に複数シートのデータを入れようと考えること自体が無駄。
素直に二次元配列をdictionaryにシート名つけて打っ込むのが一番効率的かと。 ユーザ定義型に対してforeach的なことってできないの?
Dictionaryやcollectionじゃないとだめかね VBAで多態性(ポリフォーリズム)が実現できることを発見した。
ただし親オブジェクトはObjectクラスのみ。
これ以外に方法ないよね?
あとどうしてもコンストラクタを実現したいけど方法ある?
Class_Initializeのブロシージャは使えるんだけど引数が取れないという致命的な欠陥がある。 >>145
ないんじゃないの
諦めて初期化メソッド作ってそれを利用してるわ、面倒だけど
あー早く.NET化かPythonにならないかなあ >>145
オブジェクトをNEWして初期化メソッドを呼ぶ
でオブジェクトを返す関数を作るぐらいしか回避策が思いつかない >>148
みんなそうしてると思う。
定番でしょ。 >>145
VBAはインターフェースを定義できたりするよ
オブジェクトの生成はオブジェクト指向らしくファクトリクラス作るとか VBAは手軽だって言ってた人いたけど上のような事をするならVBAでする必要ある?
VBAでするには面倒だよね インターフェースを定義するか、そこまではしなくても良いかと考えるかだな。
どっちもあり有り得るけど、大きなプログラムなら定義して小さなプログラムなら定義しないって感じ。
でも、クラス作るべきって思うこともそんなに多くない。
VBAでするのは面倒とか感じることは無いな。
VBAでクラス作るのにピッタリな時は作って得られる恩恵が多いから感じないし、ピッタリな時は少ないから普段は無理して作らん。 VBAでクラス設計ってなんかうさんくさい感じがして使わないんだけどC#みたいな感覚で設計出来るの? >>145>>149
一体エクセルで何を作っているんだ? ひと昔前ならともかく今はいろんなツールが無料だからねぇ
excelはさくっと一覧表やグラフを作るときにしか使ってないや
ちょっとした作業が1週間くらいの見積もりで入ったけど、Redmine立てるのめんどくせーな、
一人作業だしタスク100以下ならエクセル一覧表で管理すりゃ、まあいーかポチポチー、みたいな感じ
こうなるともうVBAは大した役にはたたんのだな
プログラム書くほどの込み入った仕事なら、別の手段で楽に、収穫を大きくしようかってなる
何でも揃ってるこの時代に、あえてVBAを主力で使ってる人たちが、
普段Excelでどんな仕事してるのか興味ある Excelより優れた表計算ソフトはいまだにないからのお 例えあったとしても、デファクトスタンダードという地位はもう揺るぎないものだろう ハンバーガーとコカコーラは世界で一番売れてるから一番優秀な食品だとかいう話を思い出した 相変わらず具体例でねえなぁこのスレ
お前らほんとにVBA使ってんのか?www >>155
何作るってエクセル単独で何かするか
Accessに繋いでなんかするかぐらいだけど
Accessに繋ぐならクラス使った方がキレイにまとまるからクラス使うよ >>164
接続部分だけクラスにまとめるって感じ?
それならまぁ、わからんでもないけど・・・うーん エクセルは簡単な関数までで出来ることに使う
定期で使ってコードを書くような事ならC#でWinアプリかWebアプリにする
そんな使い分けです ある文字が文字配列の要素の中に存在するかどうかを調べるには
for i = 0 to Ubound(配列)〜のようにして
添え字を使ったループで一個ずつ比較するしかないですかね?
Pythonなどのように、 値 in 配列 とかで一発で判定できると楽なのだが Worksheet Functionのmatchなら一発でしょ、インデックスはわからんけど
filter関数のほうが早いんだっけ?
てか職場の老害が作るコードがいちいちforでぶん回すコード書いててイライラ filterやmatchも中でforでぶん回してるよ パフォーマンス無視でコードをシンプルにしたいだけなら Instr(Join( )) >>164
自分はAccessに繋ぐ所はクラス作らないからどんな所が上手くまとまると思うのか知りたいな。
自分はマ―クシートの管理と実際の用紙との比較をしやすいように管理上の結果(Excelシート)をForm上の用紙レイアウトに再現するようなプログラムでクラスを使ったのが良かった。
用紙上に配置するのはImageコントロールを使ったラジオボタンのようなものとテキストボックス、ラべル、他でユーザーが使う用紙にあわせて好きな位置に配置出来る編集モ―ドと配置後にデ―タにあわせてチェック状態を表示編集できる運用モードを持ったもの。
種類の違う可変個数のコントロールを同じように扱うのに便利。 >>172
普通に接続して切断する処理はクラス使った方がキレイにまとまるよ
ファイル処理も同じ。 質問なのだが、エクセル関数とvba の使い分ける基準ってどうしてる? >>174
シート上で使うとき?
なければ作る。
コード上で使うとき?
簡潔に書けるほう、またはパフォーマンスのいい方。
>>174 >>167
文字配列ってなに?
Stringのことですか? >>176
このコードでいう test_string のことです
複数の値を取りうる入力項目のチェックなんかはいつもこうしています
Sub test()
Dim test_string As Variant
test_string = Array("one", "two", "three")
Dim i As Integer
For i = 0 To UBound(test_string)
If "one" = test_string(i) Then
MsgBox "one" & "はありまーす"
End If
Next
End Sub >>177
ループで検索する、でいいじゃないですか。
一致(=)だけじゃなく Like での合致とかも選べるように汎用化しとくとなおよい >>174
重い時やミスしそうな処理が絡む時はvba
もちろん関数で実現できない時もvba
関数を使うのはビジュアルで見たい時
まぁ基本的には関数だな >>177
こういう処理は関数化した方がよい
Sub test()
Dim test_string As Variant
test_string = Array("one", "two", "three")
If あるかな(test_string, "one") Then
MsgBox "one" & "はありまーす"
End If
End Sub
Function あるかな(a, b)
If InStr(Join(a, "&"), b) Then
あるかな = True
Else
あるかな = False
End If
End Function バグ修正
Function あるかな(a, b)
If InStr("&" & Join(a, "&") & "&", "&" & b & "&") Then
あるかな = True
Else
あるかな = False
End If
End Function Functionの戻り値を関数名に代入する構文が最高に気持ち悪いんだけどどうにかならんの? はじめまして。
下記のようなマクロを組もうと考えています。
x人の生徒がいます。
この生徒を1グループあたりy人となるようにzグループにわけます。
このときグループ毎の生徒のテストの平均点の差が小さく、またグループ毎の標準偏差の差も小さくしたいです。
このようなマクロを作るのにあたって、どのような方向性で作成していけば良いでしょうか。 >>184
→→→
←←←
→→→
こう割り振ればいんじゃないかな
A B C
-----
9 8 7
4 5 6
3 2 1 >>177
> Dim test_string As Variant
> test_string = Array("one", "two", "three")
なんとなくだが名前はtest_stringsにして欲しいな
>>181
> If InStr(Join(a, "&"), b) Then
> あるかな = True
> Else
> あるかな = False
> End If
なんで
あるかな = InStr(Join(a, "&"), b)
って書かないんだろう… >>187
ほんこれ
ture/falseしか代入しないのに分岐する必要性がわからない。 >>183
グローバル変数にでも代入してみるとか?
他の言語にも気持ち悪いとこいっぱいあるから気にしなくていいよ
C言語のint main()もそのint 0はどこへ返すんだよって気になるし >>186
レスありがとうございます。
しかし、その方法だと点数のばらつきが大きいときに、各グループごとの平均と標準偏差が均等にならずに使えないんですよね、、、
私としては下記の手順でできるのではないかと考えています。
@コンボボックスでグループ数と、グループ毎の生徒数を選択してもらう。
Aエクセルに新しいシートを作る
B既存のシートに記入されている学生について、1の条件のすべての組み合わせを、2で作成した新しいシートのセルに列挙する
C3で書き出したそれぞれの組み合わせについて既存のシートの点数を参照し、average関数およびstdev関数を用いて平均及び標準偏差を2で作成した新しいシートに書き出す
D3の各組み合わせについて、グループ毎の平均のばらつきの少ないものを上位 何%かのみを抽出
E5で抽出した組み合わせについてさらに、グループ毎の標準偏差のばらつきの少ないものを上位 何%かのみ抽出
質問としては
a)他に良い方法があるか
b)組み合わせを書き出す際に重複を作り出さないようにするためにはどのようにすれば良いか
の2点です。
これらについて特に詳しく教えていただけないでしょうか。
よろしくお願いいたします。 >>183
Pascal由来の構文だからいまさらどうしようもない >>187
VBA専門の人って変な常識で固まってるからしょうがない >>189
???
グローバル?
まじでいみわからんどういうことなんだ
VBA職人の思考パターンほんと異次元なんだけど >>187>>192
多少冗長でもエクセルがうまく動いて正しい結果が得られるなら問題ない
手作業で10分かかるものが10秒になればそれでいいって世界
最適化すれば0.1秒になるところでも10秒かけていいのだよ
その10秒を最適化する時間で、別の5分の仕事を3秒に短縮する方がよっぽど大事
>>193
Public g
Sub s()
Debug.Print f
Debug.Print g
End Sub
Function f()
'これが嫌なら
f = "return f"
'こう書けば
g = "return g"
End Function >>190
大体でいいならrand()で時間かけて総当たりして、最も偏差が少ない物で良いと思う >>189
>C言語のint main()もそのint 0はどこへ返すんだよって気になるし
OSになんじゃないのか? >>184
ソルバーアドインのエボリューショナリーエンジンで解決できそう
生徒のグループ分けをなるべく少ない変数で表すモデル作るのが難しそうだが
バイトのシフト表作ってみるみたいなサイトあった気がするから参考に
頑張れば数理的に最適解も求まりそう >>196
いやまぁそうなんだけど、理解が浅い時はそう感じてたよ >>199
>Functionの戻り値を関数名に代入する構文が最高に気持ち悪い
って言ってる人がいたので回避策を提示しただけ
勿論こんなコード俺は書かないよ >>195
>>197
レスありがとうございます。
私がしようとしていたすべての組み合わせを試す方法だと、(仮に生徒48人を1グループあたり8人の6グループに分ける場合だと組み合わせの総数が4×10^30になってしまい、)かなり効率が悪いということですね。
アドバイスしていただいたソルバーを用いた方法とrand関数を用いた方法の双方について調査し、検討してみようと思います。
また行き詰まったら質問させてください!
その際はどうぞよろしくお願いいたします。 >>201
いやぜんぜん回避策になってないじゃん
そもそも戻り値として返してないんだが
VBAコミュニティだとグローバル変数に入れると戻り値として返したことになるって風習でもあんの? >>202
ここは何のスレだかわかっているか?低脳 >>184
例えば、40人を、5グループ8人毎
min(最大平均点 - 最小平均点)
min(最大標準偏差 - 最小標準偏差)
こういう問題は、Ruby のアルゴリズムの問題だろ。
combination, permutation とか
こんな問題は、一筋縄ではいかない。
ものすごい組み合わせ爆発が起こるから、vba なら、何日も掛かる そんなん言語関係ないやん、アルゴリズムの問題だろ
Rubyの関数で短時間で解ける問題なら、VBAでも数倍ぐらいの時間で同じ結果は出せる >48人を、1グループあたり8人の6グループ
グループA は、48*47*46*45* 44*43*42*41 / 8!
グループB は、40*39*38*37* 36*35*34*33 / 8!
...
グループF は、8! / 8! = 1
ここから、A〜F のグループ名を変えるだけで、
同一になるものを省くから、6! で割る 48人分のデータを作って「プログラミングのお題スレ」にでも書き込んでみ。
誰か解けるか、計算時間が掛かりすぎて解けないか
こういうのはプログラミングコンテストの問題だから、
vba で解くような問題ではない! だからソルバー使えって
数理計画法とか大学でやらなかったのか? >>200
その通りだよね
それにJoinなんて例に出た短い配列にしか通用しないし >>203
戻り値を使わないという回避策なんじゃないの?
そもそも何が気持ち悪いのか分からない。
プログラミング経験無ければReturn 0よりVBAの方が感覚的にぴったり来るわ。
気持ち悪いという人はa=a+1を気持ち悪いと思う人?
関数名に代入する?
関数名じゃない。
関数そのものに代入してるというか、関数そのものを定義しているんでしょ。
俺は初めて見た時にすんなり頭に入ったね。 何故関数名に代入するのが気持ち悪く感じるのかというと、後に述べるような危険性を無視しているからだと思う。
1.戻り値を関数名に代入しなければならない。
プロシャージャ中に何度も関数名が出てくるため、関数名を変更した時に変え忘れてエラーになることがある。
例えばhoge()全体をコピーして挙動の異なるhoge2を作ったとき、hoge2の中のhoge=***はコンパイルエラーにならないめ、テストするまでエラーを発見できない。
※コピペ直後に「完全に一一致」でプロシージャ内置換すれば良いのは分かっているが、そういう問題ではない。
対処法としては、関数の最初にDim Retしておき、文中ではRetに戻り値を代入、End Sub直前に関数名にRetを代入する。
2.戻り値を設定していないのにExit Subできてしまう。
せっかく1の対処法実施しても途中でExit Subされたら意味がない。
せめてExit Sub 戻り値 という書き方ができればよかったのだが。
対処法としてはExit Subを禁止して、そもそもExitが必要ない書き方に変えるかEnd Function直前までワープするGoToを使用する。
よって、関数を定義するときの推奨テンプレ
Function hoge() As Variant
Dim Ret As Variant
'-----
'処理
'Exit Subは禁止。GoTo ExitSubを使うこと
'-----
ExitSub:
hoge = Ret
End Function
もちろん異論は認める。 >>214
a=a+1
これのどこら辺が気持ち悪くなる部分なの? >>192
いやCとかでも
if(foo() == 0){
return 1;
} else {
return 0;
}
とか書くアホはいる >>215
> 対処法としては、関数の最初にDim Retしておき、文中ではRetに戻り値を代入、End Sub直前に関数名にRetを代入する。
手間を増やしてバグの確率上げるとか最悪の対処法だな w
そもそも2.の対処ができるなら書き換える個所は1箇所になるからこんなアホな対処法は意味がない >>216
数学の等式としては成り立たん云々だろ
どうでもいいからスルーしとけ 決め事だからどうでもいいけど代入が=なのに名前付き引数に渡すときは:=なのが統一感なくて気持ち悪い If文とか
冗長になっても数年後に見ても簡単に分かるようにしとく事も大事だと思うけど >>219
関数名は普通の変数と同等には扱えないからRetを使うのが必須な場面はある。
だから別に悪手ではない >>224
> 関数名は普通の変数と同等には扱えないからRetを使うのが必須な場面はある。
そういう場合はそうすればいいだけ
そういう前提がない場合にまでそうする奴は単なるバカ >>219
バグの確率が上がる状況ってどんな時?具体例を上げてくれ。
>そもそも2.の対処ができるなら書き換える個所は1箇所になるからこんなアホな対処法は意味がない
2の対処によって関数名に代入するのを1回にしてるんだが。どういう意味?
>>223
エラー対処を組み込んでも特に違和感ないと思うのだけど、どういう時?
Function hoge() As Variant
Dim Ret As Variant
'-----
On Error GoTo err1
Ret = 1 + "a"
If True Then GoTo ExitSub
'-----
GoTo ExitSub
err1:
Debug.Print Err.Number & Err.Description
Resume Next
ExitSub:
hoge = Ret
End Function
そもそもこの書き方って、自然と起こりうるものでコーディングルールとして定めるか臨機応変に使うかって話だと思うのだけどどうなん。 変数宣言強制にしてれば関数名変えた時、戻り値返すための関数名も変更しないとエラーになるんじゃないの? >>227
ごめん、なにか勘違いしてた
別にややこしくなかったね >>226
Retを使うという方法について>>219が
> 手間を増やしてバグの確率上げるとか最悪の対処法だな w
と言い出したことから出ている話だが、
「手間が増える」とか「バグの確率上げる」という主張自体に根拠が無いよね。
>>224に書いた理由によりRetを使う方法は皆が習熟してるわけだから。
だからあんたの言う
>そういう前提がない場合にまでそうする奴は単なるバカ
も根拠薄弱。 >>228
関数名変えるだけなら、コンパイルエラー出るから問題ないよ。
ただあまりたくさん使ってると次々とコンパイルエラー出てイラっとするだけで・・・。 >>227
> バグの確率が上がる状況ってどんな時?具体例を上げてくれ。
記述量が増えればバグは増える、常識
> 2の対処によって関数名に代入するのを1回にしてるんだが。どういう意味?
だからそれなら1.の対処の意味がない
無駄なGoto増えるだけ
>>228の言うように関数名の変更忘れてたらOption Explicitでその関数に入る時にエラーになる >>230
>> そういう前提がない場合にまでそうする奴は単なるバカ
> も根拠薄弱。
必要もないのにコード量増やす奴はバカ
って書かないとわからんの? w > ※コピペ直後に「完全に一一致」でプロシージャ内置換すれば良いのは分かっているが、そういう問題ではない。
> ただあまりたくさん使ってると次々とコンパイルエラー出てイラっとするだけで・・・。
わかってるけどやりたくない
でもいらつくとかちょっと病院に行った方がいいレベル >>233
最初の>>215の段階からRetが有効に使える場合のことしか書いてないよ
その前提を無視して>>219が変なこと言うから悪い
つまり>>219と>>226と>>233が悪い >>232
>記述量が増えればバグは増える、常識
そういう考え方もよく分かるよ。
だが途中で関数名代入を多様するのと、コーディングルールで途中でExitするというテンプレを定めるのとでは、バグの発生率は前者のほうが高いと自分は評価している。
実際この運用でうまく行ってるし意味がないなんてことはない。
そもそもは関数名代入が気持ち悪いと感じる原因と、自分がやってる対処法を上げて有用な異論がないか知りたかっただけだし。 記述量が増えるったって Dim ret と 最後の代入の2行だけじゃん。
途中の 「関数名 = 〜 」 という代入の記述を減らせるんだったら大した害悪じゃない。
最初からそういう話をしているのにね。 >>238
ヒープ使って合計の少ないものに足してます 行き違いがあるんじゃない?
コーディングルールとして決められていれば、多少記述が増えてもそんなもん何の問題もない
コーディングルールがない状態でいきなり>>227みたいな記述が出てくれば、ボンクラは意味がわからずに戸惑うだろう な?
たかが返り値を返すだけの話なのに
グローバルにするだのRetに一時保存するだのExit Sub禁止するだの
名前を変えるときは注意深く使ってるとこ全部変えるだの
謎のオレオレルールが一気に湧き出してきた
これが関数名に代入方式の弊害だよ
VBAに染まってない一般的なプログラマなら
「関数名に戻り値代入ってなんかキモくね?」「せやなぁなんでreturn文ないんやろねぇ」
こう一瞬で同意を得られるはずなんだがVBAワールドだとこうなってしまう
まるで異世界に迷い込んだような感覚 >>235
> 最初の>>215の段階からRetが有効に使える場合のことしか書いてないよ
>>215が有効とか思ってるのはお前らだけ
>>236
> 実際この運用でうまく行ってるし意味がないなんてことはない。
お前らは勝手にやってればいい。
>>237
> 途中の 「関数名 = 〜 」 という代入の記述を減らせるんだったら大した害悪じゃない。
記述は減ってない
関数名を変更した時の変更量が減るだけ
しかも本人が書いてる通り
> ※コピペ直後に「完全に一一致」でプロシージャ内置換すれば良い
だけなのに、何故はそれはやりたくないらしい w そもそも、仮に何度も関数名?に代入したとしてもその関数が長く無ければ混乱することも無い。
長い関数はそもそもダメるわけで最初から混乱することは無い。
関数を100行程度にするってのは常識だろ。 >>245
そうか?
Cプログラミング診断室の人が許容される限界は100行までと言ってたからそれに準じたまでだが。
それに、だったらお前さんは短い関数で混乱してたということ? 書き間違えでしょwww
俺は最長でも60行くらいだ。
それはともかく、関数名は最終的な答えを代入するためのものであって、
途中の値なんか決して代入したくないよって理由じゃないの?
少なくとも俺はそうだ。 returnのある言語から入ってきたから違和感を感じるのかも知れないがreturnよりは自然だろ。
そもそも俺は関数名?に代入するということを習ったことが無い。
最初にFunctionプロシージャを見て全てを理解した。
自然に理解出来た。 >>246,245
限界が100行なのであって、普段は50行とかに抑えるべきだと言いたかったんだと思う。
それを100行程度が常識だと勘違いしただけじゃないかな? > 関数を100行程度にするってのは常識だろ。
って言うのを限界と言うのは苦しいだろ w ちょっと待ってほしい
他の言語なら50行で書ける関数もVBAだと100行に膨れ上がるから仕方ないのではないだろうか Cプログラミング診断室の人がVBAに言及するのか?
VBAを使ってはいけない原理主義者の人は相変わらずこじつけがスゴイなw なんじゃそりゃ。
どんな言語でも短くすべきなのは常識だろ。
50行だろうが100行だろうが関数名?代入しても混乱しないだろ。 >>251
何だ?
10行じゃマズい何かがあるとでも思ってるのか?
それはさすがにプログラミング知らなすぎ。 手続き型だとそこまで細分化してもかえってわかりにくいけどな >>255
プログラミングの前に日本語の勉強しなよ… 質問です
他のBookから元bookの"テーブル1"を参照するになやんで
Range(myBook.Name & "!テーブル1")
としましたがもうちょっといい方法はないのでしょうか
’
Sub 元WBのテーブル範囲を名前から参照したい()
Dim myBook As Workbook
Set myBook = ActiveWorkbook
Debug.Print Range("テーブル1").Address
'
Dim TempWB As Workbook
Set TempWB = Workbooks.Add
Debug.Print Range(myBook.Name & "!テーブル1").Address ’これ
End Sub 他の言語ならともかくvbaなんてスクリプトなんだから多少行が増えても普通でしょ Workbook.worksheet.listobject("テーブル名")とか 基本vbaは良くも悪くもやっつけ仕事片付ける用途だからなぁ
いっそ他人が読んだりメンテしたりすることを全く考慮しないのも手っていう記事見たことがあるけど
極論とはいえ、適材適所って意味ではそれも手だなとおもた vbaは使い捨てのマクロとかしょっちゅうだしね
他の言語とはかなり正確が異なる ・誰かが質問をする
↓
・とりあえず誰かが質問にダメ出しをする
↓
・そのうち誰かが回答する
↓
・俺の方が上と違う人が別の回答をする
↓
・どちらの回答も的外れなためにダメ出し合戦が始まる
↓
・不利になってきた方がそもそもVBA自体が糞と論点をそらす
↓
・とことん荒れる
↓
・各自「やっぱり俺の知識が至上だったな」と思い矛を収める
・質問者「で、俺の質問は…」 >>261
自分しか使わない書き捨てツールと社内に配布して他の人に使ってもらうツールじゃ組み方は違うわな
別にVBAに限った話じゃないけど 質問に対してこんな感じでいいんじゃね〜って教えるのと、
仕事で残すコードでも組み方は全然違ったりする 変数を宣言したら直ぐに初期化するように、と解説サイトにはよく書かれているのですが、
ループカウンタも初期化する必要があるのでしょうか vbaレベルならいらないんじゃねて思うけどね
グローバルとかオブジェクト変数はやるけどそれ以外はして無いわ >>267
VBAの変数には既定値というのがちゃんと定義されているので、初期化は必ずしも必要ない
VBAの仕様を知らない人にコードを見せる可能性があるなら初期化してもいいけど、
俺個人の考えでは、宣言と初期値の代入は分けて書くべき
質問の文脈から判断して、ループカウンタとはFor文で使うカウンタ変数のことだろうけど、これは初期化しなくていい
しかし「ループカウンタ」はもっと広い概念を表すので、初期化が必要なケースも多々存在する ありがとうございます。
特に初期値は設定せずにそのまま使うことにします。
ところで、VBAを触り始めてから他のプログラミング言語にも興味が出てきました。
使い勝手や習得時間を省みて、VBAを習得している者にとって一番コスパがいい言語は何でしょうか。
やはりVB.NETでしょうか。
スレチでしたら無視してください。 なんかの言語をひとつ習得できる人なら何でもいいよ
言語別の利用者数、給与、分野、いろいろ調べてみ >>271言語よりIDEの開発環境が充実してる方が覚えやすい
VisualStudioがおススメ
C#の方が圧倒的にサンプルも多いし解説Webページも多いので良いのでは >>271
VB.NETとC#のコードを見比べて自分が分かりやすいと思った方かな
または、こっちの方が好きだと思える方 それにC#ならAndroidアプリも作れるしiOSアプリも作れる >>271
日常的な小手先の処理したいならPythonやNode.jsみたいなスクリプト言語
がっつりアプリ作りたいなら最近流行りのGoやSwiftやkotlin 20代までならC#ぐらいは覚えておいたら転職で役に立つかも知れない 仕事で社内サイトの検索結果を数十ページ出して
その中から必要なデータをExcelに貼り付けるVBAをCreateObject(" InternetExplorer.Application"を使って作ったのだけど
社内ネットワークが重すぎて1ページあたり1分以上、つまり20ページあると20分以上というものすごい時間がかかります。
これ各ページの平行作業かなにかで、どんなにページ数があっても1分強くらいですます方法はないのですか? ちなみに今は
1ページ開いて、そのページを完全に読み取ったら(●ここに時間がかかっている。30秒〜60秒くらいか)、IEオブジェクトを利用してGetIdByIDなどでデータを読み込み、そのページを閉じ、
それをページ数だけ繰り返しています。 無いです
シス管に糞サイトが遅いぞって文句言いましょう いや、あるのでは?
他言語ではマルチスレッドというやつかな? IEオブジェクトを配列にしてWEBページの同時読み込みに挑戦してみたことあるけど、なぜかVBAではうまくいかなかった
これはいまだに理由がよくわからん VBScriptで処理を書いて
マルチプロセスでやってみるのはどうだろう
ネットワークが遅いのが原因だとすると
変わらないかもしれないけど
2/3 ~ 1/2 くらいは期待できるんじゃないかな
社内DBに直結してデータぶっこ抜けないかな >>246
マーティン・ファウラーはメソッド平均6行ぐらいだってさ
俺もC#やJavaを使うときはだいたいそれと同じぐらいに自然と落ち着く
VBAは冗長で書きにくいから10行〜20行ぐらいになっても我慢するけどね(どうせすぐ破棄するってのもあるが)
100行ってのはおそらくだが速度最適化のために可読性保守性を無視したコードならそれぐらいまでOKってことではないかな
C言語は何よりもまず速度みたいなところがあるからね >>284
俺もC#では平均だと6,7行くらいだな
Javaも最近やってないがそんくらいだったと思う >>281
エスパーすると社内サイトの検索処理がダメダメで異様に時間食ってると思うのでクライアントでいくら頑張っても無理 ネットワーク越しの処理ってVBA異常に遅かった記憶があるなぁ 6,7行とか本当?
明らかに保守よりも作成する頻度の方が高いから、結構雑になる
下はディレクトリの一覧ファイル作るマクロ。確か5.6回しか使っていない
※数万ファイルのファイル名を一覧にしたかったらしい
Sub main()
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
strPath = InputBox("調べたいフォルダを絶対パスで入力してください。", "ファイル一覧", "c:\")
Cells(3, 2) = " "
Range("A3", ActiveCell.SpecialCells(xlLastCell)).ClearContents
Range("A3").Select
i = 3
FileDisp strPath, i
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub Private Sub FileDisp(strPath, i)
Set objFs = CreateObject("Scripting.FileSystemObject")
Set objFld = objFs.GetFolder(strPath)
'folder
Cells(i, 2) = objFs.GetBaseName(objFld.Name)
Cells(i, 3) = objFld.ParentFolder.Path
Cells(i, 4) = Int(objFld.Size / 1024)
Cells(i, 5) = "folder"
Cells(i, 6) = objFld.DateCreated
Cells(i, 7) = objFld.DateLastAccessed
Cells(i, 8) = objFld.DateLastModified
i = i + 1
For Each objFl In objFld.Files
Cells(i, 2) = objFs.GetBaseName(objFl.Path)
Cells(i, 3) = objFl.ParentFolder.Path
Cells(i, 4) = Int(objFl.Size / 1024)
Cells(i, 5) = objFl.Type
Cells(i, 6) = objFl.DateCreated
Cells(i, 7) = objFl.DateLastAccessed
Cells(i, 8) = objFl.DateLastModified
i = i + 1
Next
For Each objSub In objFld.SubFolders
FileDisp objSub.Path, i
Next
End Sub この辺は配列に入れようかと思ったけどもういいやってなった
使い捨てじゃなければもう少し綺麗にまとめたいんだけど、
そんな暇は、ない
Cells(i, 2) = objFs.GetBaseName(objFld.Name)
Cells(i, 3) = objFld.ParentFolder.Path
Cells(i, 4) = ・・・ 扱うプログラミング言語によるエンジニアの年収差「Go」が1位に 2018年8月7日
・スタンバイが「プログラミング言語別年収ランキング2018」を発表した
・1位に輝いたのは、さまざまな分野で利用されている「Go」
・年収中央値は600万円で、10位の「C言語」と比べて75万円高いという
http://image.news.livedoor.com/newsimage/stf/2/e/2e6a5_1524_19def02164a84861254ba51be419f53e.jpeg
http://news.livedoor.com/article/detail/15125851/
Goってなんやねん…
って言うてたらアカンのんか… >>282
複数のIE インスタンスがあっても、1つしか実体化されていないとか?
それか、それらが共有化されているとか?
すべてのインスタンスを、別々に実体化したか? >>293
インスタンスとは実体化されてるそのもののことだと思うけど。どういうこと? カップヌードルにお湯を入れます、これがインスタンス化です
カップヌードルにお湯を注いでいたとしても、それが同じカップヌードル
だったらできあがるカップヌードルは1つだけですよね、そういうことです >>279
InternetExplorer.Applicationは遅い。
ページにもよるけどMSXML2.XMLhttpとかhtmlflle使った方が全然速い。
ページにもよるのは遷移後にJavaScriptなどでページ内容が変わる場合等は対応出来ない場合があるから。 Webアプリを作って取得したデータをエクセルで読み込めば早いのでは? 社内サイトなら>>283の言うとおりDBを直接アクセスするのが正解なんだが、
「そういう想定で作ってません」てパターンもありそう。 一般社員用クライアント - WEBサーバ - DBサーバ - 管理者用クライアント
WEB経由じゃないと、DBには直接アクセスできないってケースもよくある 以前データをCSVに書き出す社内Webがクソすぎて
解析したらページ内のパラメータjoinしてSQL文作ってPOSTで投げて取得してただけだったので
XmlHTTPで直接取るようにしたことあるわ 無制限のアクセスはやばいけど
このテーブルだけ許可しますとか
SELECTだけ許可しますとか
このIPからだけ許可しますとか
できるっしょ 社内DB全開放して自由にクエリ投げれるようにしたら事務の人間半分くらいいらなくなりそう
というかVBAなんかよりSQL勉強したほうが手っ取り早く幸せになれる人多いんじゃないかと前々から思ってる webで良いからurlがapiとして完成してれば何も言うことは無い >>304
報酬次第だね
事務のコストを圧縮するごとにシステム部の報酬が上がるなら、
システムは本気で頑張り続けるだろうね
現実的にはなぜかそれが行われないので、いつまで経っても事務が事務事務している ただ、下手にアクセスで作ると自分以外触れなくなって何かあったら即死する
中小企業なら、エクセル+エクセルvbaが最強だと思っている >>307
アクセス専門業者を呼べばいいだけじゃん 1から開発で今更Accessも無いだろう。データベースシステムでスタンドアロンのシングルユーザーというのがそもそも想定しにくい 当たり前のことなんだけど、これまでなかなか上手いたとえが思い付かなかったが…
Manabu Ueno @manabuueno 16:46 - 2018年8月1日
ユーザーの要求をそのまま機能にすると役立たない物になってしまいます。
デザイナーはユーザーの要求を抽象化して本来的な原理を見つける必要があるのです。
例えば「直進したい」「左折したい」「右折したい」という要求に対して、3つのボタンではなく、
1つのハンドルを提案できなければいけません。
https://pbs.twimg.com/media/Djf5rTuUYAEI9sw.jpg
https://twitter.com/manabuueno/status/1024562075526254592
この例えは現場の人と話すときにも使えそうだな
https://twitter.com/5chan_nel (5ch newer account) 真の欲求って奴だな
これを知らないとデスマーチからいつまで経っても抜け出せなし ソフトごとに違う使い方やI/F覚えるよりSQL覚えた方が早いしずっと役立つんじゃね? >>313
なるほど!
じゃあ社内DBに直接アクセスしたいのですが、その方法はどうしますか?
HTMLのフォームに入力してSubmitすれば次のページでいろんなデータが見れるようになっているのですが
そのHTMLフォームがあるページのHTMLソースを見ればその中のどこかに社内DBのアドレスやログイン方法みたいなのが書いてあるのですか? >>314
そんなバカな
HTMLから投げるのはサーバーサイド処理のスクリプト
ASPだったりCGIやPHP
ページのソースに書いてあったら怖いだろ そういやExcel VBAでもADO使えばSQL使えるみたいだけど、どれくらい制限あるの? ???
そもそも何に接続したいの?
SQLといってもそれによるでしょ。
接続できるアカウント用意してもらって、
接続用ODBCドライバ入れて良いかどうかとか、情シスに聞いてみれば? >>317
機能に制限はない
運用側で接続やアクセスを制限するのが普通のやり方 >>317
SELECTとかINSERTとかのSQLを実行する分にはvbaだからどうこうっていう制約は何もないよ。 >>319
>>320
え、そうなんだ
じゃあ単にシート内を検索するときもDictionary使わずに、ADOで接続してSQL使った方がシンプルで応用がききそうだね
もっともExcelでSQLの命令書くのが簡単なのなのかはわからないけれども ところで新バージョンExcelで「游ゴシック」がうざくてしかたがない。
これ地獄の底へ抹消する方法ない?
しかも「游」ってなんだ?「遊園地」の「遊」でもないし。 Web制作では游ゴシは福音なんだがな...嫌いならフォントだけアンインストールすりゃいんじゃね? >>311
たとえおかしくね?
ユーザーが右折したい左折したいっていってるならボタンが正解だろ
コーナーが90度だけじゃなくてたくさんあるっていう状況まで汲めってそりゃ無茶ぶりだろ 既定のフォント設定で簡単に変更は出来るけど、他人の作るブックはどうにもならんからな… >>324
「コーナーが90度だけ『じゃなくてたくさんある』っていう状況」まで汲め
まずは、要求を抽象化してその可能性に気づき
次に、こちらから質問してそういうケースが起きうるのかを確認する
それだけの話で超能力でも忖度でもムチャぶりでもないよ
(あ、でも確かに最初の抽象化ができない人にやれというのはムチャぶりになるかもね) ヒアリングしても具体的な典型例のみが挙がるかレアケースばかり挙がることが多い気がする
実務やってる人間にとって当たり前すぎることは出てこなくて、試作段階で出来なくてもいいのかの確認とったら出来ないと話にならんとか
俺は自部署以外だと多部署からの依頼を受けて作る程度だからある程度実務がわかる分マシだけど、プロは畑違いの仕事の他社とやりとりするんだから大変だろうな >>321
ODBCだったら
Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)
というドライバを使うことになるけど、これの機能が貧弱だから凝ったSQLは受け付けてくれない。
単純なWHERE文での抽出だったらできるから、形式が決まったシートなら便利に使える可能性はある。 あらゆることを想定したお見積がこちらです
なんでそんなかかるの?と >>327
いや、ハンドルとコーナーの話だから抽象化やらも考えやすいだけじゃね?っていう
車とか曲がる行為とかがある程度普遍的だから敷衍できる
でも普段やってる仕事ってそのレベルで進んでるか?ってことよ
抽象化しろっていうのも一見正論だしある程度はしてるけど
曲がるを実装するためにハンドルは俺には飛躍が激しく思える 抽象化が苦手そうなのがよく伝わってくる
アレはアレ、コレはコレで別モンとして対処するのが得意そうだな 幸運な>>336はそのレベルででなんだな
どういう仕事してんだ?web系とかか? >>314
そういうのは、Rails とか
無料のRails チュートリアルでも勉強すれば? >>333
游ゴシックはMacとWindowsの両方に搭載されているのでCSSの手間が減る 20年遅れくらいでオブジェクト指向に出会った感じがよくでてる あるクラスのインスタンスをいっぱい作ってそれをCollectionに入れてて
それをその1つの要素でソートするためにはどうしたらいいですか?
VBAにはソート関数みたいなのはないのですか?
イメージとしては人間クラスがあって、年令でソートする感じ。 rubberduck入れたらCall使うなって怒られた
なんでダメなの? >>342
1 年齢と連番を入れた配列を別に作る
2 その配列を年齢でソートして順位を出す
3 インスタンス列をその順番で引っこ抜いて新しいcolllectionとする 列のソート時に行を崩さない方法について質問させてください。
手作業では成功してます。
一列オートフィルタ→ソートのカスタムから指定文字列選択→完。
マクロだと指定した行のみソートになってしまいデータが壊れてしまいます。
ご回答よろしくお願いします。 >>344
2にもソートが入ってるけど
そのソートの方法が知りたいのですが。
VBAにはもともとの機能としてソートは入っていないかな?
作業シート作って、そこにデータ入れて、Excelの並べ替えの機能を使ってやる方法は思いついたけど
それはダサい、作業シート作るなんてスマートじゃない、等の理由で好きじゃないのですが。 VBA自体がダサくてスマートじゃないから諦めましょう
生粋のVBAerはこういうとき自作のソートサブルーチンをコピペするらしいです お前の「ダサい、スマートじゃない、好きじゃない」なんて知ったこっちゃない VBAってソート関数ないの?
ほんとウンチみたいな言語ですね >>349
これが言いたばかりに半日スレ更新繰り返してたと思うとクソ笑え? ソートってお前ら、せっかくのエクセルvbaなんだから
セルに一度いれたらいいだけじゃないか?
何万行かあってもエクセルのソートはそこまで遅くないだろう そういやSortがkeyが三つまでしか指定できない仕様は変わらんのかな
Excelだと四つ以上指定できるのに、VBAだと複数回に分けてやる必要があるとかいうよくわからない状態になってるし >>352
どうかこれで怒りをお鎮めください
Sub Sort(a)
Dim i, j, t
i = 0
Do
If UBound(a) <= i Then
Exit Do
End If
j = 0
Do
If UBound(a) <= j Then
Exit Do
End If
If a(j) > a(j + 1) Then
t = a(j)
a(j) = a(j + 1)
a(j + 1) = t
End If
j = j + 1
Loop
i = i + 1
Loop
End Sub >>346
数値のソートは自分で頑張って実装しなさいよ
順序づけインデックスを使って任意のコレクションを並べ替えるロジックは汎用性のあるものだから
自作する意義は十分にある。 汎用性があるってだけでなく、
ひとつの順序づけインデックスを使って複数のコレクションを同じ順に並べ替えることが出来るからね >>359
ごめん一般的にどう呼ぶか知らんからテキトーな名前で言った
ソート対象のデータの横にナンバーが振ってあったとして、データと一緒にそいつもソートすると思ってください。
その後、ナンバー部分を取り出したもの。 別にVBAでもソート出来るでしょ。
調べ方が足りないんじゃね? ソートが出来るコレクションは限られてる
目的にあった使用ができるか調べればいい >>360
そんなことしなくても比較する関数を渡して直接ソートするのが一般的だし汎用的では .NET APIのArrayList使えばコレクションのソートもできるじゃん
VBAでも使えるぞ >>366
CreateObject("System.Collections.ArrayList")で普通にオブジェクト生成できる
あとはググってどうぞ λもLinqもないVBAに.NETコレクションを渡されてもあんまり嬉しくないでしょう
Private app As New MyDotNetComLib.MyApp
Sub イベントハンドラ()
app.DoSomething ThisWorkbook
End Sub
こっちのほうが楽だよ
コレクションのソートはC#サイドで好きなだけできる >>371
わざわざVBA側でする意味がないじゃん? >>370
楽といっても、C#スキルのある人限定の話でしょ
VBAのメイン利用層は、現場のエンドユーザーであり
本職のプログラマーじゃないんだよ そのC#側のコードはどう書くんだ
メモ帳か?HTMLタグ手打ちでホームページ作るのよりしんどそうだが
ああ、今はオンラインIDEってのもあるのか
IE11が使用環境に入ってなきゃ意味ないけど >>367
ありがとうでガンス。
なんだかよさげザマスね。
ところでこのCreateObject("System.Collections.ArrayList")を収納する変数の型はなににしたらよいザマしょうか?
F2で出るオブジェクトブラウザに表示されてそんなメソッドが使えるか調べたいでガンスが、それにはどうしたらいいでしょうか?フンガー >>375
受け手の変数をVariant型かObject型で定義しとけば処理実行時にArrayListオブジェクトを受け入れる
Scripting Runtimeとかのオブジェクトを実行時バインディングで使用するときとまったく同じ
.NETライブラリのパスを参照先に設定すれば、ArrayList型変数の宣言、インテリセンス入力、オブジェクトブラウザでのオブジェクトモデルのブラウジングも有効になるよ
ライブラリパスは自分で調べてね >>372
C#側をライブラリとして固定できなくなっちゃう >>377
すまない
MyDotNetComLibと書いたのが悪かったようだね
これはライブラリじゃなくアプリケーションのつもりで書いた(MyApp)
キミが考えているだろう一般的な意味でのライブラリはアプリケーション内部で好きに参照してくれればいい >>378
ちょっと意味がわからん
比較関数をとっかえひっかえしたいときどうするの? >>379
C#側でとっかえひっかえすればいい
互いのイメージに齟齬があるのかもしれない
まずVBAで書いたらどうなる? >>380
VBA側で
Function compare(a, b) As Boolean を書いて
ソートするときに compare を渡せるかって意味だけど。
「C#でとっかえひっかえ」っていうのはつまりC#のコードを都度書き加える、って意味だろ?
C#側でそんな粒度での改修はやりたくないよ。 >>381
そうか?
バックグラウンドで自動テストしてくれるC#のほうが高頻度の修正ではだいぶ有利だろう
逆にVBAでそんな粒度の改修なんて俺はやだよ
テストの工数で死んじゃうよ >>382
C#側に比較関数をいくつか書いたとして、VBAではどういう方法で比較関数を選ぶんだ?
それともVBA側に選択ないのか? VBA側ではワークブックを渡すだけにしてあとは全部C#でやれっていう皮肉だろ
皮肉が面白くないってのは置いといて>>368を見てそれが理解できないのも相当ヤバい >>383
比較関数を選ぶのはC#側だよ
当然VBA側じゃない
>>384
この手の処理はVBAでやる必要はまったくないよ
必要ないからC#でやろうって話をしている
ただしExcelそのものは優れたホスト環境なので捨てるのはもったいないし積極的に使いたい
なのでVBAはExcelとのインタラクションに集中してもらい
コアな仕事はすべてC#にディスパッチしてやってもらおうという考え方だね >>385
なんか1oもわからない
VBAでできないこと(コレクションのソート)をC#で補うという話なんだぜ。 >>386
なんだ、やる仕事の数だけそれに対応したC#プログラムがあるってスタイルか。
それなら理解できるが極端だな。 >>388
そう
そしてそれ(仕事の数だけVBAプログラムがある)はVBAでも同じでしょ
だったらどうせ作るなら簡単なC#のほうがいいってこと
極端とは思わないけどね
コアロジックとインフラを可能な限り分離しようって発想はプログラマなら当たり前だから .NETFrameworkを使えばいいやんと言うのはわかるけどC#とか引っ込みつかなくなった知ったかのあがきにしか見えん w VBA以外の言語を使用するアプリケーション開発が出来ない環境も普通にあったりするからね
なので、ArrayListやQueueやStackなど、.NETのオブジェクトであっても引数付きコンストラクタを使用しないクラスならば使えるってことは覚えといた方がいいよ >>389
VBA/ExcelはUIとデータホルダ役でしかなく、処理はC#ということ自体はわかる。
だけどきっかけはVBAのコレクションをソートするにはどうしたらいい、って話だった。
あんたのスタイルだと「さあここでソートしよう」なんて判断も要求もVBA側には要らなくなるな。 >>392
そうだ
VBA側には要らなくなるんだよ
これですっきりしたね >>391
おまえがそういう畑を歩いてきたのはかまわないが、
そんな環境は「普通」ではないってこと知った方がいいよ だから、何度も言ってるがユーザーインターフェースはExcelの方が良いんだよ。
業務のメインがExcelなんだから。
とすると.netの場合VSTOということになる。
で、わざわざそこまでする程のことがやりたいかどうかということになる。
結局殆どの場合はVBAということになる。
あとはやりたいことによる。
ソート1つのために頑張って、しかも使う側に余計な配付物が必要となれば、それを補って余りある程のリタ―ンが必要。
Excel上だけどVBAではどうにもならないことをしたい場合ぐらいだな。 >>394
残念ながらVBA使ってる所はそういう所多いよ。
アプリ1つ入れるのに申請が必要な所は多いし、却下となることもある。
どうしてもって時は申請するけど、VBAだけでどうとでもなるからな。
どうとでもならない時にはじめてVisualStudioを入れてもらう。 >>397
うちはきついぞ
・利益を生まない投資は不可
・フリーソフトのインストール禁止
・エンドユーザーによるアプリ開発禁止
・一般職員のインターネット利用禁止
何かしたければプリインストールのExcel・Accessで何とかしろという体制 >>391
いや無いだろ
仮にExcelがなくてもPowerShell、C#、VB.NET、VBS、JavaScriptあたりはまず間違いなく開発出来る 禁止されてるからで思考停止してないで使えるように根回しするなり
まともな権限をもらえる企業に転職したほうがいいぞ
俺だったらVBAしか使えないとか言われたらその日から転活だな
まあこれはVBAだけに限った話じゃなくてもっと一般的にも通じる話な
現代のビジネスマンは受け身の姿勢じゃ通用しない >>400
だからVisualStudioを入れられない環境はたくさんある。
メモ帳でもC#の開発はできるかもしれないけど、それじゃメリット無いんだよなあ。
他のソフトもそれ用のツールなりエディタなりが入れられなかったらメリットが殆ど無くなるな。
>>398
フリーソフトは駄目でむしろ有料ソフトは申請すれば入れられる場合もあるという所は多いだろうね。 >>398
一般職員とかあるけど、もしかして税金が給料になる人ですか? >>401
それは君がそれだけの人だってことだろ。
転職するかどうかは言語よりも仕事の内容や待遇の方が大きい。
それに、突然そういう会社になる訳じゃないから。
今の君はそういう会社には入ろうとしないし。
昔の君ならそういう環境が普通と思うだろ。 VisualStudioは有料ソフトなんだから申請して入れればいいな >>398
エンドユーザーによるアプリ開発禁止ってのは、うちもそうだな。
そういえば。
あれだろ。
建前として、開発要員じゃないからだろ。
開発はベンダーにやらせるもので自らやるものじゃないってやつだろ。 >>406
必要になることは無いと思うぜ。
VBAでほぼ何でも作れるから。
うちも建前では開発禁止なんだけど、入れてる奴はいる。 >>398
それでよく競争になるね
よっぽどゆるい業界なのかソフトウェアで付加価値を生み出せないような業種なのか。
もしくはすでに負けつつあるか
まあそれは日本全体がそうなのかもしれんが >>402
C#ならVSCodeでもサクラでも秀丸でもなんでもいいじゃん
まさかテキストエディタ1つも入ってないわけじゃないだろ
個人的にはメモ帳でもVBAよりはだいぶマシって感じるけど
PowerShellならISEが標準なのでおすすめ
>>405
俺はプログラミングが好きで就職したからVBAだけしか出来ないなんてことになったら地獄
幸いそんな嫌がらせみたいな環境で仕事をするはめになったことはないけどね
キミの言い方からするとキミは実はプログラムに興味ないんじゃないか?
今いる会社の待遇がいいから居続けたい
その会社がVBAしか使っちゃいかんというからVBAしか使わない
VBAしか使わないからVBAが何に対してでもベストだと思い込んでしまう
あるいは本心ではベストともなんとも思ってないけどVBAしか使えないのだから考えてもしょうがないと思ってる
キミはたぶん会社がVBAも含めて全部禁止だと言ってきたらとくに何の抵抗も感じずに受け入れるんだろう
>>410
上に立つ人間が競争に勝つことより自分の定年までリスクを避けて逃げ切りたいと考えてる会社なんだろう
こういう会社で後に残された若手~中堅の社員は悲惨だよ >>398
金融?
昔勤めてた証券会社がそんな感じだったな
初めての会社だったから何の疑問もなかったけど、今思えばクソだったな >>413
金融はマーケットに近い業務だったらエンドユーザによるエンジニアリングが命って部分もあるよ。
バック業務は違うかもしれないが>>398みたいなのは想像しにくい。 >>414
あーそういや営業はネット見れたな
総務だったけど、な〜んにもできんかった
lhaca+だけ入ってたのが印象的だったわ(本部からこれだけは認められていた) 確かに...
〓〓〓〓総務部がソフトウェア開発で付加価値を生み出して利益を出す〓〓〓〓
想像できないなw 総務部の暇つぶしのおもちゃがVBAってこと?
そんなレベルでVBAなら何でも出来るとかVBAが最高とか言ってってこと?
いろんな環境や言語で開発経験が有って
人に売れる程度のモノを作った経験がある前提で話してるのかと思ってたがそうじゃなかったんだな >>418
そこまで行くとプロ様だからこのスレでは出禁になってますよw >>418
大企業は本部が全てのシステムを作り、画一されたものが支社に配られるってパターンが多い
全てのツールは基幹システムに集約されているからvbaを使う必要は無い
反面、中小・零細はvbaバリバリで使えないとしんどいだろうね
vbaは開発コストが高い上に単価を安く見られがちなので
わざわざvbaで開発したものを売ろうって奇特な会社は少ないと思う >>420
中小・零細のほうが身軽だし金がない
ならVBAにこだわる理由なくね? >>422
こだわってるんじゃなく、選択肢がないんだよ
・有償ソフトを買う予算は通らない
・フリーソフトのインスコ禁止
この環境で君は何を使って開発するのかな >>423
いやいやメチャクチャこだわってるじゃんw
膨大な実績があってMSなど様々な企業や団体も採用してる無料のOSS製品やサービスなんていくらでもあるのになんでわざわざ禁止してエクセルVBA?
変なこだわりがあるとしか思えんなぁ 禁止してるのはセキュリティ上の理由やろな
アホが上に立つとそうなるもんやで >>427
「セキュリティよく分からんけど何かあったとき俺が責任とるのやだから何もかも禁止」ってやつだね
というかこの場合も結局のところ「セキュリティにこだわってるからVBA以外禁止」ってことだろ
このセキュリティに対する(無意味な)こだわりを捨てれば選択肢はいくらでもある
やっぱりこだわり故の自縄自縛だな
選択肢はあるけど放棄してるだけ ここのVBAの質問に答えてる人が事務員って事はないでしょ
異常に詳しすぎるよね
本職のプログラマーよりも詳しい
それか本職の人たちはチョロチョロと色んなプログラムに手を出すけどVBA一本だから極めたとか? >>426
世間でどんなに実績があろうが、インターネットからダウンロードしたソフトを
業務マシンに入れることはセキュリティポリシーで禁止されてるわけ
だけど現場は手作業を自動化して楽したいわけ
だけど利益を生まないシステム開発には経費が下りないわけ
だからExcelに内蔵されてるVBAでこっそりシコシコやるしかないわけ
そうでなけりゃこんな時代遅れで融通の利かない言語を使うものかと >>423
ソースだけだったらテキストファイルなんだからOSSは大丈夫だ >>431
お前の能力では使いこなせないだけだろ
馬鹿死ねよ >>431
「現場は手作業を自動化して楽したいわけ だけど利益を生まないシステム開発には経費が下りない」
プレゼン力が低すぎだろ、効率が上がればコストカットが出来、利益産むだろ セキュリティーポリシー
ポリシーってようするにこだわりじゃん?
世界中で安全に無料のOSS製品を運用して利益を出している実績があるのだから
VBA以外のすべてを禁止しなければセキュリティを確保できないというのは大嘘なわけだ
だったらなんで禁止するかっていうと「こだわり」でしかないんだよね
選択肢はあるけどへんなこだわりで放棄してるだけ 他の言語のスレは山ほどあるのにVBAに拘ってるのほお前だろw >>431
同感
ただこっそり作ったのを業務フローに組込んで来る奴は勘弁
一生面倒見てくれるなら構わんけど >>437
引継ぎが悩み
自分の後任がVBAを解さない人、あるいは努力して身に着ける気力のない人ならアウト
ただVBAは仕様が枯れていてExcelバージョン間の互換性が高いし、
書籍や情報も多いし、コードがブックと一体化して実行環境を成しているから何とかなると思ってる >>431
自分で使う+こっそりやっていい
なら
C#、VB.NET、PowerShell、vbs
でいいやろ 他の言語スレは見てないけどさぁ、なんでこうも他の言語をアレコレ強制しようとするやつが多いんだよ、ここは。
Excelを使うならVBA使うのが自然だろ?Excelを他の言語からVBAと同等に動かすこと出来るんかよ
ほんとうぜぇな。いつまでC#がいいだのパワーシェルだの、あげくはRubyがどーたらこーたらとか言ってんだよ
雑談したいんだったらそういうスレにでも逝けよ、さみしがりやの僕ちゃん連中は > Excelを使うならVBA使うのが自然だろ?
いいえ >>411
入ってないな。
エディタはメモ帳だ。
プログラミングには興味あるが、プログラミングと言ってもいろいろあるだろ。
たぶん君とは方向性が違う。
それに仕事でVBAだけっていっても1つの案件が続いていけばそんなの普通だろ。
それ以外の言語は趣味でやればいい。
競争の頂点にいるような会社はリスクを取りたがらない。 >>420
逆。
本部はベンダーに任せるから。
本部の人間は逆にVBAとかで組んでる。
勿論大規模ではない。
大規模なのは本部の人間は作ってはいけない。
ベンダーにやらせるからね。 >>431
よく分かってるじゃん。
でも、やりようだからね。
結局。
使い勝手が良くなる手を打てなかった、もしくは打つ前にVBAを辞めたとも言える。 >>441
一応、C#でのVSTOというものがあって、どうにも行き詰まった時にそれで突破できるかどうかぐらいは知っといても良いと思うよ。 >>442
何も分かってない。
散々やり合って、Excel上で動かすという簡単なことが他言語では難しいことがはっきりしてる。 全ての人間を満足させる方法なんてない。
ネット閲覧さえできずソフトもインストールできない環境の人はExcelとVBAで頑張れ。
インストール権限はないけどOSSのコピペならOKの人は自分に合ったライブラリをさがせ。
いろいろ導入できる人は好きなの使え。 スレチだけどOSSなんか使わせてくれる会社あんの?
頭おかしいんじゃねえの >>452
ネットにも繋げない奴隷環境ならPowerShellのほうがいいぞ
部品の再利用性が高いから長引くほど有利
>>453
いままでで最高のジョーク >>456
PowerShellはVBAの代わりにゃならん。
PowerShellも使うけど、役割が違う。 >>426
>様々な企業や団体も採用してる無料のOSS製品
互換性の問題で、どっかの役所がこれをやめた
>>441
誰がどうみてもvbaは完全に時代遅れのウンコちゃんなんだよ
機能以前に、Cライクじゃないことがあまりにもウザすぎるんだよ
今主流の言語はほぼ全てCライクなのに、何で今更Bなの
せめて比較演算子だけでもお願いしますって感じだわ
>>445
あぁ、すまん変な言い方してしまった。作ってはいないね
業者とやり取りしているのが本部だ
>453
レンタルサーバーのphpはオープンソースだよねって反論したら知るかボケって返ってきたわ
その辺は規模にも寄るだろう >>456
ジョークって程じゃない。
ああいう意見が出てもおかしくない。
会社によるんでしょ。 VBAが使えてネット閲覧OKというまあ普通の環境においては
ネットからサンプルコードをコピペしてきて使うことも当然あるだろ?
ソースをまるごと持ってくるのと何も変わらんよね。
インストールという行為がなければ区別つかないんだし。 そうか
ネットに繋がらない環境でプログラミングするって凄い事だね
コードのスペルとか全部記憶してるのか >>461
まぁ1年も使えばVBAはネットなしでもスラスラ書けるのは強み >461
死ぬほどめんどくせーよ
worksheetとworksheets、
cells(y,x)、cells(x,y)、cell(x,y)、
何十回間違えたか検討もつかない
あと、再計算のcalculate
ただ、このスペルさえ覚えば別にどってことないんだよね
onerrorや高速化周りはさすがにコピペだし
vbaの場合、全然発達してないからある意味ネット環境がなくてもいいって奇妙な強みがある >>462
VBAかんけいなくてわろた
>>461
なので開発環境のインテリセンスが優れている言語は強い
C#とPowerShellはいいね
VBAはご愁傷さまって感じ >>460
サンプルコードコピペは有るけど完全に理解してる物に限るだろ。
ソース丸ごと持ってきて、それを全部読んで、全て自分の知識から既に分かってる内容ならOKだろう。
そうじゃないなら仕事で使うべきじゃない。
これ、最低限。
実際はキチンと検証やら必要だし、何かあった時、特に損害が出た時に君が賠償できるならOKだ。
普通は賠償出来ないからこれまた申請やらが必要だろうな。 >>463
何か、間違えの内容がごく初心者のやらかす内容だな。
さすがに、そんな間違いはあり得んから全く面倒くさくないな。
後、初心者が良くやらかすのがいきなりCellsで書き出して、ブックやシートを省略する奴。
基本ブックから省略せずに書くからそういうミスもあり得ん。
当然Withを使うかSetを使う。 >>465
おいおいw
OSS利用なんてあたり前だろう
それにバグなら自分のコードだって出るんだし >>468
自分のバグとコピペにバグじゃ違うだろ。
それにコピペの場合、悪意あるコ−ドが入ってて機密情報が流出したら、自分が意思をもって流出させようとしたのと変わらんと思うが。 >>469
じゃあ使わなければいい
保険をかけることにもコストがかかり、リスクを取らないリスクがあるってことも忘れるなよ >467
もちろんsetを使っているよ
withは入れ子できないのが気持ち悪くてあんまり使わない
ってか、Cライク言語でしばらく書いた跡の等価演算子とifインデント辺りの方がめんどい
if (foo = bar) then
と書いた跡のカッコを消す何とも言えない気分 勘違いしてるかもしれんが、君の会社がOSSに対してどういうスタンスを取ってるかによる。
コピペからソース丸ごと持ってきてOKと解釈する所が間違いな。
君の会社だったら客から賠償されるだろうけど君はお咎め無しだろう。 >>471
それは複数言語を同時に使えばどんな言語でも起こるだろ。
SQLだってOracleとAccessとSQLServerでそういうことは起こる。 >>471
> withは入れ子できないのが気持ち悪くてあんまり使わない
入れ子はできるだろ
ただ入れ子にすると外側にアクセスできないのが不便
Pythonみたいに別名を付けられればいいのに VisualStudioを入れれる環境ならVBAは使わない?
そーいうことでもない? >>473
SQLの方がキツイね
あと、正規表現。細かいルールまで覚えてないと普通に死ぬ
>>474
そういやできるね・・・うん、できるね・・・
>>475
そういうことでもない。VBAはエクセルの便利機能の一つ
VSからエクセルを触ることもできるけど、割と冗談抜きでめんどくさい。
一回やってみると方が良い。俺はかなり昔、二度とやらないと決めた。今は便利になってるかもしれないけど、そこまでは知らないなぁ >>475
まず前提として、これは総務や営業の事務部門のねーちゃん・オッサンたちが
手元のPC作業を自動化したいという話だと思ってるんだけど・・・
そういう人らには、例えPCにVisualStudioが入っていたとしても、それでバリバリ
開発したり開発後のコードを管理・メンテしていくことは無理だろ?
んでこの手の社内システムの支援が行き届かない末端業務では
大抵のデータはExcelやAccessに入ってて、それを手操作で処理してるのが典型
よって手になじんだExcelやAccessのまんまVBA処理に移行するのが手っ取り早い
C#やPythonなどからExcelを動かす荒業もあるらしいけど、わざわざそうする理由がない >>477
> 総務や営業の事務部門のねーちゃん・オッサンたち
が、VBA使えるという前提もどうかと思う
畏(おそ)れ多くも森喜朗元帥閣下の有り難いお言葉:
「オレはIT(いっと)のことはよく知らんがぁ
時計をたった2時間早めるだけだろぉ?
オレなら1分あれば済ませるぞぉ!
サマータイムの何がそんなに難しいんだぁ?」
システム開発現場の勇ましい言葉:
「畏れ多くも森元帥閣下のご下命を賜った以上
現場SEは有り難いお言葉に勇気百倍
デスマーチとバンザイ突撃を敢行いたします!」
「マラソン選手さまが涼しい時間に走るためなら
現場SEの千人や二千人死んでも本望です!
私たちSEの生命など、虫けらと同じです!」
「畏れ多くも森元帥閣下の有り難いご下命にしたがって
最前線システム開発現場で殉職出来るとしたら
現場SEとしてこれに勝る喜びはありません!」
日本という国では
体育会系が一番偉い(森元帥閣下、田中理事長)
文科系がその次で(財務省、教授会)
理科系は最底辺の奴隷とされています(現場SE)
>>478
ifとforとエクセル操作ならそんなに難しくない
前提として十分成立するレベル。
プログラミングで難しいのは環境の話。
で、環境はExcelなので事務屋は知ってる。
動くコード書くだけなら誰でもできる。 ネットつながってないならなにインストールしようが問題なくね? >>477
「ねーちゃん・オッサン」という言い方自体が印象操作だね。
部門部署はたくさんあるんだから。
「理系院卒のあんちゃん」と言ったら真逆の印象になるだろ?
まじめな話普通大学で少しはやってるだろ今どき。 >>482
総務、営業とかの事務職に就いてる
> 「理系院卒のあんちゃん」
ってどう見ても使えない奴だろ…
if, forなら簡単とか言うがそれはこんなスレを見てる奴らだから通じる話
わからん奴はとことんわからんし理解しようともしないよ >>483
「部門部署はたくさんあるんだから。」と書いてあるのにどうして総務と営業にこだわるのか。
俺にはさっぱりわからんね。 総務、営業、SEしかいない会社にいるからそれ以外の環境が想像つかないんだろ >>481
ウィルスにかかればローカルサーバーのデータを消去・改ざんしつくすぞ >>484
そう言うことは>>477に言ってくれよ…
いきなり前提変えて話しされても困る >>477を否定してるのに>>477の前提を変えられても困るって何の話?
日本語に弱い人かな? >>477
そういう利用目的なら
Excel・Accessからデータを吸い上げてデータ処理がカンタンな別言語で処理したほうがいい
わざわざそうする理由がない、というがそもそもエクセルのランタイム上でなんでもやろうとするほうが理由がない VBA以外の言語が簡単に扱えるかどうかって大前提を無視し話をされてもなぁ >>491
お前が扱えないからって他の人も同じだと思うなよ >>483
それすら理解できない人なら他の言語を勧めるのが間違いでしょうに。 >>489
日本語に弱くて前提が変わって無いのに気づかないんだろうなw
しようがねえな。
まず>>477に対して君が 総務や営業の事務部門という前提で>>478を書いた。
しかし>>482は君にレスしたわけじゃない。
>>477に対して 総務や営業の事務部門という前提をも否定して部門部署はたくさんあると書いたんだろ。
>>482は>>477の前提がおかしいぞと言ってるんだよ。 >>482は最初から>>477の前提に立っていない。
むしろ>>477の前提を否定する発言だ。
だから>>482を否定したいなら>>482の前提に立って否定するか>>482と同じように>>482の前提自体を否定するしかない。 しかし君は>>482が>>477の前提に最初から立っていないということに気付いて無いから>>482の前提自体を否定するような発言も出来ないし、>>482の前提に立った上で反論するということも出来ない。
それで>>484や俺(>>488)が気付かせてあげようとしたんだが、まだ気付かないようだw プログラミング言語もさ、日本語と同じように言語なんだよな。
論理的に考えれば日本語だって理解出来る筈なんだよ。
まあ、論理的に考えられない人はプログラミングは向いて無いな。 >>495
印象操作とかぶち上げて指摘されたら部署ガーとか恥ずかしすぎるだろ w 部門部署はたくさんある、の一言にここまで思いが込められていたことは俺もわからなかったよw >>497
これだけアンカー付くと壮観だな
読む気になれんけど >>499
まだ分かってないw
>>482は一番最初から部署ガーと言ってる。
君が指摘する前からだw 論理的な思考の出来ない奴が外いな。
碌なプログラムも組めないと想像できる。 >>504
確かに、でも意思の疎通はできるでしょ。 >>500
どう見ても印象操作がメインだしな
まあ、指摘されて引っ込みつかなくなったから>>502-503みたいに話そらそうと必死なんだろ w しかしまあ>>485が言うみたいな「総務、営業、SEしかいない会社」ってのも無視できない割合で存在してるんだろうな。
総務がSEやったりとか。 確かにSEもいない会社も普通に多いか
そしたらVBAでも大活躍だしVisualStudioで自作アプリなんて作った来たらキモいな >>504
形容動詞「ろくな」が名詞「プログラム」を修飾して
連体修飾語「ろくなプログラム」になってるわけで
「ろくな」はまともなという意味だから
まともなプログラムも組めないと言ってるわけで
表現としておかしいところはなにもないと思った プログラミングはそれなりにできるけど、ExcelでGUIを作ろうという場合に参考になる書籍やサイトってない?
例えば、VBScriptからExcelをCOMで呼び出してのバッチ処理などは全然できる。
だから初歩的な分岐だとかループだとかは要らんわけで。
ざっと調べるとフォームとイベントが捌ければ何とかなりそうな気がする…んだけど何やればいいのか… GUIならC#でもやんなよ
ExcelなんざCOMで呼び出しゃいいんだよ Amazonで見たところ、
「アプリ作成で学ぶExcelVBAプログラミングユーザーフォーム&コントロール」
とか、
「小さな会社のExcel VBA業務自動化アプリケーション作成・運用ガイド」
とかかなぁと思うけどレビューがあんま参考にならん…
>>511
「俺の、俺による、俺のためのアプリ」ならExcelなんか使わないよ。
「会社の皆が使うちょっとしたアプリ」なら、なるべく金かけず維持・メンテ・引継ぎしやすいものを選ぶのは当たり前。
HTAやPowerShell+WPFや.NETなんか使ったら一生メンテさせられるっての。 >>510
書籍は見たこと無い
・excel フォーム デザイン
・windowsアプリ GUI デザイン
この辺りで検索すればそれなりに出てくるんじゃないか
もしくはシートをそのままGUIとする
mainシートに出力
settingシートに設定
inputには何かしらのデータ
俺はいつもこんな感じの構成 自分がいる間動けば十分じゃないの
みんなで共有しないといけないやつならしゃーないけど >>506
メインw
あのね、>>482は「部門部署はたくさんある」という前提に立って「印象操作」と言ってるんであって、>>477に対して2つをバラバラに言ってるわけじゃ無いんだよ。
「ねーちゃん・オッサン」という印象操作して事務部門限定のように言ってるけど、実際は部門部署はたくさんあるという意味だろう。
悔しくて仕方ないかもしれんが今さら挽回は無理だな。 >>474
>ExcelなんざCOMで呼び出しゃいいんだよ
C#でExcel使ったことねーだろ >>513
どうも。手探りでやるしかないみたいねぇ…
>>514
だ・か・ら・さ。
簡易なVBScriptでもメンテが要るんだよ。VBScriptだからGUIがショボくて、例えば「〇〇課の職員」たらのメンテが不便だからな。
作ってもらえるだけでもありがたいはずなのに、プログラムが書けない連中は「職員が入ったから直して」「機能追加して」と平気で言うわけ。
たまに「スマホアプリにして」とか言うゴミもいるんだぜ?
俺はとりあえずExcelでそこそこのインターフェイスで作っといてリリースして放置したいわけ。
何か言われたら「Excelが得意」と周りに吹聴している馬鹿にやらせればいい。
「君の得意なExcelで作ったんだよ?できるんでしょ?」てね。 どうしてもVBAでGUIというなら図書館でVB6辺りの書籍を探してきた方がいいぞ
腐る程あるはず >>519
引き継ぎもまともにできないただの自己顕示欲丸出しのキチガイじゃねーか >>512
>なるべく金かけず維持・メンテ・引継ぎしやすいものを選ぶ
それでVBAという答えはないわ 現実問題、ツールの引き継ぎなんてものが本当に発生するのか疑問だ。
ツールなしで手作業でやってたらどうするのさ?
後任者には仕事の仕様だけ教えて1から使ってもらうのが正しいんじゃないのか。 VBAは良いと思うけどね
MS Officeは使ってること多いし >>519
要望がうざいならリリースしなきゃいい
つうか他人のボランティア前提でリリースしてんのかよ
こういう人がいるから社内統制で野良マクロ禁止にする会社が出てくるのかね >>527
C#でもJavaでもPythonでもGoでもなんでもいいけどね
世界中で生産性・保守性が高いと認められて採用実績の多い道具を使う >>515
そもそも>>477は総務、営業とかの事務部門の話ししてるだけで他の部門の話なんてしてない
他の部門がどうあれ総務、営業の事務部門の話が変わるわけじゃない
他の部門の話をしたいなら勝手にやっててくれ
> 悔しくて仕方ないかもしれんが今さら挽回は無理だな。
でかいブーメラン刺さってるぞ w >>528
あんた何もわかってないなあ
システム部門の支援を受けられず、オプソを入れることも許されず、
VisualStudioを買う予算も下りない
そんな事務部門が、シコシコと手作業でやってるExcel処理を
何とか自動化したいって話題だぜ?
どこからC#やJavaなんてものが出てくるんだよ >>515
お前のレスは悔しさが滲み出てるんですけどw ってかどんなマクロ想像してるの?
俺の中ではこんなレベルなんだけど
A1セルの値がvlookupのキーになっていて、
それを連番で変える→印刷
の繰り返し
こんな程度でも総務にはバカウケだぞ
Sub Macro1()
'
' Macro1 Macro
'
For i = 1 To 10
cells(1,1).value = i
calculate
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
Next
MsgBox "完了〜〜〜!"
End Sub ちなみに
MsgBox "完了〜〜〜!"
これは実際に見たコード。俺のセンスじゃないぞ 過去に既出かもしれないが相談させてほしい
ExcelにPDF内のテキストを取り込んで別工程の作業指示書作成を自動化出来ないかと相談された
取り敢えず「希望のコスト・納期では不可能」と切り捨てておいたが、個人的に興味は沸いたので手持ちのPDFをいくつか見たところFlateDecodeなるもので圧縮されている模様
会社のPCはセキュリティ上の制約で外部のdll(zlib.dllとか)を追加出来ないのだが、FlateDecodeの圧縮ストリームを展開してExcelに取り込む手段ないかな? >>531
ほかと比べたら敗色濃厚だからそうやって条件つけて逃げるしかないよな
よほど頑固な会社か交渉力ゼロの無能でもなきゃMS公式のVSCodeとdotnet-sdkぐらいすぐOKでるし
全部NGなんてレアケースで比べる意味ねえよ?
まあ仮に禁止したところでVBAよりはるかに便利なPowerShellもC#もカンタンに使えるんだけどな >>531
誰もそこまで限定してないと思うよ。
制約がキツい極端から制約がユルい極端までいろんな環境があると思うが、
あんたのは「制約が一番キツい環境を前提にして話せ」という主張に見える。
それはさすがに同意を得られないってことだ。 エクセルの処理を自動化するならVBAが最適でしょうに 普通に同意できるけどね
むしろ他の言語でやろうとするのはおかしいと思う VS眺めてみたら、普通にC#でエクセルアドイン作れるのな
これぐらい楽なら有りかも? 業務の大半はExcelに依存しないので言語もExcelに依存しない使いやすいものを使えばいい >業務の大半はExcelに依存しないので
>言語もExcelに依存しない使いやすいものを使えばいい
ゆでたまご理論かな? 5ch ブラウザみたいに、スレに書き込んである画像のURL を、
自動的に、<img> に展開して表示するものを自作している
Ruby で、Selenium WebDriver を使って、Nokogiri で、DOM を構築して、
JavaScript(JS) を使って、そのDOMで、body 以下を更新しようとしている
わざわざ、Sinatra, Vue.js などを使うまでもない。
標準添付ライブラリのERB は、使っても良いかも
Ruby での表示には、Selenium WebDriver で、ブラウザを操作して使っている >>545
おいおまえ、Selenium WebDriverでエクセルの自動化をできるか? >>547
Selenium WebDriverを使って
エクセルの自動化をできますか?
と聞いてるんです >>549
S e l e n i u m W e b D r i v e r を 使 っ て
エ ク セ ル の 自 動 化 を で き ま す か ? >>553
S e l e n i u m W e b D r i v e r を 使 っ て
エ ク セ ル の 自 動 化 を で き ま す か ?
こうですか?わかりません Selenium WebDriverを使って
エクセルの自動化をできるか聞きたいのですが
どう聞けばいいでしょうか? ↑この人もしかしてカキコミスのレスにめちゃくちゃ食いついちゃったってこと?
そしてそれに気が付いてない? 純粋な疑問としてSelenium WebDriverを使って
エクセルの自動化をできるか聞きたいのですが できるんですか? できないんですか? はっきりしてください! >>529
バーカw
だから>>482は>>477を否定していると何度言っても分からない。
他の部門の話(>>482)に噛みついたのはお前。 >>532
論理的に明らかに相手が間違ってる場合、悔しいとは感じないだろ。
ピエロを面白がってるだけだな。 RubyもSelenium Web Driverも使えるけどどっちも会社じゃ入れられ無いけどな。
交渉とかバカが言ってるがVBAで同じことが十分出来るのに何で交渉しなきゃならんのだ?
交渉するのはどうにもならなくなってからだ。 楽にできるように動いてどうしてもダメだったらあるものでやるってのが常識的で賢い判断
最初から金と労力をかける方向に進もうとするとはもしかしてビジネスを知らん人かな?公務員?
それと他がダメだったとしてもpowershellとC#で解決したほうが楽 >>563
だからVBAじゃないと使う人が不便な場合が多いと何度書いたら・・・
Excel上からプログラム動かすのがVBAで組む場合の通常。
それにブック1つで完結出来ないのもダメダメだ。 作ったコードから、モジュール/クラス/フォーム一覧と、使われている変数、関数(引数/返り値付)の一覧も表示してくれるツールはありませんか?
それを作ってくれるコードでもいいけど。
コードを書いてるエディターのWindowsのコード自体を取得する関数ってあるかな?
なければ自分でコピペしてそれを引数に自作関数に代入かな? https://ja.wikipedia.org/wiki/Javadocより
Javadocとは、サン・マイクロシステムズが開発したコンピュータソフトで、JavaのソースコードからHTML形式のAPI仕様書を生成するものである。
JavadocはJavaクラスの仕様書の標準の書式であり、「多くのIDEは自動的にJavadoc HTMLを生成する機能を備えている。」
なお、HTML形式は標準の書式であり、カスタマイズにより変更可能である。
--------------------------------------------------------------------------
「多くのIDEは自動的にJavadoc HTMLを生成する機能を備えている。」らしいですよ。 >>563
総務のおねーちゃんにPowerShellとC#で開発しろって言うのか?
てか、なんでVBAのスレで他言語推しするんだよお前は C#がもっと使い勝手いいExcelのライブラリあればいいんだがなぁ >>559
否定?
他にあるというだけで否定にはなってないんだが w
論理的思考能力がないのかな? >>560
> 論理的に明らかに相手が間違ってる場合
ブーメラン過ぎる w
笑い取ろうとしてるのか? >>565
今、通勤中でコード書けないけどApplication.VBEを弄れば出来る。
そんなに苦労はしない。
ただ、VBEを弄るのはセキュリティ的に勧めないし、Excelの場合はデフォルトでは弄れないようになっている。 >>570
駄目だこりゃ、論理など全く無いようだ。
>>477は他に無いという立場で書いてる。
だから他にあれば否定している。
>>482は他にあると言ってるから前提を変えていない。
最初から前提に立ってない。
小学生からやり直したら? >>555
「毛細血管が一杯詰まってるとこ脇!」と言う所が聞き取り辛いんです >>574
> >>477は他に無いという立場で書いてる。
どこをどう読んだらそんなアホな解釈できるんだ? w
> 小学生からやり直したら?
お前がな まあまあ。
>>477はさ、自分だけの前提として「総務や営業の事務部門のねーちゃん・オッサンたち」の話をすればよかったんだよ。
それをこのスレ全体の前提事項にしようとしてるじゃん?
そのあとそこから敷衍して
「この手の社内システムの支援が行き届かない末端業務では ・・・が典型 」
なんて一般化したことを言ってるわけじゃん。
これでは「そんな前提には乗っかれないよ」という反論が出てくるのもしょうがないよね。 捻くれた態度取るのがしょうがないと
開き直るその態度が気に入らないのよ〜 >>580
前提に正しいも間違いもない
意見に良いも悪いもない
チミは議論というものをてんで理解していない わかった
ここからはID:KfIbP3u9は死ぬべきだという前提を元に議論しよう
>>582
良い悪いかじゃなく意味がないって言ってんだよ死ね エクセルを使う業務ってメモ帳代わりとか電卓以外に何?
そんなに大切な事には使わないよな
そんな会社ないよな >>564
ぜんぜん不便じゃないけど?
コマンド打つだけ
ファイルダブルクリックするだけ
幼稚園児でもできるよね エクセル開かなきゃ動かないツールのほうが面倒だよ
開くの遅すぎだしシートベースのUIは不恰好で操作感も直感的じゃないし
ちょっとした誤操作でもすぐぶっ壊れるしね >>582
議論ってことで言えば
「前提を受け入れられてからその前提で話を進めろ」ってことになるけどね。
そうしないと誰も乗ってこないのは当然だろう。
議論じゃなくて「俺はこういう前提でこういう結論を出した」で終わるならOKだが。 >>576
日本語分からないだけじゃね―のかよw
事務部門と限定しているのが分からないのかね?
>>477が事務部門以外を前提にしてたら、最初のお前の>>483自体成り立たないし、
前提変えたとか言ってる自分の意見も自ら否定していることになるんだがw >>585
むちゃくちゃ重要な業務に
継続的に
使われているよ
それだけじゃなく
複数の部署間や複数の会社間に
エクセルを介した依存関係が
双方向に
発生しているよ >>588
いや、前提自体を否定する議論も成り立つわけで、>>482の発言はそれ。
だから>>483は>>482の内容をよく見て頓珍漢なことを言わなければ良かった。
だが、自分が頓珍漢なことが分からず、結果として>>482の前提に乗れてもいないし、>>482の前提自体も否定していない。 >>589, >>591
結局限定してる根拠示せずに喚いてるだけかよ
そもそも総務と営業だけの会社なんてあるのか?
って考えたらわかるだろうに w >>590
マクロ許可してねって言って使い回してるの?
そんなのでセキュリティ大丈夫なの? >>595
夏休みの上に天気悪いからな
みんな超暇なんだよ
多分今質問投げるとすげー返答が帰ってくると思うぞ プログラミング初心者です。
ちゃんと触ったのはVBAが初めてです。
前任者が作成した、IEを開いて自動的に入力していくマクロの修正をしたいのですが、
With objIE.Document.getElementById("DESCRIPTION")
With .parentelement.getElementsByTagName("input")
For n = 0 To .Length - 1
If .Item(n).Name = "NAME" Then
.Item(n).value = name
・
・
・
と言った記述がされていました。
何となくDESCRIPTIONの兄弟要素からNAMEという名前のinputタグ要素を探しているんだろうなと分かるのですが、
オブジェクトブラウザからgetElementsByTagNameやparentelementを検索しても出てきませんし、ググってもJavaScriptの情報ばかりです。
これらはJavaScriptで使われる同名プロパティと同じ意味として捉えていいのでしょうか。 >>597
同じものとして捉えて大丈夫です
DOM(Document Object Model)でググりましょう >>597
結構キツイぞ
vbaよりもhtmlやjsの問題になる
こういうのがある状態だと思う。恐らくラジオボタン
<div id="DESCRIPTION">
<input type="radio" name="NAME" value=1>
<input type="radio" name="NAME" value=2>
<input type="radio" name="NAME" value=3>
</div>
>何となくDESCRIPTIONの兄弟要素からNAMEという名前のinputタグ要素を探しているんだろうなと分かるのですが、
子要素
>オブジェクトブラウザからgetElementsByTagNameやparentelementを検索しても出てきませんし、
>ググってもJavaScriptの情報ばかりです。
> これらはJavaScriptで使われる同名プロパティと同じ意味として捉えていいのでしょうか。
言ってる意味が分からないが、多分違う
恐らくその要素の名前が変わっているか、#DESCRIPTION以外の場所に移動している可能性がある
本気でやるなら開発ツールを覚えれば一瞬で終わる。30分もあれば大体使えるようになるよ
https://www.buildinsider.net/web/chromedevtools/01 >>597
JavaScriptで使われる同名プロパティと同じ意味です
>>599
兄弟要素で正しいし、取得したノードのvalue要素に値入れてるのになんでチェックボックスとかいう発想になるんだよ馬鹿か
3つ目の回答に至ってはお前の言っている意味が不明だよハゲ
そもそも誰もそんなことは聞いてねーんだよ
質問文読めてるか?実は日本語ネイティブじゃないのか?
知らないなら黙ってろクズが 兄弟じゃないよ
Iiが"DESCRIPTION"の要素の親要素の全ての子孫からinput要素を取り出してループ {
nameが"NAME"の要素(タイプは不明)の入力値をnameに置き換える
}
VBAerには難しいかな? >>592
うわw
本当に小学生かよ。
>>477は会社の中でVBAを使うような奴は総務と営業にいるね―ちゃんやおっさんだという前提だろうに。
だからお前も前提を変えて話されても困ると言ってたんじゃ無いのか?
>>597
ええとね、おそらく前の方にCreateObject("InternetExplorer.Application")みたいなのがいると思うんだ。
そしてこいつはObject型の変数に代入されてる筈だ。
このCreateObjectってのはオブジェクトを作る奴で、この場合"InternetExplorer.Application"の文字列をもった特定の場所にあるレジストリ情報からオブジェクトを作ってる。
なのでオブジェクトブラウザの範囲外だ。
オブジェクトブラウザは参照設定されてる範囲しか表示されん。
Microsoft HTML Object LibraryやMicrosoft Internet Controlsを参照設定して、代入されてるObject型変数の型をInternetExplorer型に変更すれば表示されるようになる筈。
その場合はCreateObjectを使わないでSet objIE=New InternetExplorerなどと初期化する。 開発ソフトをインストール出来ない環境で致し方なくVBAを使ってる人がほとんどだと思う。 InternetExplorer.Applicationは少し特殊でね。
HTMLのソース内の改行も1つのノードとしてカウントする。
だからMSXML2.XMLHTTPとはノード番号が違ってしまうことがある。 >>603
これは俺が間違えてたすまん
兄弟だけじゃなかったね。甥っ子とかも含まれてたね
子要素という回答は間違いなくあり得ないが >>604
小学生以下乙
お前が後付で条件付けても何も変わらんぞ w >>602
怒ってて笑ったw
どちらが正しいかは回答者の返答待ち >>609
もしかして、言い負かされるのが嫌だから今になっても論理破綻に気付いてないフリをする作戦か?
後付け?
何を言ってるんだ? >>598,602
検索したらすぐ出てきました!
JavaScriptと共通の仕様だったんですね
>>599
兄弟要素のテキスト入力でした・・・
<form>
<div id="DESCRIPTION">〜</div>
<input name="NAME" type="text">
<input name="TYPE" type="text">
・
・
・
</form>
と言った感じです。
>>603
子孫全部を参照してたんですね。
調べてみると、子要素だけを返す場合はchildrenプロパティでした
>>604
表示されるようになりました。ありがとうございます。
もしInternetExplorer型を利用する場合、マクロを使う人全員が各々参照設定を変更する必要があるのでしょうか。 >>611
> もしかして、言い負かされるのが嫌だから今になっても論理破綻に気付いてないフリをする作戦か?
それお前な w VBer完敗だな
VBAでもHTMLやJavascriptが絡むと全然ダメダメなのね
やっぱり一つの事しか出来ないと発展しないな >>612
参照設定はブック毎だからそのブックを使うなら問題無い。
しかしソースコードの配布の場合やモジュールの配布だったらそれぞれが参照設定する必要がある。
GetElement系は4つ有るけど1つだけを返すのはGetElementByIdだけ。
他はGetElement"s"というようにsが付いている。 だからなんで聞いてもいないことをいきなり語り出すの?
しかも半端な知識で >>613
論理に強い学生、弱い学生の話をしている時の話。
A「文系大学ってのは前提として教育学部とか文学部のねえちゃんが入る所という話だと思ってるんだけど」
B「ねえちゃんというのは印象操作だね。学部はたくさんあるんだから。法学部のあんちゃんと言ったら真逆の印象になるだろ」
C「教育学部、文学部にいる法学部のあんちゃんって何だ?」←これお前。 自作関数で
getFishみたいなのを作るとき
魚が複数だと想定したときどうしますか?
英単語ではfishの複数形は同型のfishです。 >>572
ありがとうございます。
できるのですね。
どうしたらいいか教えていただけませんか?
>>573
なんか金を払わないと使えないようですね。
こんなケチくさいVBAの言語ってまるでウンチですねw >>618
普通はitem等の抽象的な単語になるので、複数形がitemsになるだけ
fishの複数形は知らなかったけど、それは考えた事がないな
どうしてもバッティングしてしまうなら、fish_multiなどアンダーバー付けて判別できるようにすると思う
多分一生その事態に出くわすことはないと思う > fish_multi
fish_multi wwwwwwwwwwwwww 英語のテストじゃないんだからルール指向でfishsでOKよ
外人プログラマでもわりとこう書く人が多い >>622
すまん、アメリカ語苦手なんや
>>623
ええんか?ええんやったら遠慮なくやるぞ >>620
全く同じ構造の話。
お前はプログラミングの才能無いよ。 >>626
総務、営業の話に「理系院卒」とか言ってたのをお忘れ? w >>627
そりゃもちろん理系院卒のあんちゃんたちもExcelとVBAを使っている実情があるから言ってるんじゃんか。
その実情を踏まえないから印象操作だとなったんでしょ。 >>627
もう1度>>482を読み返せ。
>>482は「部門部署はたくさんあるんだから。」と書いてる。
総務、営業の話を否定していると何度言ったら・・・ >>627
まずな、>>477に対してお前が>>478を書いた。
その後に>>482が書かれたわけだが、しかし>>482はお前にレスした文章じゃない。
アンカーをよく見ろ。 >>477の前提に立った>>478と>>477の前提を否定した>>482でブランチは>>477から2つに別れてる。 >>628
話の流れが読めないの?
>>482と>>617が同じ構造かどうかの話な >>629-631
あれ?
>>482と>>617が同じ構造かどうかの話はもういいの?
色々大変だね w 俺がまだ理系学生だったころ
Windowsを使ってる仲間がそもそも居なかった
データ解析、シミュレーション、実験機器制御、ビジュアライゼーション、レポーティング、プレゼンテーション、ツール作成
いろいろやったけどVBAは1度も使ったことがなかった
Excelも社会人になってはじめて使った / ̄ ̄ ヽ,
喧嘩をやめゅてぇ〜♪ / 丶 / ',
ノ//, {゚} /¨`ヽ {゚} ,ミヽ
ふたりをとゅめてぇ〜♪ / く l ヽ._.イl , ゝ \
.ni 7 / /⌒ リ ヘ_/ノ ' ⌒\ \
l^l | | l ,/) (  ̄ ̄⌒ ⌒ ̄ _)
', U ! レ' / / ̄ ̄ ヽ, ` ̄ ̄`ヽ /´ ̄
/ 〈 / ', .n .| ・ ・ |
ヽっ{゚} /¨`ヽ {゚}, l^l.| | /)ノ |
/´ ̄ ̄ .l ヽ._.イl ', | U レ'//) ノ
/ ィ-r--ノ ヘ_/ノ ', ノ / ∠_
,/ ヽ rニ | f\ ノ  ̄`丶.
丿' ヽ、 `ヽ l | ヽ__ノー─-- 、_ )
. !/ ヽ、 | | | / /
/ !jl |ノ ,' /
.l l | | ,'
.| ・ 丶 ヽ | /
! ア!、, | | ,ノ 〈
./ ・ ./' ( ヽ_____ノ ヽ.__ \
/ ヽ._> \__) >>633
バーカw
同じ構造であることを説明してるんだよ。
何から何まで理解出来ねえ奴だな。 朝から晩まで延々とくそどうでもいいような話、よく続けられるなお前ら >>637-639
>>482の「理系院卒」が>>617の何に対応するのか言ってみ >>643
まだ気づかないのか w
なら、>>482の「部門部署」が>>617の何に対応するのか言ってみ >>644
何言ってんだ?
法学部 ⇔ 理系院卒
学部 ⇔ 部門部署
という対応関係だろ。
>>617がどういう意図で書いたかは知らんが俺は>>482でそういうつもりで書いた。 >>646
だよな。
誰がどう見てもそれ以外無いでしょ。
日本語が分からない奴なら理解出来ないかもしれんが。
>>642
>>644
言質を取ってから挙げ足を取るようなことは辞めたら?
明らかなんだから確認する必要無いだろ。
それとも本当に理解出来てないのかもしれんが。 >>646-647
学部と法学部の関係と、理系院卒と部署の関係が同じと言うのかよ w
書いてて恥ずかしくね? >>650
???
日本語理解出来ないの?
ええと、比喩という言葉は知ってるかい? 法学部→全体に対い一部のできる奴の喩え
理系院卒→全体に対して一部できる奴の喩え
学部→全体の喩え
部署→全体の喩え
ねえちゃん・おっさん→一部のできない奴の喩え
ねえちゃん→一部のできない奴の喩え
事務部門→一部のできない部署の喩え
教育学部・文学部→一部のできない学部の喩え >>650
対応関係ってのは単に
(あ)と(い)は(う)である
(A)と(B)は(C)である
という二つの主張における
あ ⇔ A
い ⇔ B
う ⇔ C
という対のことを言うんだから
お前が変な考えに囚われているだけだよ >>651-653
何一生懸命言い訳してるのか知らんけど
・法学部は学部に含まれる
・理系院卒と部署に直接の関係はない
ただそれだけ >>654
・法学部は学部に含まれる
・理系院卒と部署に関係はある
以上
俺がそういってるんだからそうなんだよ。文句つけんな。 前提に正も誤も無いとか言って自分の前提は無条件で信じられるべき
なのに他人の出す前提は理解すら示そうとしないダブスタ
相手にするだけ無駄なやつ > 相手にするだけ無駄なやつ
ならレスしなきゃいいのに…
悔しさ滲み出てますよ w あれ?
相手する価値ないんじゃなかったの?
ダッサ w 無駄話やら罵り合いしたいだけならスレ立ててそこでやってくんねーかなー >>660
議論に乗るつもりがないだけでお前を馬鹿にするのをやめる理由はない
お前ただ相手にされなくなったのを論破したと勘違いして生きてきたっぽいな >>664
ようやく気づいたのか
まあ気を落とさずに頑張れよ w >>661
VBAの話がしたいなら違うスレ立ててやれ >>654
引数が偶数だったら文字列を返し、奇数だったら数値を返すプロシ―ジャがあったとしよう。
お前は引き数同士、戻り値同士を比べてプロシ―ジャが2つあると言い出すバカ者だ。
構造の話なんだから引数と戻り値の関係を比較して、両者が同じ関係かどうか評価しろよ。 また頓珍漢なこと言い出したぞ w
まあ「含まれる」とかが構造の話と思えない時点で詰んでる ついでに言っとくと法学のあんちゃんは全ての学部のどれかに含まれる。
理系院卒のあんちゃんも全ての部署のどれかに含まれる。
同じ構造だ。 この数式のない一軒不毛そうな議論から規則性とか関連性を見つけるのもプロクマラーに必要なスキル やっと納得を得たようでなによりだ。本題に戻ろう。
部門部署はたくさんあり、総務や営業以外の事務部門には理系院卒のあんちゃんが点在している。
彼らは少しはプログラミングできて他言語も知っているし、申請すればVisualStudioも入れられる。
事務部門全体で見た潜在的なIT能力は高い。
一方、Excelは社内で重要な業務に使われていて部門間・会社間でExcelを介した依存関係が双方向に発生している。
Excel・VBAは必須のツールだ。
そのIT能力でExcelやVBAの能力を補うことが正しい戦略だ。
ネットに繋げないとかOSSが利用できないなんて論外だ。 >>670
> 理系院卒のあんちゃんも全ての部署のどれかに含まれる。
まじで言ってる? w
理系院卒の無職がいないとでも思ってるのか?
>>672
>>655で引っ込んどけばいいものを… >>675
ほんとだね
算数の文章題の内容を式に直したりできなさそう
俺には>>674に正しく伝わる文章なんて書けそうもない はいはい
> ・理系院卒と部署に関係はある
とか言うアホに言われてもなぁ w やっぱり>>2にもどったな
印象操作やら神の声やら今夜のおかずやら他のノイズも混ざってるけどw
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
引き続き、知ったかぶりがVBAにマウントをとる長文と
VBA老害が見当外れのレスをする長文をお楽しみください >>679
> 引き続き、知ったかぶりがVBAにマウントをとる「長文」と
> VBA老害が見当外れのレスをする「長文」をお楽しみください
最近の長文 → >>604, >>672
なるほど確かに知ったかの見当外れのレスだわ w >>682
お仕事とか…してらっしゃらないんですか…? >>477をまず読め。
ねえちゃん・おっさんは何処に所属してる?
まずVBAを使うのは会社全体の中で事務部門に所属するような、ねえちゃん・おっさんだと言ってる。
それに対してVBAを使うのは事務部門以外に所属する理系院卒だってあり得るだろうというのが>>482だ。
だから>>477と>482のやり取りの中ではその例に出てきた理系院卒は会社に所属している前提だ。
日本語弱い君は文章全体を理解しようとせずに出てくる単語単体にこだわるようだ。
アスペか何かか? >>688
ちょっと違うよ
>>482は理系院卒を「事務部門以外」とは言ってない。
事務部門にもいろいろな部署があるからね。いわゆる戦略的な「攻め」の部署には割とエリートっぽい奴が配属される。
まあスレの流れ的にはあまり関係ないからいいけど。 >>689
確かに事務部門以外に限定しているわけじゃないけど、日本語弱い君とやり取りしてると細かいことはど―でも良くなる。
もっと基本的な所が既に通じないからな。 >>691
そりゃもちろん
「事務員に高度なITは使いこなせないから不要」
っていう固定観念と戦っているのさ。
事務員の中のポテンシャルの高い連中の能力を引き出せれば
くだらないSIerなんかとおさらばできて競争力も高まるからね。 Worksheets("w").Range(Cells(1, 1), Cells(1, 43)).ClearContents
これってシートをアクティブにしなくても使えますよね?
アプリケーション定義またはオブジェクト定義のエラーが出てしまうのですが >>693
そのコードが実行されるときにアクティブになっているブックにwシートがなければエラーになるぞ
当たり前だけど
指定してるシートの名前が"w"じゃなくて"w"とか"w "になってたなんてことはよくあるし、コードの実行時にwシートを持たない別のブックがアクティブになってしまってる場合もある >>693
wがアクティブでないとエラーになりますよ >>688
> 理系院卒は会社に所属している前提だ。
で、それが何か?
含まれるの概念がわかってないの?
あと会社にいるからと言って所属部署があるとは限らんよ、社長かもしれないしね w >>697
文章をちゃんと読め。
理系院卒は"この場合は"何処かの部署に含まれている前提だ。
社長であるという前提ではない。 >>698
で、それが何か? w
ツッコミが明後日過ぎて笑うわ >>699
そういうわけで日本語に弱く論理破綻しているのがお前という結論にお前が抗えなくなったということだ。 本当に再開してるじゃん
もしかして自作自演?
だとしたら深刻な症状ですよ セルに4桁の数字を打ち込むと、その行の変えたい4桁の数字が全部入れ替わるようにしたいのですが、できますか?
いまは、デフォルトで4桁の数字を9999に入れておいて、すべて置き換えで変えたい4桁の数字に置換えています。
よろしくお願いします! そもそもは>>477と>>482のやり取りをどう解釈するかという問題だ。
日本語弱い君の解釈では>>482は事務部門にいる理系院卒という解釈だ。
そして俺の解釈では>>482では理系院卒は事務部門に限定しているわけじゃないという解釈だ。
それなのに目先の文章や単語単体にとらわれて元々の>>477、>>482のやり取りを忘れてもらっては困る。 >>702
今通勤中で手元にPCが無い。
WorkSheetのセルの値が変わったイベントで以下のようにする。
コードの中でTargetがA列の場合だけ以下が走るようにすればOK。
あとRows(i)はUsedRangeに限定した方が良いかな。
Dim cl As Range
For Each cl In Rows(i).Cells
cl.Value=Replace(cl.Value,Cells(i,1).Value)
Next >>704
悪いけど>>482は事務部門にいる理系院卒という意味だよ。
文章だけではそう限定できないから、どう取っても論理的に解釈間違いになるわけじゃないけどね。
>>477では事務部門のスタッフを「ねーちゃん・オッサン」と呼び、VisualStudioを使った開発なんかできない
人々の集まりのように描写していた。
それを「印象操作」と呼んだわけだ。 既出かも知れません。
セルに入力した式を、数式として返すvbaが欲しい。
あるセルに=A1×A2と入っていれば、指定セルに2×3=6とか表示するやつ。 >>700, >>704
> それなのに目先の文章や単語単体にとらわれて
それお前な
> ・法学部は学部に含まれる
> ・理系院卒と部署に関係はある
どんな関係があるんだ?
そもそも「含まれる」と「関係ある」という時点で比較になってないし
>>655で許してやったんだからそこでやめてりゃいいのに w >>708
>・理系院卒と部署に関係はある
単に事実として書いたんであって、論理的に読み取るとか解釈できる・できないの話じゃないでしょ。 >>710
>>・理系院卒と部署に関係はある
> 単に事実として書いたんであって
だから「どんな関係」かを書きなよ
> 論理的に読み取るとか解釈できる・できないの話じゃないでしょ。
誰もそんな頓珍漢な話はしてない やたら長文飛び交ってるからスルーしてたけどお前ら馬鹿なのか? >>713
スルーして本題が復活するまで待つか自分で振るかすればいいじゃん。 >>693
cellsにも明示的にシート指定すればいいんだよ >>712
> もう書かれているから断る
でも、どこに書いてるかは明かせないってか?
低能がごまかすのによくやる手 w >>719
みんな思ってるんだよ。
「断る」
ってな。 みんな知らんだろうけどこの法学部と院卒のくだりは昨日の夜からやってるんだからな
一旦睡眠のために休憩してたみたいだけど
こんなどーでも良いことを続けられるなんて凄いよな >>724
人間はどーでもいいことにこそ注力しちゃう生き物なんだよなぁ
でもよそでやれ >>722
はいはい w
詭弁のガイドライン
5.資料を示さず持論が支持されていると思わせる
https://ma tome.na ver.jp/m/odai/2144740466806479501 質問したいんやけど
VBA エキスパートのベーシックの資格を取ろう公式テキスト買ったんやけど
模擬試験をやろうとしたけどWindows 7までしか対応していないんや
Windows 10の場合、代替プログラムをインストールしろと書いてあるが
インストールの仕方がわからん
知ってる人いる? すげーな、ハンドルと右折の話から一週間くらいでこれとか活気があっていいなw
サマータイムの話が職場で盛り上がった時に
それくらいはプログラム作るときに考慮しておけよなって人が多くて
やっぱり求められてるのはハンドル作れってことなんだなと痛感したわ
ー応じようだなんて1ミリも思わないけどww 教えてください
マクロを登録したチェックボックスを用意して、ワンクリックでその隣のセルの値をコピーする
という簡単そうな事ができませんでした
Activecell.offset(,1).Copy
くらいの事でできると思っていました…
すみません助けてください
たぶんすぐ出来るとか豪語してしまいました
反省しています >>732
Private Sub CheckBox1_Click()
CheckBox1.TopLeftCell.Offset(0, 1) = "←ここだよ"
End Sub >>734
参考にしてできました!
ありがとうございました!!! with使うやつアホなの?
.で始まる部分を見るたびにwithを探しに行って確認する手間暇がかかって面倒。 普通の人が追うのに苦労するほどなら確かにWithの使い方としてはあまり良くない
ただ>>740の能力がなさ過ぎる可能性が微レ存 >>740
何故頑なに変数使わんのか謎だよなw
一行に何度も.出てくるの見ると吐きそうになる with無くしてメソッドチェインできるようにAPI変えてくれ このスレもルビパー臭くなったなwプロさんwwwww >>740
オブジェクトの生成とWithを組み合わせるとスコープ(っぽいもの)の終了で
リソース解放してくれるのだけは重宝している。 >>746
その使い方以外あんまり使ってほしくない
.開始はなんというか、キョドる >>747
.開始?
With Createなんちゃら〜
.なんかメソッド
End With
Nothing代入せずにデストラクタが呼ばれるのいいじゃない そういやvbaのガベージコレクションってどうなってるの?
sub・functionが終わったらメモリから全部消えるのかな >>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
全ての答えがここにある
無駄な事を簡単にするのがプログラミングの本筋なんだからさ 別にVBA覚えたからといって他の知識を覚える余地がなくなるほど
脳の容量が少ないわけじゃあるまいよ >>843
バカには分からんようだ。
決定的に出来ないのは下記。
・標準で、つまり他にインストールなり設定変更なりを必要としない。
・作ったプログラム単体の配布で別ユ―ザーの環境でも実行できる。
PythonはWindowsに標準でインストールされてるんだっけ? >>845
アホだなあ。
専用言語で対応できなければPython使えば良いんだよ。
プログラマの都合じゃなく、ユーザ一の都合に立てばPythonにはどうしてもデメリットがある。
一方、専用言語では出来ないことであればPython使えば良い。
つまり、これこそが用途が違うということだ。 >>853
質問スレなのに質問者の環境を考慮せずにそんな前提をなんで置くの?
そもそもその前提がかなり独りよがりだって気づいて?
特に2つ目の単体配布にこだわる理由は本当に意味がわからない
別にファイルが2つになって具体的にどんな問題があるの? >>853
わかってないバカはお前な
マイクロソフトがPythonを採用すると決定すればそれも一緒にバンドルされるか、
追加パッケージで楽々インストールできるようになるに決まってるだろ
そしてJavaScriptはもう既に標準で動作している
JavaScriptならPowerShellやC#と同じでOfficeとかいう高級ソフトの導入すら必要なく真の意味で標準で動作する
何度も言ってるがそもそもユーザー目線だと単体/複数の区別に大した意味はなく、
開発者からすれば単体ファイルでの開発は扱いにくいだけ
だがまあExcel PythonはVBAの置き換えになるだろうからブックに入れて配布って形になるだろうからファイル数は1になるだろう
そしてExcel JSはそもそもファイル配布ではなくURL指定だからユーザー目線だと受け取るファイル数は0だ >>854
アホだなあ。
専用言語じゃ大事なユーザーのニーズを満たせないんだって
なので汎用言語とAPIを使って作るの
マイクロソフトは専用言語なんてバカバカしい選択肢を選んだか?
マイクロソフトは賢いからPythonやJavaScriptに投資してるぞ?
VBA信者ばかりのこのスレですらお前だけだ専用言語なんてトンチンカンなことを言ってる奴は >>849
>質問者はVBAを使いたいのか?違うだろ問題を解決したいんだろ
スレタイ、読めないの?w
ここまでアホだったのかww >>856
バーカ。
今は採用されて無いんだよ。
そして採用されたらPython使うわ。
Python有利と思ったらな。 >>857
ユーザーは機能が実現出来れば言語なんて何でも良いんだよ。
お前のはプログラマの独りよがり視点ここに極まれりだ。 >>855
この前提はプログラマ視点ではなく、単にそのプログラムを利用するユーザー視点として当然のもの。
これを理解出来ない奴の方が独りよがりだよ。 >>855
複数より単体の方が使いまわしが良いのは当然だ。
別ユ―ザーにも複数を強いるのは大きなデメリットだぞ。 DLL同梱してるフリーウェアとか全滅だな
あ、フリーウェア自由に入れられる環境なんてないとかいう明後日のリプは要らないです 一番分かりやすいのは例えばVBAでもインターフェースがダメダメなのを受け取ったら俺が自分に合うように修正することだ。
だから、自分の環境にPythonが入って無ければ、もうそれだけでダメダメということだ。
実際には俺の個人PCにはPython入ってるが、俺が配布する場合、受け取る奴に入れることを強いたり、入ってることに期待したりはしない。
これ、VBAも同じ。
一般のexeファイルや、そのコードを配布する時にExcel入ってることが前提だなんてのはダメだな。 >>864
そういう前提の一般のexeプログラムは良いだろ。
でも、俺は出来るだけWindows標準dllだけで何とかするという場合もある。
当然、何ともならないからインスト―ラでいろいろ入れるというのもある。
でも、exeファイル単体、インストーラ無しが有利なのは変わらん。
そして、専用言語が有った場合は、余計なものが必要無いのがデフォルトとなる。
したがって、より有利だ。 >>864
ああ、仕事の方は正に自由に入れられないな。
有料の方が申請すれば入れられる場合もあるけどね。 >>847
>じゃないとこれからプログラミングを始める人に間違った情報与えることになるでしょ。
お前なんぞに言われなきゃならん理由なんぞねーわカス ユーザーはファイル数など気にしない
OSデフォルト以外への依存性が最も少ない言語はPowerShellとC#
専用言語ではユーザーのニーズを満たせないし鎖国政策はデベロッパやユーザーの反感を買うだけ >>869
間違いなく気にする。
気にしないなんてのはExcel使ったこと無い奴だろ。 >>869
ユーザーは動けば良いからVBAじゃなくても良い
ユーザーは動けば良いからファイル数が増えても良い
ユーザーは動けば良いのに専用言語は許さないの?w
1レスで矛盾するとはw >>869
何でデベロッパーが出てくるんだw
お前はプログラマの独りよがり視点から抜け出せない奴だな。
それにC#は違うだろw
もっともVBAでどうにもならない場面で使うのはPowerShellじゃなくてC#だがね。 >>871
動けば良いの動けばの部分にユーザーインターフェースも入ると言ってる。
つまり、機能面に入ってる。
もっともその中では最優先ではない。
しかし他言語のメリットは機能面にすら入っていないものが多い。
そして、機能面に入ってきた時はそっちを使う。
C#を使うのはそういう時だ。
めったに無いけど。 >>870
世の中には数多くのファイルで構成されたアプリがそれこそ数えきれないほどあって当たり前のようにユーザーに受け入れられてる
あなたは普段から単体ファイルエクセル縛りを自らに課して厳しい修行を続けてるからそれに慣れてしまったんだろうけど他の凡人はそうじゃないからね >>871
動けばいいなんて誰が言ったんだよ? お前だろ
こっちは動けばいいんじゃなくてファイルが複数でも気にしないと言ってるんだ
専用言語じゃユーザーの求めるものが作れないんだからゆるさんにきまっとるだろ >>872
プラットフォームを使ってアプリやライブラリを作るのはデベロッパーだ
デベロッパーが興味を持たないとユーザーへの恩恵も激減すんだよ
なぜこんな簡単なこともわからないかね 複数ファイル化なんてことをやったらプログラミングの素人ばかりの事務の現場は大混乱するぞ
意識的にディレクトリやファイルの管理が出来る奴の方が少なくて、勝手にファイルをリネームしたり移動させたりする奴が多いからな
配布時にもトラブル多発するだろうし 複数ファイルからなるExcelマクロやbatファイルを部内に配布してるけど誰からも文句なんて出たことないぞ まあいまいち想像しにくいけど問題がある事務所があるらしいのはわかった
結局のところ人による話でやはり単一ファイルを自明の前提とするのは筋が悪いのでは? ファイルがフォルダになるだけでしょ
xlsxだって要するにただのzip >>875
そっか、そんなことは書いてないかw
でもね、ユーザーの求めるのはExcel操作なんだよね。
作れるだろ、 VBAで。
一体、何を作ろうとしてるのよw >>874
それらのアプリも1ファイルならそっちが使われる。
例えば、フリーソフトなんかでアンインストールではファイル削除のみ、レジストリ、余計なファイルを削除する必要無し等とうたう場合が有るだろ。
無理して1ファイルにする必要は無い。
しかし専用言語の場合は無理して無いからな。 >>876
バーカ。
それは機能よりも優先順位はずっと低いんだよ。 >>878
俺がそこにいて1ファイルで完結するファイルを配布したら使われるのは俺の方だ。 バカばかりだ。
比べるべきは、ファイル数以外が全く同じなら1ファイルの方が使われるし、それが全てだということ。
VBAで組んだとかPythonで組んだとかは言語を知らないユーザーにとってはどうでも良いことだ。 >>876
デベロッパーが作ってるのはExcelそのもの。
それを活用するためのVBA。
それすらわからんの?w >>869
この人は鉄1kgと綿1kgどちらが重い?と聞かれたら鉄1kgと答えるんだろうな。
専用言語ではユーザーのニーズを満たせない等と勝手な謎理論を展開されても困るんだが。
満たせるに決まってるだろ。
バカじゃね―の?
こっちは満たせない場合は他言語使うと言ってるのに。
つまりVBA使った時点で満たせる場合なんだよ。 相変わらず煽り耐性やスルースキルゼロの
余裕のないおっさんで溢れてるな 他言語の話する奴は荒らしと認定し片っ端からNGでスッキリ VBAスレなら俺でもマウントとれるだろう、という輩が集まって来てる >>849
VBAで問題解決したいからVBA質問スレで質問してるんだろ
バカなのか? 老害だらけの会社だとExcelくらいしか使えないっす >>888
自分に不利な点は認めたくないような判断と願望が一緒になったような奴が多いんだな。
ftp%3A//archive.download.redhat.com/pub/redhat/linux/9/en/doc/RH-DOCS/rhl-gsg-ja-9/s1-managing-compressing-archiving.html
ファイルのグループをまとめて1つのファイルにして保存すると、バックアップや 他のディレクトリへの移動、又はコンピュータ間の移動も簡単になり便利です。
https://support.microsoft.com/ja-jp/help/14200/windows-compress-uncompress-zip-files
複数のファイルをまとめて 1 つの zip フォルダーに格納すると、ファイルを簡単に共有できます。
こんな当たり前のことが分からないのは困り者。
そもそもなんでExcelブックではzip圧縮する時に個々のファイルをそれぞれ圧縮するのではなく、1つのファイルにまとめているのかを考えれば当然のことなんだけどね。
世の中になんでアーカイブ機能が必要とされたのか分からんようじゃプログラマ失格だ。 こんな事言うと叩かれそうだが、メールで渡した時に複数ファイルにリンクしてるとダブルクリックで開いだ時にマクロ動かないってクレームくるから単一ファイル主義になった。
zipにしてもWindowsが余計なことするせいで、展開せず開かれて無事死亡 >>893
VBAというのがなんか凄いらしい程度の知識の質問者もこれまでにいっぱいいだだろう
まあお前にはその辺の言葉の裏まで読み取るのは難しそうだが
>>895
Excelマクロってある種ツールのようなもので、そんな頻繁にファイルの移動をする場面が思いつかないんどけど
配布するときに限ってもzipっていう素晴らしい技術があるんだからzipすればいいだろ
煽りじゃなくて聞きたいんどけど、単一ファイルで良かったっていうシュチュエーションを具体例出して教えてくれない? 頼まれてもいないのにこんな匿名掲示板で言葉の裏を読もうとするエスパーいて草 VBAよりC言語とかJavaとかのがまだ世間に知られてると思うけどな。 じゃ、あんたはC言語とかJavaでExcelを操作すればいい >>897
当たり前のことを当たり前と認められないほどくやしいんだな
VBA質問スレでVBAで答えを出してやるのは当たり前のこと >>897
明らかに当たり前の話だと思ってたんだが、君は違うようだから聞きたい。
zip圧縮する必要が有る場合とzip圧縮する必要が無い場合で、それ以外全く一緒の時にどっちが手間がかかるんだい? >>897
Excelブックを移動する場面が思いつかない?
君、働いて無いだろ。
ニートはExcel使わなくても良いんだぞ。
表計算が必要ならOpenOfficeやGoogleスプレッドシートをお勧めするよ。 >>902
zip圧縮する場合はわざわざ単一ファイルにする必要がなくなるんだからそれ以外同じという条件が馬鹿げてる
あり得ない前提を元に妄想するの好きだなお前 反論出来なくて別の話に持って行こうとするのはやめたまえ。 >>905
???
複数ファイルの場合はzip圧縮すれば良いと言ったのは君だろう。
単一ファイルの場合はzip圧縮する必要が無い。
で、両者の機能が同じ場合に、それを扱うのに手間がよりかかるのはどっち? >>905
というか「わざわざ」と書いてるんだから、君自身明らかに分かってる筈なんだけどなあw こいつと話してると自分の日本語が不安になってくるんだがこいつが読めてないだけだよな??? >>909
誤魔化さずに答えてやれば?
レスしてるやつ以外も見てるしさ。 >>907
zip圧縮する場合とzip圧縮しない場合は、単一ファイルにするという制限が違うのだから、それ以外の手間が一緒になることはないよね
単一ファイルにしないほうが、作る手間は少なくなる(←ならないって言いそうだけど)
だから
> それ以外全く一緒の時
という前提は、意味がない
強いて比較するなら、
単一ファイルにこだわりzip圧縮しない手間 vs 単一ファイルにこだわらずにzip圧縮する手間
で考えるべきじゃない?
>>908
「わざわざ」が修飾してるのは「単一ファイルにする」こと
つまりここで言ってるのは、単一ファイルにする必要なんてないよねってことなんだ
どうも君は、zip圧縮する事が手間だと私が内心思っている、という解釈をしているみたいだけど
上の通り単一ファイルにする事が手間と思ってるんだ
単語をなぞるだけじゃなくて、落ち着いて日本語の文法を読み解こう
大丈夫、慣れれば難しくないさ
>>910
たすけて >>911
何を言ってる?
バカなの?
それ以外の手間とは言っていない。
それ以外に両者に機能的な差が無い場合と言ってる。
単ーファイル(圧縮ファイル)にする作業を必要とせず、最初から単一ファイルになっている場合と単ーファイルにする必要のある複数ファイルの場合で、作業の発生するのはどっち?
「つまりここで言ってるのは、単一ファイルにする必要なんてないよねってことなんだ」などと言いながら「配布するときに限ってもzipっていう素晴らしい技術があるんだからzipすればいいだろ」などとも言ってる。
つまりどっちなんだ? バカ丸出しだ。
>>895に反論するためにzip圧縮の話をしたんじゃなかったのかよ。
くだらない反論(zip圧縮の話)なんかせずに最初から>>895に反論出来ないと言えば良いのに。 根本的に日本語に弱いようだから、分かりやすく二者択一を用意してやるよ。
1.単一ファイルの方が>>895のリンク先に書かれてる通り、取り扱いに便利だ
2.複数ファイルの場合でもzip圧縮すれば取り扱いの便利さは同じになるが、その作業の分手間がかかる。
君の意見は1と2のどっち? プログラムをあちこち移動させるとかセキュリティリスクじゃん
プログラムは所定の場所に配置して呼び出すものだ
それを理解してれば単体ファイルにするメリットがほとんど無いことがわかる ブックをメールに添付したこと無い人?
仕事したこと無いのかな? 自分中心で今何の議論してるのかも忘れるような奴が増えたね。 ここは議論スレじゃない、てことは忘れていいんですかね >>915
excel.exeとかのアプリケーションファイルと個々のマクロ付きファイルの区別が出来てなくて草生える ここが分かりません ←質問
○○ってxxxなんですか? ←質問
お前そんなことも知らないの? ←質問
バカなの? ←質問 >>916
ないなぁ
ファイル交換は別のよりセキュアで楽な方法で行いメールは通知のみ
ビジネスの基本だと思うけど、まさかメールでエクセル送っちゃうようなガバガバな企業なの?大企業って嘘だったのか? まあ普通はマクロ付きブックなんて送られたら真っ先に不正アクセスを疑うわな >>922
プッ。
そのセキュアな方法でも同じことに気付いて無かったのかな?
こういうこと言う奴が出てくると思ったw 目先のことに囚われて噛みつく方向性が分かって無いんだよなあ。 >>924
メールしか使ったことないタイムトラベラーさんには現代のリソース共有はちょっとイメージできないのかもしれんなあ >>922
ここじゃなく世の中全体でアンケート取ったら絶望的な結果だと思うよ
(日本だけかもしれんけど) エクセルファイル1つで片がつく学生実験やママの家計簿みたいな仕事は楽そうで羨ましい
日頃から百や千をこえるエクセルファイルを扱ってるともう物理的な事情で複数のデータとマクロを1つになんて言ってられない >>926
バカだからまだ分かってないw
ちなみにうちの会社でも専用のセキュアでファイルをやり取りできるようなシステムがある。
それでもメールに添付する奴もいるが。
しかし俺はメールにファイルを添付するようなことはしないな。
それでも、同じことだ。
だからそんなシステムのことまで書くようなムダなことはしないだけの話。
君はおバカさんだからわざわざムダなことをするようだが。 >>928
???
そんなもんまでエクセルでやってるアホ会社の話か?
それはもうエクセルでやるような話じゃ無いだろ。
あるいは文書としてファイルが多数有っても、それぞれが全然別の文書ということなら1つ1つの文書にVBAが乗っかってる方が良いけどな。 >>930
メールで1つのエクセルファイル交換してよろこんでるような規模の会社だと想像つかんだろうな
住んでる世界が全く違うのに分かり合うことなんてさいしょから無理だったんだよ 毎回荒らしいるからすげー聞きづらかったんだけどいつまでもいるから今聞く教えて
javaとかc、pythonでexcelファイルの、あるシートのあるデータ利用して云々かんぬんして結果をそのexcelに上書き
て処理するとき一番楽に実装出来るのはどの言語なの
詳細だけど特に言語の指定無し 俺が使えるのがjava.c.python.powershellくらい
大抵はexcel内のデータ利用してスクレイピングとかwebapi叩くとかして情報取得してexcelに転機
実行速度も多少は気にするけどそれよりも正確さとユーザがどれだけ楽かが重要
具体的に言えば処理に15分掛かろうがユーザがマクロ実行ボタン押すだけでほか作業やっても良いなら十分許容される >>933
もしかしたらSQLかもしれないよ
対象のExcelシートがどんなものかによるけどね >>928
> 日頃から百や千をこえるエクセルファイルを扱ってる
どんな職場だよ w >>933
https://github.com/dfinke/ImportExcel
Import-Excel input.xlsx |
ForEach { スクレイピングとかwebapi叩くとか } |
Export-Excel output.xlsx >>933
似たようなことをpythonでやってるわ
openpyxlが便利
配布するつもりならpyinstallerでexe化 PowerShell は複雑なものは、ダメ!
ファイル・テキスト処理なら、Ruby。
数学系のライブラリを使うなら、Python
Selenium WebDriver なら、Ruby, Python ファイルならpowershellだろう
しかもなんでwindowsでRuby・・・ >>932
全く反論出来て無いし、こいつも日本語に弱いようだ。
ファイル移動はメールに限らず全部アウトなことも気付か無い。
それともどうにも反論出来なくて悔しいからメールの話で憂さ晴らししてるのかな。
まあ、よく分からんが君の会社よりはデカイと思うがね。 どの言語もExcel開いた状態で動かすのに向いてない。
あとは自分の環境だけで動かすだけならどれでも良い。
他の人も動かすならPowerShellとかJavaとかかな。
どれもデータとプログラムが分離されてるのが不便なんだが、どうしてもExcelブックということを忘れる人が多いね。
まあ、VBAでも分離できるからどちらにも対応出来るけどね。 どんな職場だよw
◯◯とかかな
みたいな疑問文が含まれていれば質問スレのレスとしてセーフという風潮 >どれもデータとプログラムが分離されてるのが不便
いや一緒になってるほうが不便だろ… >>942
素人はデータとマクロを一緒にしたがる
ブックとは分離したほうが再利用しやすくて良い
分離するからvbaを使う意味はない
どの言語でも開いた状態で動かすことは簡単 ホットキーでPSコンソールを開いてActiveオブジェクトや選択オブジェクトを処理するための自作コマンドを打つ
Excelとはいえマウスはできるだけさわりたくないじゃん >>946
ブックの場合は一緒の方が便利なことも多い。
Excel使ったことない奴はそんなことも気付かない。
VBAではデータとプログラムを分離することも出来る。
両方できる方が良いのは当たり前。
開いた状態から別ファイルダブルクリックなんてかっこ悪いやり方をしなきゃならんのはいかがなものか。 Excelというプログラムを真っ向否定してるバカが多いね。
データとそれを加工する部分が分離されてて、そこに人間の判断だとかが必要無いならExcelというソフト自体いらないはず。
実際、業務システムではそういうのが結構有るだろ。
人間の判断は業務システム内でやれば良いわけだ。
Excelの場合はそういうシステムを組むなどという大変なことをせずに人間の判断でいろいろできる所が良いんだぞ。
Excelが持っている機能は汎用的だからブックに結び付いていないが、データを見ながら作業をするというExcelの通常作業を考えればそのブック特有の機能はそのブックに結び付いていた方が良いことを示している。
Excelというソフトでの作業がブック開いた状態でアレコレするという、つまりセルに色をつけるとかグラフを作るとか、そういう作業はデータを見ながらやるわけでプログラムとデータが分離されてたら不便なことを証明している。
分離されてた方が良い場合ってのはデータの値があるしきい値によって自動的に分類され、それによってセルに色が付けられるなどの場合だ。 デバグのときF8でコード1行ずつ実行できるのはいいのですが
SubやFunction呼び出しのときはわざわざ見に行かなくてよくする設定はどうしたらいいですか? 他のプロシージャを呼び出してる行の次の行とかにブレークポイントを設定してから普通に呼び出し元のプログラムをF5で実行して、ブレークポイントで止まったところからF8でステップ実行を再開すれば良いと思う
呼び出された側のプロシージャのステップ実行をすっ飛ばせるよ >>949
ユーザーはアプリを使いたいんだ
それなのにデータのロードを強要する1ファイルスタイルは最悪と言っていい
エクセル自体遅いのに起動時にデータまでロードするとか遅すぎて話にならん >>950
セルに色つけたりグラフ作るのにわざわざスプレッドインターフェースを開く必要はない
色をつけたりグラフを作るコマンドを書いてそのコマンドにデータを流し込むだけ
データと分離しているからこのコマンドは何度も再利用できる もう質問スレ消して雑談スレだけでいいよ。匿名掲示板なんていくつもあるし。 >>955
>>956
バカだろw
君はExcelでブックを開いたことが無いと言いたいのかいw データを見ながらどうするかというのがExcelなんだね。
コマンドで流し込むなら、それ以前に表の表示閲覧全てを業務システムでやれば良いわけで、Excelなんぞというアプリの需要も存在しない。
したがってExcelなどというアプリは見たことが無いと言いたいのか? excelは帳票出力ツールでもDBでもメモ帳ですら無い
表計算ソフトだって言いたいの Excel開いてデータ見ながらアレコレ弄る場合、ささっと書けたほうが便利
なのでそういう場合irb(rubyの対話実行)使ってる
書き捨てプログラムはやっぱりrubyが強い リアルタイムプレビューは簡単に実現できるのでエクセル固有の優位性とは言えないな
そしてリアルタイムじゃなくてもデータ編集、処理編集、コマンド実行のループならエクセルの狭いウィンドウでシートとIDEを行ったり来たりよりもずっと早く作業できる スパークラインをVBAで挿入したいんだけど範囲指定のところがうまくいきません。
わかる方いたら教えてください。よろしくお願いします。
call cells(10 , h ).SparklineGroups.Add(xlSparkLine, "n5: n100")
"n5: n100" のところなのですが、
range(worksheets(h).cells(14,5) , worksheets(h).cells(14 , G ))
のようにして ワークシートごとの数値群をスパークラインにしていきたいのですが、、、
何か良い方法を教えてください。
よろしくお願いします。 A「送った2つのファイルの内、拡張子がrbのファイルをダブルクリックしてください。
B「なんかファイルが開けませんとエラーが出るよ」
A「ん?・・・!ああ、それはRubyがインストールされて無いということですね。」
B「で、どうしたらいい?」
A「〜というぺージでダウンロードしてからPCにインストールしてください。」
B「分かった。」
しばらく後、
B「インストールしてたらさ、変な警告メッセージが表示されてさ、暫くしたらウチの会社の情シスの人がやって来て、勝手にソフトをインストールしないで下さいって怒るんだよ。で、Rubyのインストールはダメだって。」
A「そうなんですか。」
B「これさあ、どうしたら良いんだろう。もう駄目ってこと?」
A「・・・・・・。わかりましたVBAで組んで送ります。」
B「VBAってのは何だい?」
A「〜が〜で、〜というわけなんですよ。」
B「ふ〜ん。何となく分かったけど、どうして最初からそのVBAってのを送ってくれなかったんだい?」
A「・・・・・・・・・・・・」 >>967
んでVBAを送ったらバージョン違いやビット数違いで動かないとか
ちょっとシートをいじったら壊れて動かなくなったとか
よくわからないメッセージがでてマクロの実行ができない
とかまたトラブルが発生するんだろうな
セキュリティ設定強めで情弱顧客の組み合わせではありがちなパターンだな
最初からPowerShellにしときゃなんの依存もなく確実に動いたのにくだらないことで信用を失ってもったいないなあ パワーシェルがバージョン間の差異まで吸収してくれると思ってるパワー系バカを探してるんだけどこの辺に来てない? >>970
スゲー。
PowerShellだと削除したシートも甦らせてくれるとはシラナカッタ。 >>972
なんだ?俺はパワー系バカを探してるんだがおまえ知ってるのか? >>970
PowerShellって使ったこと無いんだけど、ユーザー定義関数とか作れるの?
え?作れないの?ゴミじゃん ビット数の違いは条件付きコンパイルで吸収すれば良いだろ >>977
じゃあ作り方教えてよ。
参考ページでもいいから。 >>977
あとユーザーフォームの代わりになるものとか、ワークシートイベントとかが拾えるのかも気になる。
この3つがスムーズに作れない限りPowerShellなんて産廃 PowerShellね。
今日、さすがにExcelとは関係ないzipの解答とできたフォルダ名の変更だからかなり久々にVBAじゃなくてPowerShellで書こうとしたさ。
v5インストール?
実行ポリシー?
VBAで良いや。 csvファイルの中身を整理整頓して別シートに並べ直すマクロを書いてるんだけどもなんか下手くそだなあと思う
具体的に下手くそな場所が言えないから改善もできない
なんかこう微妙だなあというときどうしてるの? >>984
「正規化」という
そういうのは続けてれば慣れるよ >>981
そこで躓くのは流石に意味分からん
というか最新は6だぞ >>979
function
System.Windows.Forms
Register-ObjectEvent >>988
あ、ごめんユーサー定義関数って、ワークシート上で使えるユーザー定義関数のことね?
VBAなら普通に定義したらワークシート上で使えるから区別するの忘れてたわ。
で、PowerShellでfunctionで定義した関数はワークシート上で使えるの?
System.Windows.Formsってフォーム作成するところからゴリゴリコード書けってこと?しかもフル暗記しないと無理じゃない?
VBAならポチポチっとしたら10秒で作れるよね。
テキストボックスとボタン置いてちょっとした処理書くだけなら1分で出来るよね。
PowerShellでそれ出来るの?
Register-ObjectEventとか聞いたこと無いんだけど、これも暗記しないと無理だよね。
VBAならVBEで数クリックで作れるものに、どれだけ苦労すれば作れるの? >>987
配布前提だと実行ポリシーは面倒だわな
PowerShell -ExecutionPolicy RemoteSigned …
で逃げられるけど >>990
フォーミュラのことなら知らない
ネイティブDLLとかJavaScriptなら定義できるみたいだがPSは無理じゃないかな
Add-Type -AssemblyName System.Windows.Forms
$f = New-Object Windows.Forms.Form
$t = New-Object Windows.Forms.TextBox
$b = New-Object Windows.Forms.Button
$p = New-Object Windows.Forms.FlowLayoutPanel
$b.Text = "Click Me!"
$b.add_Click({ Write-Host $t.Text }.GetNewClosure())
$p.Controls.Add($t)
$p.Controls.Add($b)
$f.Controls.Add($p)
$f.ShowDialog()
人によるだろうけど1分で十分作れる範囲だと思う
当然だけどコードなので再利用が簡単でどんどん生産性が上がっていく
VBE画面ポチポチでも再利用できなくはないけど面倒だよね
プログラミングはべつに暗記しなくていいと思うよ
わからなければ調べて自作ライブラリ化しておけば1行で済むようになるのがプログラムの魅力
何度もマウスをクリックしたくないというのが人情 >>992
これ、どんなして使うのか教えて!
PS1に記述? Excelからどんなして呼び出すの? >>992
フォームを作る部分で調べなければならないようでは凄くハードル高いよね。
誰でも(一度でも作った経験がある人なら)1分かからずフォーム作れるからVBAが良いのであって・・ベテランしか1分で作れないようなものはダメ
自作ライブラリ化しても、ある程度増えてきたら、何ていう名称だったかとか探さなくちゃいけないし結局、時間かかるよね。
>>993
たしかに、そもそもどうやって呼び出すんだろう。
エクセル上のボタンにハイパーリンク付けて実行する感じ?でもカレントディレクトリの・・・って指定出来たっけ。 >>994
そうか?
VBEのどこをどう操作したらどうなるんだってのすごくわかりにくいと思うけどな
.NETのコードを覚えるほうがずっと簡単だったよあっちはドキュメントも充実してるし
例えば自分がさっき書いたFlow Layoutの上にTextBoxとButtonが乗ってるサンプルだけど
初心者になった気持ちでExcel FormsでFlow Layoutってどうやってつくるんだろう? って考えて
Excel VBA Forms Flow Layoutとか検索キーにいれてググッてみたのだがコレだというのがいっこうに出てこない
検索してもすぐにはわからないならデザイナ頼りの初心者じゃなおさらこの時点で詰みだよね >>995
フローレイアウトが便利なのは分かるが、そもそもVBAで作るようなフォームでフローレイアウトが必須な場面はまず無い。
少なとも長年ExcelVBAで開発してきて可変サイズのフォームを作った経験はほぼ皆無。
普通にボタン置くだけで目的は達せられるのに、わざわざ不要な機能実装する必要はないと思う。 >>997
不要なのはフローレイアウトを使わなくても実現できるからで、自分が使ってないと言うのは実例 >>996
それ言っちゃうとVBA自体使わなくても目的を達せられるからVBAは必要ないってことになる
自分がその実例 このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 31日 16時間 57分 41秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。