Excel VBA 質問スレ Part57
■ このスレッドは過去ログ倉庫に格納されています
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part56
http://mevius.5ch.net/test/read.cgi/tech/1534976724/ 両面2upで印刷とかだとpowershellでも大変じゃないの >>593
難しいだのなんだの言われてたけど、テキトーにやってたら簡単にできて拍子抜け
http://fast-uploader.com/start/7094526398997/
Book1.zip
を
Book1.xlsm
にリネームしてくれ
A列はファイル名
B列はURL
C列はokかNGか。アテになるかどうかはシランので、落とした後のファイル数はなどは確認したほうが良い
コードの編集は適当にやってくれ
今はテスト用に3つだけにしている
あと保存するファイル名は被らないようにかなり適当に作っている。適当に変えてくれ
で、pdf印刷はこの辺に任せるといいと思う
https://dekiru.net/article/1745/
あと、参考にしたサイト
https://tonari-it.com/excel-vba-windowsapi-urldownloadtofile/
特に何の関係もない、無害なサンプルpdfが置いてあったサイト
http://www.shikisensha.com/pdfs.html >>593
powershellスレで聞いた方がいいよ
一括ダウンロードも印刷もけっこう簡単にできる
VBAでもできるけどちょっと面倒だから そこまで簡単にできるならもうここで書いてしまって良いんじゃない? >>593
そんなのjdownloader2とか
webブラウザのアドオン使えよw >>600
あれ、そうか
PowerShellあんまり知らないから見てみたかった >>601
拡張機能探すのあんまり得意じゃないわ
結局作ったほうが早い
>>603
ざっこw >>597
URLDownloadToFile というAPIがあることをいま知った。
これまで都度 MSXML2.XMLHTTP を作って .Open "GET" していた。
API一発ならその方がスマートだしプログラムをそれベースに書き換えようかと思ったけど、
IDとパスワードを渡さなきゃならない場合は使えないのかな? N列に時刻データが入っている
但し一部の行はブランク
時刻データは"00:10:00"のように時・分・秒が指定されている
表上は"00:10"つまり「時・分」のみを表示
この時刻データの分の1桁目が9の時のみ1分繰り上げて0にしたい
つまり
"00:19:00"→"00:20:00"
"00:59:00"→"01:00:00"
になるようにしたい
セルは複数セルを不連続で選択し、ブランクはパスして
分の1桁が「9」の場合のみ1分繰り上げするにはどうすれば良いでしょうか? >>606
秒はどうするの?19分30秒だったら20分00秒にするってこと?
とりま、基本的な処理は分を10で割った余りを求めて、9だったら1を足す
それを選択された全セルに対して繰り返す >>606
O1=N1+IF(MOD(MINUTE(N1),10)=9,TIME(0,1,0),0) >>565-586
Ruby で、そのテキストの該当部分を表示して、確かめる。
他の言語でもよい
>>606
いったん時刻に変換して、1分足してから、また元の形式へ戻す。
つまり、表示形式 → 時刻 → 表示形式 >>565-586
制御文字の可能性があるから、文字列をバイナリで見る
文字コードや、UTF-8 ならBOM の有無
セルに入力した時に、特別な意味を持つ文字が入っているとか?
シングル・ダブルクォーテーションなど? 会社で社内Webのform類のsubmitボタンを押して出てくるデータベースのデータが抽出されるシステムがあります。
(まあ、このようなシステムはどこにもあると思いますが。)
これ、どうにかして大元のデータベースのデータを丸ごとExcelにインポートする方法ってないですか?
Webのソースを見れば、データベースのサーバのアドレスが書いてあって、それをVBAで取り込む、みたいなのをイメージしているのですが
技術的には可能ですよね? 技術的には可能だがお前には不可能
イメージが見当違いだ WEBサーバ自体をハックできるなら。
大抵PHPか.Net実装でソースからは見えない あまりわたしを怒らせないほうがいいぞ
わたしは怒ったら怖いんだぞ コンプライアンス違反で懲戒解雇&賠償請求訴訟起こされたいのなら、止める義理はない >>611
会社のシステムなら上司に相談しろよ
社内規定に違反すると最悪解雇もあるからな >>611
怒らせたくはないけどまともなシステムならクライアントから見えるところにデービーのアドレスは書かれてないよ クライアント↔Webサーバ↔DBサーバ
ブラウザがやり取りするのはWebサーバ
その先にはアクセス出来ないのが普通 普通に上司経由でシステムの所管部署に相談してAPIを共有してもらった方が安全だろ
自作コードでサーバーを直接叩くのはいろんな意味で危険 焦っとるなプロさんwおまえらプロさんのコードも十分すぎる程危険なんやがw >>611
出発点から「自分で勝手に何かする」というのが間違い。
他の人も言うとおり、まずは自社で管理してるDBなら管理部署に、ベンダのシステムであればそのベンダに、やりたいことを伝えて対応してもらう。
対応してもらうのが無理なら、管理部署やベンダにAPI等を利用してツールを作成して良いか確認を取る。
もしOKなら、API等を利用してツールを自作する。完成したら必ず管理部署やベンタにツールを見てもらう。
勝手にベンダのAPIを利用してSQL発行ツール自作してクビ寸前まで行ったことがある人を知ってる。
大幅減俸で落ち着いたらしいけど今はもういないから実際のところどうだったのかは知らんが。 >>607-609
ども!
ワークシート上なら"00:59:00"+"00:01:00"→"01:00:00"みたいに単純に繰り上げが出来るので
マクロで同じような計算が出来ないかと考えたんだけど(>>609さんのコメがそうかな?)
具体的な手順が思い当たらなかったので、原始的なやり方で作ってみました
strTime = Format(cell.Value, "hh:nn:ss")でセルの時刻を文字列に読み込み
時(strH)・分(strM)・秒(strS)を切り分け、分の1桁目が9の時だけ
intH = val(strH)、intM=val(strM)で数値化した値から
sumM = ntH*60 + intM + 1
intH = int(sumM/60)、intM = sumM - intH *60 を計算し
これを時刻に直してセルに戻す、という手順で出来ました 先週文字化けの件で質問をした者です。
あれから例のマクロをデバッグし、無事原因がわかりました。
文字コード云々ではなく、単純なロジックミスという落ちでした…。
お騒がせをしましたが、ご助言くださった方々ありがとうございました。 オートフィルターをかけた状態の表を配列に取り込むには、Copy Pasteで一旦どこかに貼るしかないのかな? >>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?
混在してたってこと? ■ このスレッドは過去ログ倉庫に格納されています