Excel VBA 質問スレ Part57
■ このスレッドは過去ログ倉庫に格納されています
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part56
http://mevius.5ch.net/test/read.cgi/tech/1534976724/ >>623
クローズ報告ありがとさん、燻りそうだったのでクローズ連絡は助かる >>623
やっぱそっちだったか。解決したようで良かったわ。 >>616
>>621
信じられない。
なぜツール作っただけで解雇とか減給とか?
チームは違うけどチームの作業効率をはるかに高めることをするという非常にほめられることをするというのに。
別に会社になんの不利益も与えない。 >>628
普通にある
>非常にほめられることをする
ほめられない
ってか考えが浅すぎるから本当に気をつけろ >>628
問題は色々あるが、まずは許諾を得ずに勝手に構造を解析するということ。つまりリバースエンジニアリング。
次にシステム上想定していない勝手なSQLをこれまたシステム上想定していない勝手な方向から流すということ。
「会社のために」の枕詞を取り払えばこういうことになる。その枕詞が付いていたとしてもリスク管理の観点から非常に危ない。
特に、決められた手続き決められたデータが抽出できる環境がありながら全データ抽出したいとか、クラッキング以外の何ものでもない。
自分で勝手に作ったSQL発行ツールが原因でサーバに異常な負荷をかけてしまったら責任が取れるのか?
そのツールが悪意のある第三者に見られあるいは持ち出され、悪用されたら責任を取れるのか?
自分の会社に対する誠意を完全に証明できる自信があるとか、完全無欠に誰にもどこにも迷惑をかけないツールを作成できる自信があるとかなら、なおのこと手順を踏むべきだ。
黙ってやろうとすること自体が会社を納得させる自信のなさと会社への不誠実さの顕れだ。 大げさなやつらだな
普通に「ODBCでアクセスしたいからID発行してプリーズ」って管理部署に頼め お前らビビりすぎだろ
外からDBアクセスできるなら
トランケートされても文句言えねえわ 作成依頼です。
エクセルのA1セルに入力されている住所をgoogleearthで開きたいのです。
マクロでgoogleearthを立ち上げるとこまではshell関数で作ったのですが,そ
の先をどうすればよいのかさっぱりわかりません。
googleearth左上の検索のところにA1セルの住所を自動で入力して検索ボタンを押す,
というマクロを教えて頂けないでしょうか。
よろしくお願いします。 お前らが甘やかすからこういう全部作ってくれ馬鹿が調子に乗る それは、ウェブページ・ブラウザの自動操作だろ?
iMacros, Selenium IDE とか。
それか、Ruby で、Selenium Webdriver を使う CREATE SESSION しかないに決まってるだろ >>630
大げさな。
ちなみにそのデータは顧客関係の個人情報は一切含まれてなくて、含まれているのは製品や購入パーツの在庫情報だけだ。
ある作業で、その製品や在庫パーツのあるデータを使って簡単な計算をしなければならず、
現状ではいちいちWebサイトで1個1個フィルードに入力してSUBMITボタンを押して出てきたデータをExcelに貼り付けてそれを計算しなければならない。
しかしそのデータベースをexportすることができればWebサイトで1個1個地道に長時間かけて手入力で全部データをコピペしなければならない。
こんなアホなことはできない。というかこんなアホなことを真に受けてまじめにしようとする人(うちのチームの人う)ことアホだ。
ちなみにWebからExcelにexportするためのボタンはあるがなぜかほしいデータが入らないようにしているため利用できない。 そのデータベースから一挙に全データをexportできれば
あとはvlookupを使ってすべての作業が一瞬で終わり。1分。
それができないから、上司からしめきりが1か月後みたいに設定されてる。 【誤】
ちなみにそのデータは顧客関係の個人情報は一切含まれてなくて、含まれているのは製品や購入パーツの在庫情報だけだ。
ある作業で、その製品や在庫パーツのあるデータを使って簡単な計算をしなければならず、
現状ではいちいちWebサイトで1個1個フィルードに入力してSUBMITボタンを押して出てきたデータをExcelに貼り付けてそれを計算しなければならない。
しかしそのデータベースをexportすることができればWebサイトで1個1個地道に長時間かけて手入力で全部データをコピペしなければならない。
こんなアホなことはできない。というかこんなアホなことを真に受けてまじめにしようとする人(うちのチームの人う)ことアホだ。
ちなみにWebからExcelにexportするためのボタンはあるがなぜかほしいデータが入らないようにしているため利用できない。
【正】
ちなみにそのデータは顧客関係の個人情報は一切含まれてなくて、含まれているのは製品や購入パーツの在庫情報だけだ。
ある作業で、その製品や在庫パーツのあるデータを使って簡単な計算をしなければならず、
現状ではいちいちWebサイトで1個1個フィルードに入力してSUBMITボタンを押して出てきたデータをExcelに貼り付けてそれを計算しなければならない。
しかしそのデータベースをexportすることができればWebサイトで1個1個地道に長時間かけて手入力で全部データをコピペする必要はない。
こんなアホなことはできない。というかこんなアホなことを真に受けてまじめにしようとする人(うちのチームの人う)ことアホだ。
ちなみにWebからExcelにexportするためのボタンはあるがなぜかほしいデータが入らないようにしているため利用できない。 >>642
>>631
SELECT権限すらつけてくれないってなら殴れ システムを作る側の目線でいうと、UIベースで自動化しようとするのは迷惑だから頼むからやめろ
普通に権限を貰うか、システム改善を依頼してくれ 外部の部署が、DB に直接アクセスすることは、普通は認められない
他の部署の人が頼みにきて、裏口でやっている話はよくきくけど、危険な行為。
ルール自体を変えないで、ルール違反の形で、黙って下の者がよくやるけど、
上の者が把握・管理していないから、会社として成立していない
ドイツ車で、大問題になった。
下の者が、勝手にプログラムを書き換えていた >>640
大げさでも何でもない。
Webから取ってくるのだって関係部署に連絡して承認をうけるのが普通。
ましてDBに直接繋げたいなら上司に相談しとけ。 >>645
外部の部署と言うより「データは社内の共有データでDBはシステム部が所管している」
ように読めるけどね。
昨今のデータ活用・データ民主化の流れでエンドユーザにSELECTさせるのは当然になってる。
もちろん無断でやるなんてのは論外だが。 >>627
どういう意味?
可視セルをそのまま配列に放り込んでも連続した部分しか取り込めない仕様だけど 今回ばかりはRubyさんの言う事が正しい気がする
今の人件費はこれだけです
RPAでやったらこうなります
DBへのアクセスを許可してもらえればこうなります
だからこうして欲しい、と、数字を出して説得するのが
いんじゃないかな >>649
アマチュアならこういう意識が薄くてもしょうがない >643
SELECTは危険ではないけど重くなるんだよ
特に初心者が書いたwhereもしないSELECTとか重くてかなわん
だから素直に頼んでくれ、ほんと
>>649
それでいいよ
全件SELECTしてからaccessでフィルタする奴は本気で死ねとしか思わん >>640-642
目的:Web系在庫管理システムのデータ抽出の際の項目選択の手間を省きたい
手段:以下の作業を自動実行する
1.在庫管理データベースからすべての情報をその都度抽出する
2.全データから必要な情報のみを抽出し、加工(計算など)を行う
この、小さな目的達成のために払うリスクがでかすぎることを解っていないところとか、
俺の知るクビになりかけた人物と同じこと言ってて流石に寒気がした。
もっともその人が作ったのはエンドユーザーが抽出条件をある程度自由にカスタマイズ・保存できる文字どおりのEUCツールで、
ハイコストなSELECTが発行されまくった結果システム全体のパフォーマンスが微妙に落ちて、それでベンダのSEが気づいたんだが。
はじめから管理部署なりベンダなりに相談しておけば:
A.システム内に解決する手段が既にあるかもしれない(標準のEUC機能に抽出条件を保存できたり)
B.システムで対応可能だったかもしれない(SEが管理する簡易的な抽出機能への追加など)
C.システムで対応できずともベターな解決手段を探れたかもしれない(APIへの接続許可など)
>>652も言っているがDBもサーバも回線(帯域幅)もタダではないし有限だし消耗品と思え。 ユーザーに触らせたくないDBとEUC用DBの違いって何なんですかね? >DBもサーバも回線(帯域幅)もタダではないし有限だし消耗品と思え。
そうだね、業務用途のサーバーと回線は従量制と知らない人が多すぎる
逆に従量制じゃなければ全員に迷惑がかかるって事になり、それまた迷惑
開発の端の端にいるなら、回線ってとんでもない金額がかかってるって知っておいてほしい
自分のPC内でぐるぐる回すだけならまぁわからんでもないけどな サーバー内で、ちゃんと絞り込みが出来ているかとか、
実行計画を見て、確認したり
高度情報処理資格のDB スペシャリストを取ったり、ミックの本を読んだり、
勉強した人しか、DB を触っちゃいけない DBスペシャリスト持ってないの丸わかりだな
DBスペシャリストで扱うのはデータモデリングやアプリケーション設計が中心で、
クエリチューニングのような運用寄りの出題はほとんどない そんなハードル高くしてどうすんだよ
ビジネスで競争に負けてたらシステムの予算だって出なくなるんだぞ なぜか質問そっちのけでレベルの低いマウント取り合いになるプロさん達w おれも素人だが、今回の件はいくらなんでもアホすぎる質問をした素人VBAerが悪いと思う DB スペシャリストの過去問題をやればよい
上司から、レコードの絞り込みが甘いと注意されました。
表設計をどう直しますか?
もちろん、出題されている ExcelVBAのスレでいきなりDBスペシャリストの話題持ち出すのはどこのアホウなんだよ いきなりってわけじゃないけどな
それなりの流れがある まぁ使用する範囲で同じ内容のテーブル作っておいて
マスターの方のテーブルの登録や更新、削除をトリガーとして
別途作った同じ内容のテーブルに反映させた側のテーブルを見に行くようにしたりする
システムには当たったことがあるけどね。
何にせよ余計なことはやらせない方が無難ではあるよ。 >>652
Accessのウィザードで作ったリンクテーブルやインポート使ってるんだけど
これって該当します?
sharePointのリスト取り込むときってどうするのがいいんだろう? >>666
勝手に接続してるなら、どういう方法だろうとアウトと思っておいたほうがいい
重さで言うなら、SQL直接書くかせめて確認するのが一番確実
とにかく最初にwhereでフィルタするんだ
そのフィルタしたテーブル同士で結合したりするんだ。それだけ覚えておけばどうにかなる
リンクしてるだけだと特に意味はないわ
ってかこの辺はDB板行ったほうがいいだろう SELECT TOP 100 * FROM TableA 許可もらわんと管理部門から逆にIPたどられて社内のPCから不正なアクセスが頻繁にあるって言われなければいいね コレがエクセルのシートしか使えないヤツラの知能の限界
しょうがない
どこにインデックスはってるか見もせずに
where句で巨大なテーブルをいきなり検索したりするからな
そしてフルスキャンになる
そしてcountで件数を確認もせずにいきなり大量抽出する
知能が低いヤツラにSQLさわらせるとこうなる
もうね予見できるワケ 低学歴知恵遅れの知能が低いヤツにSQLはキチガイに刃物
低学歴知恵遅れの知能が低いヤツにオブジェクト指向はキチガイに刃物
銃刀法違反なみの重罪
コレは定説 そもそもdbにはいっぱい個人情報が一杯つまってる
こっちのほうが重大な問題だからな
表ごとにセキュリティレベルがあるのも当然
そういった制限すらないのはヤバイ会社
だれがいつそういった情報を取得スしたか
どんな業務で誰の承認で取得したか
ちゃんと履歴が必要になる excel vbaで語ることなんかあんの
excel vbaで語るなら、それを併用して得られるメリットぐらいしかない
excel vbaでなんかいいことあった? >>676
おまえはなんの話をしているんだ?スレ名読めんのか? >>676
その質問はご法度
無視されるか話をそらされるだけ
>>677のようにね 私たち日本人の、日本国憲法を改正しましょう。
総ム省の、『憲法改正國民投票法』、でググって
みてください。拡散も含め、お願い致します。 別に無いならないでそれでよかろう。話題がないとお前は困るのか? yahoo知恵遅れなら毎日うんざりするような質問だらけだよ 知恵遅れでの"VBA" "VBスクリプト" "マクロ"いずれかを含む質問数、過去24時間に76投稿
回答者もうんざりしてる ここが面白く無いせいでPowerShellerがExcelスレまで荒らしに来てて困る。 カンマ区切りのcsvをデータインポートで読み込むと一部がズレます
csvを一度メモ帳に全部貼り付けて、それをexcelに貼ったあとデータ区切りでカンマを選ぶと上手く取り込めます
この挙動の違いがイマイチよく分からないんですがどうしてメモ帳に貼り付けることで上手く読み込めるようになるんでしょうか そら貼り付けとデータインポートは別の機能だからだよ
Excelは既存の機能の動作がわずかでも変わったら必ずマクロが動かんようになったやないかどないしてくれんねんボケと山ほどの馬鹿が怒鳴り込んでくる
似た機能を追加したから共通化しますね〜と安易に仕様変更できず、大量の機能の重複を抱えながら昔のバグっぽい挙動も尊重して個別にメンテしてるの
このスレにいるような連中のせいでな >>692が正しい。 >>691は戯言なので無視していい。
メモ帳貼り付け保存後、と前とをバイナリー比較すれば理由は見えてくるはず ありがとうございます
bomとかそういう感じですかね
また、うまく読み込めないのは一部utf8形式の文字コード?があり、それをsjisに変換出来ないのが原因のようでした
データインポートでutfを選択したら無事開けました >>694
一部だけUTF8?
混在してたってこと? ダブルクォーテーションとカンマのくくりが上手く行ってないとか >>696
あたりまえ、UTFもShiftJISも英数は同じ セル内改行でひっかかってるのかも
改行コードは何種類もあるし、読み込み方法によって正常に認識してくれないケースがあるから >>700
メモ帳経由だとうまくいくってのと整合しない >>694 で解決報告あるのに何をいつまで考えてるのw 自分でもしっかりと把握してないので書くつもり無かったんですが一応解決の詳細書きますね
まずダブルクォーテーションやカンマはないです
あと自分の理解と説明が足りてませんでした
一部utf8ではなく全部utf8で基本普通の英文字と数字なのでsjisでもぱっと見問題なく開けるけどクエリストリングのカラムにノーブレーキングスペース?やsjis対応してない文字列があり、そこで上手いこと処理出来てなかったみたいです
utf8をsjis指定でデータインポートしようとしたのが間違いの発端でしたスミマセン WorkSheet_Changeでセルの内容に変化があったときだけ文字色を赤にする処理を行おうとしています
対象が単体ならApplication.Undoで比較できますが、複数の場合1セルずつに対してUndoができないため
対象全体の内容を一時シートにコピー→For Eachで元データと1つずつ比較しているのですが、もっとスマートな方法はあるでしょうか? >>705
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Font.Color = -16776961
End Sub
これで良いのでは??? 書き方が不正確でした
「対象セルの値が変更される前と一致しない場合にのみ」文字色を変えたい、です >>707
あぁそういう事か、すまん
今「excel change before」で調べただけだけど、そうするしかなさそう
selectionchangeでselectionの内容を保存しておくみたいだねぇ
よー考えるわ >>708
そうだねぇ
なんか赤にする以外の方法の方が良い気がする くそう、↑のやり方以外が思いつかない。
セルにtagプロパティでもありゃ前値保持できるのに。。
赤字にしたい目的がわかれば、そもそも別の簡単な手とかあるかも?(逃げ) >>711
Excelをフロントエンドにしたデータベース管理です
一度に複数のデータを弄ることが多いため、フォームではなくテーブルに直接データを読み込み、編集後に更新といった流れで、この更新部分の判定を文字色で行っています
作業者自身も更新前にどこを変更したかひと目でわかると考えてこの方法を取ってますが、もっとベターな方法があるなら全然乗り換えたいです 編集後・更新
この間に変更する予定のセルに対して処理をかませることができそう、というか出来るだろう Vue.js などのウォッチャ・データバインド・リアクティブシステムだろ
データ更新前後のフックは、無いのか? Ifとforだけでとりあえず簡単な処理くらいはさせられるようになったんだけど、次は何を学べば順当にステップアップできる?
イベントプロシージャもダブルクリックだけは理解した
Constで柔軟なコード書くのも学んだ
配列はいまいち便利な使い道がわからない >>715
処理の制御自体は分岐と繰り返しを覚えれば大抵なんとかなる。
ロジックをよりスマートにしたい。処理時間を短縮したい等なら、配列やアルゴリズム等の効率的なやり方が必須になる。
特に、セルを使うならば配列は絶対使ったほうがいい。二次元配列と聞くとよくわからなそうだが、
(y軸,x軸) を指定するだけだから、一見難しそうに見えても簡単だよ。
あとは、何をやりたいかによるかな。それによって取得するべき技術が決まってくると思う。 >>715
配列使った方がいい理由を補足すると、
配列変数を使えば、変数の数を大幅に減らすことができるかつ、ループ文を使って1から最大数までアクセスがしやすいから。例えば、人間という名前の違う変数を別々に100人定義するのは面倒。
だが、配列変数を使えば1行で定義できる。
セルに関して言うと、VBAはセルにアクセスした際に大幅に時間を使う。値を編集するたびに毎回セルにアクセスするよりも、配列変数に格納をして、まるごとセルに代入するようにすれば、アクセスは1回で済む。
(それっぽく例えるなら、積み木を片付ける時に1つずつ摘まんで箱に入れるか、形を整えた後まとめて箱に入れるかの違い) >>715
次は違う言語を学ぶといいよ
pythonとかがオススメ >>715
シートはセルの二次元配列
ブックはシートの一次元配列
合わせて三次元の配列
元々エクセル自体が配列の塊なので、
vba上だけで配列を持たなくてもなんとかできるようにはなっている
他のプログラムだと配列なしなんてありえないんだけどね
vbaで配列を扱う大きなメリットとしては、爆速にできる事
で、そこまで来たら何を覚えるかだけど
・objectの扱い。set foo = sheets("name")
・fso(filesystemobject)
この辺かね〜
他言語やるなら俺もpythonがオススメ >>719
>合わせて三次元の配列
「三次元配列」と書かないところが正確でイイ! あ・・・Application.Workbooks(3).Worksheets(1).Cells(1, 1).Characters(2, 2).Font.Color = vbRed 参考になります!説明がとても分かりやすいですね 尊敬します
配列を学ぶことでの処理の高速化も理解できました
setはサンプルコードでよく見かけるなとは思ってたけど、詳しく掘り下げてみます
fsoは初耳なのでじっくり学びます
Pythonも並行して学びたいと思ってたのでちょうどいいタイミングみたいですね
ありがとうございました。 >>715
余裕があるならアセンブリ言語をちょっと齧っとくのがいいと思う ■ このスレッドは過去ログ倉庫に格納されています