20/09/20 22:16:21.98 ce1O3kmIH.net
>>361
>>363
フローチャートは書けても
オブジェクト指向というものがあるということがなんとなく判っていても
じゃあオブジェクト指向できっちり設計しようという発想が浮かばないというかまだ怖さがあるんだよね
MVCって言葉もネットサーフィンをして先週巡り合ったくらいの素人だから
とりあえず新たな設計手法を試そうと思っても
何に手をつければいいかわからん
368:デフォルトの名無しさん
20/09/20 22:48:07.21 lUm0Ft460.net
=EVALUATE()を使ったらマクロだよって保存するときに言われた。
見た目関数なのに実はマクロっていうものが他にどんなのがあるか知りたいんだけど、こういうのなんて言うの?
検索ワードが思い付かないんだけど知ってたら教えて。
369:デフォルトの名無しさん
20/09/20 22:53:39.67 Q2tD94P+d.net
>>364
いや、VBAはあまりオブジェクト志向とは親和性がないんだよ。
VBAそのものの根幹はオブジェクトそのものを扱うし親和性も有るんだけど、それで何かを作る時には俺はあまりオブジェクト志向で作らないな。
それでも、感覚的にピッタリ来るときもある。
そういう感覚の為にも他言語の経験が役に立つ。
でも、VBAでオブジェクト志向って上級者じゃないとピッタリ来ないんじゃないかな。
370:デフォルトの名無しさん
20/09/20 23:22:55.87 szIFBvS40.net
>>365
Excel 4.0 マクロ
371:デフォルトの名無しさん
20/09/20 23:26:29.37 lUm0Ft460.net
>>367
さんきゅー
372:デフォルトの名無しさん
20/09/20 23:28:59.95 bN/HvUsh0.net
>>358
crでセル内改行はしない
373:デフォルトの名無しさん
20/09/20 23:29:16.08 pX+ICxi/0.net
フレームワークどうするよ
374:デフォルトの名無しさん
20/09/20 23:30:38.40 szIFBvS40.net
そもそもVBAが古いMS-BASICの言語仕様をほとんどそのまま踏襲してるもんだからオブジェクト指向との親和性はあんまり高くない
まだVB.netの方が色々やりやすい
375:デフォルトの名無しさん
20/09/20 23:38:32.30 wTyEOUZY0.net
>>369
セルをアクティブにするとCRでも改行するらしいよ
自分はそういうよくわからない挙動に振り回されたく無いから変換するよ
376:デフォルトの名無しさん
20/09/20 23:40:59.31 XhiE7Cxv0.net
>>372
らしいよ
377:デフォルトの名無しさん
20/09/20 23:44:11.30 wTyEOUZY0.net
LFとCRLFが混在するのは確かめたよ
なので片方に寄せてる
CRも混ざる可能性はあるのでついでに処理してるよ
378:デフォルトの名無しさん
20/09/20 23:47:19.77 GTzW+qv5H.net
>>366
なるほどそうなんですね
別言語で勉強してみます
379:デフォルトの名無しさん
20/09/20 23:51:14.87 bN/HvUsh0.net
セル内で改行するとlfが入る
テキストファイルとかでcrlfで改行されたものをセルにコピペすればcrlfがそのまま貼り付けられるが、lf部分が改行されるだけでcrは無視される
380:デフォルトの名無しさん
20/09/21 23:04:27.19 lAfdaJg/0.net
もともとマック用のソフトウェアだから、改行コードが揃っていないんだ。
381:デフォルトの名無しさん
20/09/22 09:46:47.28 9vuxubOza.net
で、そのままの仕様で残すんだろ
382:デフォルトの名無しさん
20/09/22 09:47:44.43 9vuxubOza.net
変に直すと他で問題が起きるかもしれんし
383:デフォルトの名無しさん
20/09/23 18:03:19.32 a1crOWFAM.net
今開いてるエクセル3つを左右で3分割させるマクロとかありますか?
384:デフォルトの名無しさん
20/09/23 18:23:33.24 18wwGwYm0.net
表示→整列じゃだめなのか?
385:デフォルトの名無しさん
20/09/23 19:23:23.78 nN1KQy3b0.net
あるけど、マクロっていうかWindowsAPIで画面サイズ調整だろうな。
3画面用意する方が楽かも。
386:デフォルトの名無しさん
20/09/23 20:26:43.04 kiC/kEHG0.net
Windows.Arrange ArrangeStyle:=xlVertical
387:デフォルトの名無しさん
20/09/23 20:34:38.55 Dfniq8Ns0.net
>>381
ありがとう
>>383
本当にありがとう
馬鹿すぎる質問して親切に教えてくれて本当に感謝
教えてくれたコードの方を頂きます
3画面揃ったときについでに分割させたら良い動きしてくれました
めちゃくちゃ後付けですみませんが
これを一番右でこいつは真ん中とか
任意の配置は流石に無理ですか?
出来そうなら自分でも何とか調べてみます
388:デフォルトの名無しさん
20/09/23 21:30:49.65 kiC/kEHG0.net
>>384
できる
389:デフォルトの名無しさん
20/09/23 22:06:19.89 gKXTj3UI0.net
こういう馬鹿の特徴は、少し教えるとつけあがって自分で考えることもせずあれもこれもとねだること
少しは頭を使えよ
390:デフォルトの名無しさん
20/09/23 22:26:51.67 uvIhcfbN0.net
特徴っていうかこれいつもの人
391:デフォルトの名無しさん
20/09/25 20:09:48.08 48EvNsnc0.net
accdb → 問題なく型指定出来る。
csv → schema.iniで型指定出来る。
自シート → どうすんの? IMEX=1も利いたり効かなかったりで当てにならん。
392:デフォルトの名無しさん
20/09/25 21:07:06.86 1nrszLVg0.net
そういう報告はいらないです
393:デフォルトの名無しさん
20/09/25 21:36:41.69 WSuN06d1F.net
罫線の所属するセルについて質問です
セルの値を条件にして罫線の種類を変えようと考えているのですが、
隣合うセルの境界線はどちらのセルの罫線が優先されて表示されるのでしょうか?
よろしくお願いします
394:デフォルトの名無しさん
20/09/25 22:18:01.90 JBJKUwWVM.net
>>390
実験して報告よろしく
395:デフォルトの名無しさん
20/09/25 22:34:46.55 48EvNsnc0.net
後から指定した方だな。
思いっきり拡大すれば、線が2本引いてあるのが見えるのかと思ったが、そんなことはなかった。
ちなみに、ストIIで2人同時に投げ技をかけた場合、どちらが優先されるのかはランダムで50%/50%らしい。
396:デフォルトの名無しさん
20/09/25 23:34:29.90 3gugGrYy0.net
>>390
これ、たしか罫線の種類で、基本ごっつい順に優先順位があったはず
ついでに、セルの書式設定で罫線設定すると、隣のセルの罫線設定も消えたり変わったりする
397:デフォルトの名無しさん
20/09/26 11:57:49.22 aYgi9d/P0.net
太いほうだった(Excelばーじょん2016)
URLリンク(i.imgur.com)
印刷境界とかは分けて認識されてるから、なんだかんだ自分のコードを検証したほうがいいな
398:デフォルトの名無しさん
20/09/26 13:23:27.50 aYgi9d/P0.net
あ、宣言とかしときながらシート指定するん忘れてやがる
399:デフォルトの名無しさん
20/09/26 19:01:46.19 J5kcfwi60.net
ワラタ
400:デフォルトの名無しさん
20/09/26 20:07:30.98 wDXyaCpN0.net
getElementBy飽きたんだけど、RPA的制御じゃなくて、htttp通信を駆使してどうにかする、みたいのない?
APIとか使えない古いシステムに対して。
401:デフォルトの名無しさん
20/09/27 07:29:13.82 KJpIeh7z0.net
htttp通信がわからんがセキュリティー的に問題起きるんじゃね
402:デフォルトの名無しさん
20/09/27 15:17:02.78 a7rnW+2W0.net
htttpは、ハイパー・トンマ・トンチンカン・タコ・( ´,_ゝ`)プッの略かな
403:デフォルトの名無しさん
20/09/27 15:27:50.06 o5RjmHqkd.net
>>397
アセンブラやりたいってこと?
というのと同じ話。
InternetExplorer.Applicationじゃ無くてもみんなgetElementBy使う。
こういう便利なものを放棄するならhtmlのソースを自前テキスト処理で頑張るしかないと思うが。
普通はmsxml2.xmlhttpとかでソース取得して、それをDocumentに入れてgetElemetsByだな。
404:デフォルトの名無しさん
20/09/27 17:34:22.53 V5qiYsAI0.net
>>397
その辺は自作ライブラリでビブラートに包めばOK
405:デフォルトの名無しさん
20/09/27 18:37:04.65 ZqjiPey8M.net
>>401
> >>397
> その辺は自作ライブラリでビブラートに包めばOK
震わせてどうすんのさ。オブラートだろって釣られた
406:デフォルトの名無しさん
20/09/27 18:40:59.82 6iq7bspN0.net
>>400
マジか!
xmlがどうとか、APIがないとダメなんだと思ってたわ。
407:デフォルトの名無しさん
20/09/27 18:44:20.59 6iq7bspN0.net
ん?
それだと、逆に何のためにGUI操作(IE制御)の方法があるの?
初心者用?
408:デフォルトの名無しさん
20/09/28 07:43:08.08 VRZutR0gd.net
>>403
勘違いしてる。
別のAPI使ってるということだ。
で、別のAPIにもgetElemetByが出てくると言ってる。
409:デフォルトの名無しさん
20/09/28 13:09:33.23 LAwWa5+y0.net
RPA的制御がなにかよくわからんが
getElementしたくなかったら、API利用してxml取得しろみたいな話を言われたんじゃないか
それでAPI使えないけどgetElementしない方法ないの?と
取得できるものがhtmlなら、すなおにgetElementしとけ 以上
ちなみにxmlだろうとhtmlだろうとcsvだろうと、それは多くの場合httpで取得してるだろうがな
410:デフォルトの名無しさん
20/09/28 15:51:42.57 m7hqrCGdM.net
>>402
オブラートに包んでもおかしくないか
普通ラップするとかカプセル化するとか言うんじゃ・・・
>>404
どれもhttp通信でデータを取得できる共通点があるだけで、目的はそれぞれ違う
IEクラスはブラウザを操作する為のコンポーネントの一部
mshttpクラスはIEがスクリプトでhttp通信をするためのコンポーネントの一部
WinHttpRequestクラスはWindowsがhttp通信をするためのコンポーネントの一部
(コンポーネントっていうのはプログラムの部品として使うのが想定されている小さいプログラムのこと)
それぞれ色んなシステムで使えるようにCOMインターフェースっていう取説のようなものが実装されていて、VBAはそのおかげで間借り出来てるだけ
どれもVBAの為だけに作ったプログラムではない
ちなみにIEクラスの利点として、ブラウザ上でjsが実行されているページにアクセスすることができる点がある
411:デフォルトの名無しさん
20/09/28 16:26:17.24 gMLgNw+wd.net
それをVBAでやる意味は何?
もっと他に簡単に出来る言語でやれは?
412:デフォルトの名無しさん
20/09/28 16:37:22.01 oE/worxcM.net
結果をexcelで扱うならVBAが最適では?
413:デフォルトの名無しさん
20/09/28 18:37:13.13 jqaTJ4CpM.net
CSVで吐いてExcelで開くだけだろう
414:デフォルトの名無しさん
20/09/28 19:21:37.82 JyFvX52s0.net
あーい
あーい
ああああーい
415:デフォルトの名無しさん
20/09/28 21:25:16.14 d76PIxro0.net
質問させていただきます
ユーザーフォームのテキストボックスにフォーカスがあたってる(入力状態)でwindowsのデスクトップがアクティブもしくは他アプリケーションがアクティブを検知することはできますでしょうか?
タッチパネルなどでユーザーフォーム外をタッチしてしまった時を検出したいです。
できるのであればご教授願いたい…
416:デフォルトの名無しさん
20/09/29 00:06:40.59 bEee4vhd0.net
Windowオブジェクトにどんなプロパティがあるんだっけ
417:デフォルトの名無しさん
20/09/29 00:29:27.68 zU8eGPuC0.net
フォームのdeactivateイベント拾ってテキストボックスのフォーカス状態見て処理するとかどうかな
418:デフォルトの名無しさん
20/09/29 00:32:40.28 zjqvAHva0.net
deactivateは用途が違う
419:デフォルトの名無しさん
20/09/29 00:49:54.82 Iz7+ZlTk0.net
HTML, XML, CSV などのスクレイピングなら、
Ruby で、Nokogiri, Selenium Webdriver などが簡単
curl, wget でも、ファイルをダウンロードできるし
Rubyで、nokogiri, curl を使った例
require 'nokogiri'
html = `curl URLリンク(www.example.com)
doc = Nokogiri::HTML( html )
elements = doc.css( "h1" )
puts elements.first.content #=> Example Domain
420:デフォルトの名無しさん
20/09/29 06:58:50.11 iE38wEdU0.net
外部プロセスの起動、待機、出力の取り込みまで実装してくださいよ
421:デフォルトの名無しさん
20/09/29 09:56:21.75 UZS7qkIf0.net
Rubyの自動運転は使いやすかったけど
早々にサポート切られたから印象悪い
422:デフォルトの名無しさん
20/09/29 11:55:53.23 NIgnBYPca.net
>>413
調べて見ましたがそれっぽいものは発見できませんでした…
>>414
>>415さんのおっしゃる通りブックやユーザーフォームのDeactivateイベントでは機能しませんでした。
423:デフォルトの名無しさん
20/09/29 23:34:39.45 Rcn+G4xKd.net
VBAでやる意味?
VBA以外だとアホな操作が必要だぞ。
1.Excelを閉じる。
2.他言語で実行。
3.csvをExcelで開く。
全くアホらしい。
運用についての考え方がまるで違う。
他言語でやる場合ってのはバッチ処理なのか?
それしか無いのか?
そういうブツ切りでデータ加工していくというなら寧ろExcelなんぞ使わん。
424:デフォルトの名無しさん
20/09/30 00:00:14.29 BPaZHsLq0.net
>>407
jsしたかったらIEするしかないのね。
今時のHPほぼ全滅じゃん。
425:デフォルトの名無しさん
20/09/30 00:36:25.50 5bnpK3a00.net
>>419
WINAPIでポーリング
URLリンク(i.imgur.com)
426:デフォルトの名無しさん
20/09/30 06:50:20.08 RkFeWfqX0.net
イルカのカイル
427:デフォルトの名無しさん
20/09/30 16:18:36.41 7F4wikGt0.net
>>419
そのマルチタスク、マルチウィンドウを否定したい理由は何なの?
428:デフォルトの名無しさん
20/09/30 16:57:41.88 QOxpj5qw0.net
>>424
フォームのテキストボックスに機器の計測値が入るようになっており
テキストボックスにフォーカスがあたってない状態で計測値が送られてくると値が取れないのでおじーちゃんたちにも気づくようにフォーカスが離れた時に警告ユーザーフォームを出したいのです。他アプリケーションなどを立ち上げる事も想定されます。
>>422
情報ありがとうございます
画像の通りやってみましたがイルカさんは働いてくれませんでした…
429:デフォルトの名無しさん
20/09/30 20:43:21.94 2p9V72Q+M.net
>>425
アホとしか言えんわ
そもそも設計が間違えてる
430:デフォルトの名無しさん
20/09/30 21:46:10.98 d9KXZKY60.net
>>425
値を入れる部分を直せよ
431:デフォルトの名無しさん
20/09/30 22:51:09.04 wQcBlxXT0.net
RPAとか使ったらこんなおぞましいものができたりするのかな?
でも普通はExcelぐらいサポートしてるよな。。。
432:デフォルトの名無しさん
20/09/30 23:05:33.83 FnwBo45S0.net
むしろRPA向きの案件だと思う
433:デフォルトの名無しさん
20/10/01 01:07:42.33 lGabW6tFM.net
>>425
> フォームのテキストボックスに機器の計測値が入るようになっており
wの前にデータ取得しとるわなw
>テキストボックスにフォーカスがあたってない状態で計測値が送られてくると値が取れない
wそんな業務データを取りこぼすとか意味不明w
>のでおじーちゃんたちにも気づくように
wなんだ?老害か?w
434:デフォルトの名無しさん
20/10/01 01:18:01.34 eVzeZjSn0.net
意味がわからないなら黙ってればいいじゃない
435:デフォルトの名無しさん
20/10/01 07:38:17.90 v/kjpRq5M.net
業務用ツール作るのってホント大変よな……
使いたい人向けに配信するんじゃなくて、使わされる人に使ってもらうツールだからどんなに優しいUIにしても平気で想像を上回るイレギュラーな操作して動かなくなった!ポンコツめ!みたいなクレーム出してくる人もいるし
単純に新しい物を使いたくないからってワザとメチャクチャな操作したりもしてるんだろうけど
ツールを要求してくる上の人達は現状の環境で対応出来るようにしたいからExcelのマクロでどうにかしてよ!とか言ってくるし、VBAはなんでも出来る魔法のツールだと思ってるし
長々と愚痴ってスマンな
スレチだよな
436:デフォルトの名無しさん
20/10/01 07:49:06.10 H0TKMoBwd.net
Windowsの標準のユーザーインターフェイスを意識しないと、使いやすいと思ったものが結局つかいにくくなる。
フォーカスがあたってなくても計測値が取れるように作るという発想が無いのが厳しい。
そんなこと出来ないなら根本から違うユーザーインターフェイスを採用すべき。
こういう処理でユーザーに何かさせる必要は無い筈。
437:デフォルトの名無しさん
20/10/01 10:04:49.32 +ML6JMtp0.net
初心者がツール作るように言われたら大変なんだろうな、俺は大変だと思ったことないが
438:デフォルトの名無しさん
20/10/01 10:34:23.83 6DJ6J+GDM.net
タブレットでバーコードリーダーのキーボード入力モードでも使ってるんだろうなと想像
COMで操作できるライブラぐらい付いているだろうからそれ使えば解決
439:デフォルトの名無しさん
20/10/01 16:54:34.45 Ld5Ou2iR0.net
>>435
まさにおっしゃる通りで作業進捗をバーコードで管理するものを作りました。
次は工程内のチェックシートと計測値などのトレーサビリティです禿げそう
とりあえず計測器具も試用で借りてる段階なのでメーカーにライブラリの事聞いてみます…
440:デフォルトの名無しさん
20/10/01 17:12:49.41 W6bAQtLIM.net
>>431
知ってた
441:デフォルトの名無しさん
20/10/01 18:58:16.32 9Yax9dsI
442:a.net
443:デフォルトの名無しさん
20/10/01 21:36:53.69 dM4yb7Ap0.net
罫線で囲われてたり、色塗りされたりするセルをマウスでドラッグ移動した時移動した場所は何もなくるなるのを罫線のみを残す方法ってありませんか?
簡単に言うと罫線で作った表の形式を保持したい。
444:デフォルトの名無しさん
20/10/01 21:50:29.37 5ESnmk3DM.net
>>439
テンプレートを隠しシートに保存しておいて、
ボタン押下で書式をコピペしてくるってどう?
445:デフォルトの名無しさん
20/10/01 22:00:05.10 gLHdGUpR0.net
>>439
切り貼りじゃなくてコピーアンドペーストした後に元のところの数式と値をクリア(右クリック+N)すればよいのでは
446:デフォルトの名無しさん
20/10/01 23:26:28.37 ywfP0KwV0.net
changeイベントで常に罫線引くことしか思いつかん
447:デフォルトの名無しさん
20/10/01 23:48:07.63 2OGRwJxy0.net
移動できないようにする
448:デフォルトの名無しさん
20/10/02 01:42:30.77 MWdBgx4Q0.net
セルをマウスでドラッグって何だよ?
エクセルで将棋でもやるの?
449:デフォルトの名無しさん
20/10/02 01:43:49.39 ChxT/cO/0.net
>>425
それExcel VBAでやるものではない。
自分のやりたいようにやりたければ、Windows SDKでの開発をしてください。
450:デフォルトの名無しさん
20/10/02 01:49:29.59 ChxT/cO/0.net
>>439
そもそも手順というものを考えた方がいい。
移動する前の情報を移動先には持ってくるが、移動元にはその情報を適用しないのはなぜ?
451:デフォルトの名無しさん
20/10/02 10:09:18.16 A7BNHAQE0.net
指定したフォルダ内の全てのCVSファイルを配列に追記していき対のですが、コードを教えてください
配列の0列目(1次元目)にはそれぞれのCSVファイルのファイル名をいれたいです。
Sub Sptyou()
Dim FolderPath As String, buf As String, TargetDate As String
'■フォルダを指定する
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = 0 Then
MsgBox "キャンセルされました。"
Exit Sub
End If
FolderPath = .SelectedItems(1)
End With
'■指定されたフォルダ内の全てのCSVファイルを開いて、そのファイルA列からGH列を配列に入れていく
ReDim BiforeArraybar(1, 190) As Variant
452:447
20/10/02 10:09:56.74 A7BNHAQE0.net
つづき
buf = Dir(FolderPath & "*.csv")
Do While buf <> ""
Open buf For Input As #1 'インプットモードでファイルを開く
Line Input #1, TargetDate
Do Until EOF(1) 'ファイルの終点まで
Line Input #1, Tardt '開いたファイルを上から順に読み込んでいき、変数TargetDateに代入していく
If Split(TargetDate, ",")(1) = "" Then Exit Do
'配列に追記する
ReDim Preserve BiforeArray(Ubound(BiforeArray) + 1 To ??, 1 To 190) = Sprit(TargetDate,",")
Loop
Close #1
buf = Dir()
Loop
End Sub
453:デフォルトの名無しさん
20/10/02 10:42:45.10 cHoSzh9XM.net
ReDim Preserveで操作可能なのは最右端の次元だけだから2次元配列で1次元目に使いたいなら一旦反転させた状態で操作して出力時にWorksheetfunction.transpose使って吐き出す必要があるぞ
いまいち最終目的が分からなかったから取り合えず読んでて気になった所だけ
454:デフォルトの名無しさん
20/10/02 10:56:02.65 ooD45Zz30.net
Linux のcat なら、複数のファイルを連結できるけど
455:デフォルトの名無しさん
20/10/02 12:25:22.61 XdHW2/g2M.net
win dosならcopyで連結できるけど
456:デフォルトの名無しさん
20/10/02 12:29:54.55 a296oIK60.net
>>448
内側のLoop内で Tardt ってのが気になった
457:447
20/10/02 13:32:21.66 A7BNHAQE0.net
>>449
右端にファイル名を入れるにはどうしたらいいですか?
それと、配列のUpperをどう設定したらいいですか?
458:デフォルトの名無しさん
20/10/02 15:56:01.43 7/1+1goB0.net
また馬鹿な質問者か。それともいつもの厚かましい馬鹿か?
459:デフォルトの名無しさん
20/10/02 16:13:26.37 XdHW2/g2M.net
右端の次元と右端の列では話の次元が違うけどわざとやってんのかなー?
excelなんだからとりあえずシートに格納すればいいと思うんだけどなー
配列に1行づつ追加するよりはやいんじゃね?
VBは動的配列無いんだからパフォーマンス出すには頭を使わにゃいかんよ
行数をキーにしたDictionaryもいいかもね
460:デフォルトの名無しさん
20/10/02 16:51:14.94 p6rjz1Jr0.net
>>453
配列のUpperが何を意味してるのかいまいち分からんがこんな感じで良いんか?
Line Input #1, TargetDate
BeforeArray(0, Ubound(BeforeArray, 2)) = ファイル名
For文[1~190](BeforeArrayにSplit(TargetDate, ″,″)を放り込む)
ReDim Preserve BeforeArray(0 to 190, Ubound(BeforeArray, 2)+1)
Do Until EOF(1)
Line Input #1, TargetDate
For文[1~190](BeforeArrayにSplit(TargetDate, ″,″)を放り込む)
ReDim Preserve BeforeArray(0 to 190, Ubound(BeforeArray, 2)+1)
Loop
461:デフォルトの名無しさん
20/10/02 18:32:48.78 a296oIK60.net
>>453
こういうことじゃないのか
targetdata = buf & "," & targetdata
462:デフォルトの名無しさん
20/10/02 22:17:00.26 MWdBgx4Q0.net
>>455
サイドブレーキを使う坂道発進をダサイと感じるようなもので、
どう考えてもシート格納が合理的なのに、無理して配列を使うわけですよ。
463:デフォルトの名無しさん
20/10/02 23:43:54.67 ooD45Zz30.net
CSV の規格では、各要素をクォート文字で囲めば、
各要素中に、列区切り文字も入れられる
"a,b", x
Ruby などのCSVライブラリを使わず、
自力で、列区切り文字で分割すると、バグるだけ
CSVの規格を知らない香具師が、よくやってる
464:デフォルトの名無しさん
20/10/03 00:18:46.98 DSTQ9BDR0.net
csvに規格ってあったんだ
465:デフォルトの名無しさん
20/10/03 07:11:14.79 umHauNXS0.net
ExcelでCSVをダブルクリックで開いて編集、上書きして事故る人が多いね
466:デフォルトの名無しさん
20/10/03 07:17:22.78 NCQ7EVNV0.net
>>460
一応あるけど結局Excelで読めないとダメって言うケースが大多数だったりする
URLリンク(www.kasai.fm)
467:デフォルトの名無しさん
20/10/03 08:43:50.77 2jz2H7gQ0.net
そのRFCって、たくさんあるローカルルールの1つを紹介してるだけだよな
強制力もなさそうだし、現時点ではあんまり意味がなさそう
468:デフォルトの名無しさん
20/10/03 11:51:59.59 ylT9+9xh0.net
>>459
マイクロソフトの製品はそれに沿っているものがあるが、クォーテーションがついたり、つかなかったりするのは、人間にとってもタチが悪く、完全に失敗した仕様と結論が出ている。
469:459
20/10/03 13:01:37.98 /wA+nWqo0.net
列区切り文字は、必要なければ省略できる
つまり、x も、"x" も同じ。
全ての要素に、付けてもよい
ただし、"a,b" みたいに要素内に、
行区切り文字・列区切り文字・クォート文字を含む場合は、省略できない
470:459
20/10/03 13:03:38.87 /wA+nWqo0.net
>>465
修正
>列区切り文字は、必要なければ省略できる
クォート文字は、必要なければ省略できる
471:デフォルトの名無しさん
20/10/03 13:04:25.84 DSTQ9BDR0.net
できないって言われましても強制力無いですし
472:デフォルトの名無しさん
20/10/03 13:34:48.02 zZGrTJee0.net
まあそもそも多数の実装が出てからそれ集めて決めた仕様だからな
473:デフォルトの名無しさん
20/10/03 19:43:36.45 WrZNWJut0.net
そういやあれ何だろうな。
QueryTableだとセル内改行でずれるのに、
ADOだとずれないとか。
474:デフォルトの名無しさん
20/10/04 19:09:07.88 mqiPq7lq0.net
配列を戻す自作関数を呼び出し先Subから複数回実行して、配列を結合したい
んだけど、どうすればできますか? redim preserveとUBoundを使うのかも
しれないけど、いい感じにまとまったコードが書けない。
例えば、下の関数を、別のSubから2回実行させて、
「Ary(3) ※中身:path1,path2,path1,path2」
の結果を得たいです。
Function TestFunc()
Dim testPath(1)
testPath(0) = "path1"
testPath(1) = "path2"
'return
TestFunc = testPath
End Function
475:デフォルトの名無しさん
20/10/04 19:09:08.25 mqiPq7lq0.net
配列を戻す自作関数を呼び出し先Subから複数回実行して、配列を結合したい
んだけど、どうすればできますか? redim preserveとUBoundを使うのかも
しれないけど、いい感じにまとまったコードが書けない。
例えば、下の関数を、別のSubから2回実行させて、
「Ary(3) ※中身:path1,path2,path1,path2」
の結果を得たいです。
Function TestFunc()
Dim testPath(1)
testPath(0) = "path1"
testPath(1) = "path2"
'return
TestFunc = testPath
End Function
476:デフォルトの名無しさん
20/10/04 19:09:56.24 mqiPq7lq0.net
連投すいません
477:デフォルトの名無しさん
20/10/04 19:15:03.93 l1LxtJm7d.net
注意
ID:mqiPq7lq0
いつもの馬鹿です
478:デフォルトの名無しさん
20/10/04 21:13:23.82 3bz1Ts/P0.net
>>471
検索したらいいんじゃね
479:デフォルトの名無しさん
20/10/04 21:42:10.14 NRUY+ZF00.net
>>471
例えとかいい感じとかじゃなくて正確にコードを提示してどの部分をどうしたいのか明確に説明した方がいいよ
480:デフォルトの名無しさん
20/10/04 21:43:28.32 hlbFeQNpd.net
後出し続けて全部作ってもらおうという魂胆の奴だぞ
481:デフォルトの名無しさん
20/10/05 01:21:09.51 Roj0MJiCr.net
VBAからIEを操作して、タグを指定して.valueやselctedで自動化しているのですが、ヤフオクの商品説明だけどうしても値の挿入ができません。
Tabや近い要素をフォーカスしたりクリックし、SendkeyなどでShift +Tabからエンダーなど試していますが、一向に解決できません。
直接でか無くてもカーソルが点滅させれれば、クリップボード経由で貼り付けるような仕様にしようと考えています。
482:デフォルトの名無しさん
20/10/05 07:08:41.25 z7kgQPv30.net
漏れは、Ruby, Selenium Webdriver で、ブラウザを自動操作して、
send_key で、ユーザー名・パスワードを自動入力して、ヤフーにログインしてる
require "selenium-webdriver"
options = Selenium::WebDriver::Chrome::Options.new
options.add_option( :detach, true ) # ブラウザを切り離す
options.add_argument( '--start-maximized' ) # 画面最大
driver = Selenium::WebDriver.for :chrome, options: options
driver.manage.timeouts.implicit_wait = 10 # default timeout
driver.navigate.to "URLリンク(login.yahoo.co.jp)
element = driver.find_element(:id => "username")
element.send_key "ユーザー名"
driver.find_element(:id => "btnNext").click
element = driver.find_element(:id => "passwd")
element.send_key "パスワード"
driver.find_element(:id => "btnSubmit").click
483:478
20/10/05 07:11:02.53 z7kgQPv30.net
そもそも、IE なんか動くのか?
漏れは、Chrome
484:デフォルトの名無しさん
20/10/05 12:57:11.88 BlyIycRMM.net
>>475
すみません。
Sub test
Dim i,ary()
For i = 1 to 2
ary = TestFunc ※ary配列の要素の最後に呼び出した配列を追加していきたい
Next
End
485:デフォルトの名無しさん
20/10/05 13:22:13.75 PJYbs+y10.net
配列に配列を追加するのを初心者がつくるなら
追加する2つの配列と結果を格納する配列の計3つを用意して順番に格納すればできないかな?
486:デフォルトの名無しさん
20/10/05 14:35:29.71 8f5Gi5TxM.net
>>480
いい加減にしろや糞が
487:デフォルトの名無しさん
20/10/05 14:54:20.99 3En1oQ3G0.net
>>471
redim preserveとUBoundを使うのかも
まあしかし、その処理ほんとに配列でやるのが良いのか検討したほうが良いんだが
VBAコレクション系弱いからなぁ
488:デフォルトの名無しさん
20/10/05 15:05:07.42 PJYbs+y10.net
検索すればすむのにね
489:デフォルトの名無しさん
20/10/05 17:50:38.43 BlyIycRMM.net
>>481
>>483
ありがとうございました。
490:デフォルトの名無しさん
20/10/05 17:58:27.13 FAPvswgpM.net
喧嘩腰だなあ
何しにきてんのさ
491:デフォルトの名無しさん
20/10/05 18:26:34.61 KW0b9HJla.net
くれくれ君だからしょうがないだろ
492:デフォルトの名無しさん
20/10/05 19:48:49.79 UUAqkjmTM.net
>>484
F1キー押す方が早くね?
493:デフォルトの名無しさん
20/10/05 19:51:04.71 0f3oInSL0.net
>>488
押すだけならワンキーだけど、オンラインヘルプはそこからが長い
494:デフォルトの名無しさん
20/10/06 10:31:57.17 9/35+5mY0.net
大人の対応でうまく誘導してやろうぜ
495:デフォルトの名無しさん
20/10/07 19:45:01.41 FTOZLATq0.net
下記のように特定の文字を削除して、改行をやめて1行文にしたいのですがコードのご教示いただけないでしょうか
やんやんつけ棒§
めちゃ美味い
ポテトチップス§
めちゃ美味い
↓
やんやんつけ棒めちゃ美味い
ポテトチップスめちゃ美味い
496:デフォルトの名無しさん
20/10/07 20:04:32.74 7ZMz7DKjM.net
まともなテキストエディタ(VSCodeとかサクラエディタとか)で開いて正規表現置換で§¥r¥を空に置換すればよい
497:デフォルトの名無しさん
20/10/07 20:05:03.03 7ZMz7DKjM.net
訂正
§¥r¥n
498:デフォルトの名無しさん
20/10/07 20:27:15.03 FTOZLATq0.net
>>492
なるほど…めちゃ助かります。ありがとうございます。
499:デフォルトの名無しさん
20/10/07 21:05:04.00 8t5FIA980.net
もっと面白い質問しろよ
500:デフォルトの名無しさん
20/10/07 21:08:11.63 EPmDsevha.net
やんやんつけ棒って何?
501:デフォルトの名無しさん
20/10/07 21:08:37.26 FTOZLATq0.net
申し訳ありません、もう一点
A1:私は実は理学部出身
A2:の元々は地質学者です
A3:
A4:こうした南鳥島で
A5:
A6:レアアースの濃集が
A7:起こる
A8:
A9:というのは
A10:
A11:特徴的な層準に
↓
A1:私は実は理学部出身
の元々は地質学者です
A2:こうした南鳥島で
A3:レアアースの濃集が
起こる
A4:というのは
A5:特徴的な層準に
下の行に文字列 → 2行の文章として、改行を入れてExcelの1マスにまとめる
下の行が空白 → 1行の文書なのでそのまま
これをなんとかVBAで自動化したいのですが記述を教示願えますでしょうか
面白くない質問ですみません…
502:デフォルトの名無しさん
20/10/07 21:11:26.09 JTTOzasI0.net
>>497
その条件2つそのままコードに直していけるよ
503:デフォルトの名無しさん
20/10/07 21:17:21.39 ueKkqa210.net
改行がLfなのかCrなのかCrLfなのか知らんが
Replace("改行入りの文字列", vbLf, "")
504:デフォルトの名無しさん
20/10/07 21:58:27.94 JTTOzasI0.net
>>499
そんなことしたら改行しなくなるが…
505:デフォルトの名無しさん
20/10/07 22:16:39.68 XaxSLEYL0.net
いつものクレクレ君かな
506:デフォルトの名無しさん
20/10/07 22:51:28.53 7uT04k8fM.net
・コードを要求
・追加で教えて
いつもの人だね
507:デフォルトの名無しさん
20/10/07 22:54:48.87 8t5FIA980.net
普通に書けばできることを聞く意味が分からん
もしかして書けないの?
書けないならやめればいいのに
508:デフォルトの名無しさん
20/10/07 22:56:25.93 Az9cGqg8M.net
>>498
>>499
ありがとうございますm(__)m
509:デフォルトの名無しさん
20/10/08 01:49:40.56 584FeZ4r0.net
>>497
VBAに慣れている人なら簡単に自動化というかVBAで組める内容ではある
問題はこの程度の内容を質問するより先に、自力でできるとこまで自分で
やらなかった最初の一歩が間違っているんだと思う
510:デフォルトの名無しさん
20/10/08 09:04:33.67 BqKPxLQJa.net
CSVとして保存
VSCode等のまともなエディタで開く
([^¥r]+)¥r¥n([^¥r]+)を”$1¥r¥n$2”に置換
¥r¥n¥r¥nを¥r¥nに置換
Excelにインポート
>>492同様にワンショットでいいならこんな感じでいけるんじゃね
511:デフォルトの名無しさん
20/10/08 14:32:22.56 584FeZ4r0.net
それができないのが初心者
512:デフォルトの名無しさん
20/10/08 15:37:32.47 d1cy1ieUM.net
クレクレ君のより煽ってる奴のがうざいんだけどね
VBAだけが人並にできるからこのスレにいつも欠かさず覗きにきてる感じか?
いつものお前が邪魔ですよお
513:デフォルトの名無しさん
20/10/08 15:59:16.76 btiqMG+Y0.net
>>508
大丈夫スルーしてるから
遠まわしでも構うと同列に
514:デフォルトの名無しさん
20/10/08 17:05:05.08 +6fedHspM.net
>>508
くれくれ君本人乙
515:デフォルトの名無しさん
20/10/08 19:30:11.76 bwT1M8vM0.net
>>507
できないことは問題じゃない
やろうとしないことが問題
516:デフォルトの名無しさん
20/10/08 19:55:49.61 YPYO8uSI0.net
たしかにやろうとしないことが問題
てのは御指摘のとおりですね。すみません。
映像制作を生業としてますが普段tipsを聞くのりで聞いてしまいました。
517:デフォルトの名無しさん
20/10/08 20:04:37.46 KjDVO4Tm0.net
>>512
5chなんて便所の落書きなんだからそれでいいと思う。
ただ、まともな返事を期待して馬鹿を見ても仕方ない場所でもあるけれど。
518:デフォルトの名無しさん
20/10/08 21:04:52.28 DcpygGCOd.net
ただでさえ印象悪いのにどうでもいい言い訳まで付けてさらに印象悪くするよくあるパターン
519:デフォルトの名無しさん
20/10/09 00:24:11.53 t8qEIjmh0.net
Dim dw As Date
Dim i As Integer
Sub test()
'ランダムに並び替える
Randomize
'乱数を入れる
For i = 1 To 200
Cells(i, 2) = Rnd()
Next i
'乱数で昇順並び替え
Range("A1:B200").Sort _
Key1:=Range("B1"), Order1:=xlAscending, _
Header:=xlNo, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin
'乱数を削除
Range("B1:B200").Clear
dw = DateAdd("S", 5, Now)
Application.OnTime dw, "test"
End Sub
520:デフォルトの名無しさん
20/10/09 00:26:14.42 t8qEIjmh0.net
>>515
のdw = DateAdd("S", 5, Now)
Application.OnTime dw, "test"
を入れると、
「実行できません。このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。」
となってしまいます。
「マクロのセキュリティ」は「すべて有効」にしています。
どうすればいいでしょうか
521:デフォルトの名無しさん
20/10/09 00:56:17.14 8xBy2vBw0.net
>>516
そのプロシジャを標準モジュールに書く
CellsとかRangeとか、ちゃんとシート指定しといたほうが良いぞ
522:デフォルトの名無しさん
20/10/09 01:28:40.34 t8qEIjmh0.net
>>517
できました!
>CellsとかRangeとか、ちゃんとシート指定しといたほうが良いぞ
わかりました
ありがとうございました。
523:デフォルトの名無しさん
20/10/09 16:14:30.36 SmS5zjtB0.net
1,1,2,2,3,4,4,4,5,6
を
1-1,1-2,2-1,2-2,3,4-1,4-2,4-3,5,6
に変換したいのですが、どういうコード書けばよいのでしょうか?
524:デフォルトの名無しさん
20/10/09 16:19:59.95 5DciVe+j0.net
連想配列使ってカウントするか(0 to 対象の値のMax)の配列を用意して、Array(対象の値)にカウントするかが1番頭使わなくて済むかな?
525:デフォルトの名無しさん
20/10/09 16:55:39.01 9cfuJ5OLM.net
かなり前だけどこのスレで教わったアドバイスが今やってることでピンときた
タブ増やして進めてくより
userformをhideとshowで工程進めてくみたいにしたほうがいいわ
ありがとうかなり前に教えてくれた人!
526:デフォルトの名無しさん
20/10/09 17:52:44.19 OU1KT8YFa.net
>>519
fori=1 to 要素数(※要素数はカンマで区切られた数)
数字=数字 & “-” & i
next i
みたいな感じで
前の数字と違ったら数字をリセット
(iが1ならこの処理はしない)
要素がひとつなら処理せず次のiに
527:デフォルトの名無しさん
20/10/09 18:03:17.75 klvVBjUq0.net
next i って書く人嫌い
528:デフォルトの名無しさん
20/10/09 18:15:01.53 FzRk+nqKp.net
かなり前の話と言えば
昔Privateで書かれたプロパティを
外部から取得する方法を書いてた人がいたけど
あれどうやるんだったっけ
529:デフォルトの名無しさん
20/10/09 18:33:13.76 /2wG1kS20.net
内部から漏洩させるのが確実
530:デフォルトの名無しさん
20/10/09 18:36:07.52 /2wG1kS20.net
>>523
それ以前にまったく要望を満たしていない
531:デフォルトの名無しさん
20/10/09 21:13:45.01 hr48HmJ4d.net
>>517
俺はブックも必ず指定するけどね。
532:デフォルトの名無しさん
20/10/09 21:15:25.62 hr48HmJ4d.net
>>519
どうしたいのかもう少し言葉で説明してくれる?
533:デフォルトの名無しさん
20/10/09 21:41:09.60 KqgB0xuS0.net
>>519
普通にカウントアップして、1から2に、2から3に上がるときにカウンターリセット。
534:デフォルトの名無しさん
20/10/09 21:44:54.18 VcvC9Dp/0.net
1つしかなかった時に連番を付けない処理が一手間多くて面倒
データの先読みが必要になる
535:デフォルトの名無しさん
20/10/09 21:49:11.48 5R2Ih+qA0.net
出力タイミングを次の数字を見てからにすれば楽
536:デフォルトの名無しさん
20/10/09 21:49:18.81 2P2kQgrz0.net
1個でも複数でも変わらない
おかしな考え方してるんだろう
537:デフォルトの名無しさん
20/10/09 21:49:40.29 hWEYACMU0.net
>>528
1.処理速度
2.低コスト
3.低ステップ
4.読みやすさ
優先順位はとりあえずこんな感じで頼むわ
538:デフォルトの名無しさん
20/10/09 22:02:55.54 VcvC9Dp/0.net
次の数字を見るかどうかの所で配列の最後かどうかも判定する必要があって面倒
シンプルでうまい方法があるんなら言葉じゃなくてコードで答えてくれ
539:デフォルトの名無しさん
20/10/09 22:06:14.03 rNmj4HJx0.net
splitでカンマ区切りの配列化
instrで個数確認
かね?
540:デフォルトの名無しさん
20/10/09 22:07:17.45 rNmj4HJx0.net
>>534
Uboundで判定して抜ければいいじゃん
541:デフォルトの名無しさん
20/10/09 22:19:01.76 VcvC9Dp/0.net
>>536
ちゃんと動くコード書いてみて
542:デフォルトの名無しさん
20/10/09 22:24:25.52 VcvC9Dp/0.net
Sub Macro1()
Dim a(), b()
a = Array(1, 1, 2, 2, 3, 4, 4, 4, 5, 6)
u = UBound(a)
ReDim Preserve a(u + 1)
ReDim b(u)
a(u + 1) = a(u) + 1
x = a(0) + 1
For i = 0 To u
If a(i) - x Then
c = 1
Else
c = c + 1
End If
If c = 1 Then
b(i) = a(i)
If a(i) = a(i + 1) And u - i Then b(i) = b(i) & "-1"
Else
b(i) = a(i) & "-" & c
End If
x = a(i)
Next
Debug.Print Join(b, ",")
End Sub
543:デフォルトの名無しさん
20/10/09 22:47:08.38 VcvC9Dp/0.net
これよりシンプルにするのは俺には無理だった
Sub Macro1()
Dim a$(), b()
a = Split("1,1,2,2,3,4,4,4,5,6", ",")
u = UBound(a)
ReDim Preserve a(u + 1)
ReDim b(u)
a(u + 1) = a(u) + 1
x = a(0) + 1
For i = 0 To u
b(i) = a(i)
c = c + 1
If a(i) - x Then c = 1
If (c > 1) + (c = 1) * (a(i) = a(i + 1)) * (u - i) Then b(i) = b(i) & "-" & c
x = a(i)
Next
Debug.Print Join(b, ",")
End Sub
544:デフォルトの名無しさん
20/10/09 23:08:21.94 VcvC9Dp/0.net
b(i) = b(i) & "-" & c
↓
b(i) = b(i) & -c
545:デフォルトの名無しさん
20/10/09 23:19:19.22 760t1BpC0.net
プログラミングのお題スレにも、たまにあるけど
546:、 次の要素を先読みするのは面倒 スタックのpeek みたいに、要素を読み取るだけで、削除しない関数があればよい
547:デフォルトの名無しさん
20/10/10 06:22:18.37 BjcbKuib0.net
Ruby では、
# 一旦、整数の2次元配列にする。[[1, 1], [2, 2], [3], [4, 4, 4], [5], [6]]
result_ary = input_ary = "1,1,2,2,3,4,4,4,5,6".split( "," ).
chunk_while{ |prev, nxt| prev == nxt }.each_with_object( [ ] ) do |ary, acc| # 蓄積変数は配列
if ary.length == 1
acc.push( ary[ 0 ] )
else
ary.each_with_index do |num, idx|
acc.push( "#{ num }-#{ idx + 1 }" )
end
end
end
puts result_ary.to_a.join( "," ) # カンマ区切り
548:542
20/10/10 06:24:55.49 BjcbKuib0.net
>>542
修正
># 一旦、整数の2次元配列にする。[[1, 1], [2, 2], [3], [4, 4, 4], [5], [6]]
一旦、文字列の2次元配列にする
549:542
20/10/10 06:29:37.77 BjcbKuib0.net
>>542
修正
>result_ary = input_ary = "1,1,2,2,3,4,4,4,5,6".split( "," ).
result_ary = "1,1,2,2,3,4,4,4,5,6".split( "," ).
550:デフォルトの名無しさん
20/10/10 06:39:31.44 WLqCacU70.net
データの種類が少なければ連想配列
551:デフォルトの名無しさん
20/10/10 09:37:35.06 ejDp+I1j0.net
先読みって考えるから面倒なのでは?
後出しって考えればいいのでは?
552:デフォルトの名無しさん
20/10/10 09:43:21.90 VjEh1Ow80.net
てかあの程度の仕様なら自分で書けよって思う
あれぐらいで書けないってのは根本的にプログラミングの基礎分かってないでしょ
forとifで一度自分で書いてみろと
553:デフォルトの名無しさん
20/10/10 11:33:09.64 ZZ8h2+k60.net
書く気が無いからコードくれと言ってるんじゃないの
554:デフォルトの名無しさん
20/10/10 12:12:33.28 PwUkT7dUM.net
いつものあいつでしょ
555:デフォルトの名無しさん
20/10/10 14:51:13.18 l6OboMxr0.net
書けない奴「いつもあいつでしょ」
556:デフォルトの名無しさん
20/10/10 15:12:08.20 PwUkT7dUM.net
煽って自演のいつもの馬鹿
557:デフォルトの名無しさん
20/10/10 15:36:01.73 l6OboMxr0.net
おじさん「煽ってなんちゃら」
558:デフォルトの名無しさん
20/10/10 15:38:43.61 VaQE37nUM.net
バグってハニー
559:デフォルトの名無しさん
20/10/10 17:43:29.69 aEE68DdLM.net
いつものあいつ確定
560:542
20/10/10 22:30:05.80 BjcbKuib0.net
データベース変換などは、Ruby のEnumerable のメソッドを見て、
シェル芸とか、プログラミングのお題スレの問題を解いた方がよい
VBA は可読性が悪すぎて、作っても再利用できない。
OSS で全会社共通で、RubyのEnumerable 相当のメソッドを作って公開するべき!
他言語ではたいてい、Rubyと等価のメソッドを作る
561:542
20/10/10 22:31:31.39 BjcbKuib0.net
>>555
修正
>データベース変換などは
データ変換などは
562:デフォルトの名無しさん
20/10/11 00:52:32.73 l/QRoUUr0.net
>>555
布教活動ご苦労さん
必要になったら勝手にRubyスレに行くから
帰っていいよ
563:デフォルトの名無しさん
20/10/11 08:15:59.41 qzIChT2z0.net
>>555
データ変換てのは基本的な作法さえ知ってればEnumerableメソッド使わなくても特に困ることもないだろう
ただのループ構造をこねくり回してるだけでそのためにメソッドを割り当てるなんてお仕着せもいいところ
564:デフォルトの名無しさん
20/10/11 10:01:12.40 QZ/HZvxF0.net
>>557-558
なぜ相手するんだ…
565:デフォルトの名無しさん
20/10/11 12:29:43.68 lH9sVzvl0.net
Acrobatを使用したプログラムを複数回実行すると初回だけ成功し
2回目以降は
実行時エラー2147467259(80004005)
エラーを特定できません
となります(idに代入する行でエラー)
終了処理に不備があってacrobatのプロセスが残っているのではと思いましたが
色々なサイトを見ても解決がわからない状態です。
どうすれば治りますか。
プログラムは次のレスを参照ください。
566:デフォルトの名無しさん
20/10/11 12:30:03.99 lH9sVzvl0.net
Dim objAcroApp As New Acrobat.AcroApp
Dim objAcroAVDoc As New Acrobat.AcroAVDoc
Dim objAcroPDDoc As New Acrobat.AcroPDDoc
Dim id As Long
Dim js As Object
Dim SaveName As String
id = objAcroApp.Show
id = objAcroAVDoc.Open(FilePath, "")
Set objAcroPDDoc = objAcroAVDoc.GetPDDoc()
Set js = objAcroPDDoc.GetJSObject
SaveName = FolderPath & "\" & Replace(FileName, ".pdf", "")
'変換のうえテキストファイルとして保存
js.SaveAs SaveName & ".txt", "com.adobe.acrobat.plain-text"
'PDFファイルを変更無しで閉じる
id = objAcroAVDoc.Close(1)
'Acrobatアプリケーションを終了する。
id = objAcroApp.Hide
id = objAcroApp.Exit
Set js = Nothing
Set objAcroAVDoc = Nothing
Set objAcroApp = Nothing
567:デフォルトの名無しさん
20/10/11 18:37:51.01 7Qx+aWsY0.net
どこだか忘れたけど、閉じる・解放はこの順番じゃないとダメって書いてあるサイトがあったぞ。
568:デフォルトの名無しさん
20/10/11 20:12:54.59 WEczn1o20.net
オブジェクト型にNothingを代入しても、参照ポインタが書き換わるだけでメモリが解放されるわけじゃないんで、順序はそれほど重要じゃない
569:デフォルトの名無しさん
20/10/11 21:39:34.57 CPiGYYUg0.net
>>560
必ず再現するなら同じ現象が発生する最小のコードを作ってみ
570:デフォルトの名無しさん
20/10/11 23:29:10.26 gmCwGThW0.net
>>561
とりあえずDimでNewするのやめて様子見てみ
571:デフォルトの名無しさん
20/10/12 01:35:39.95 EUVfONAL0.net
どうやって再度、実行できているのか?
仕事ができない人がよく言う説明。
572:デフォルトの名無しさん
20/10/12 08:27:00.05 CsRHImZw0.net
>>560
タスクマネージャーを起動して、プロセスを終了させてから、実行すれば?
573:デフォルトの名無しさん
20/10/12 10:12:47.93 5eYbb8SbM.net
アクロバットがすぐに終了しないのは体感でも分かるレベル
574:デフォルトの名無しさん
20/10/12 18:47:34.51 EUVfONAL0.net
2回目以降から1回目に戻る手順くらい書けよ!
575:デフォルトの名無しさん
20/10/12 21:34:54.79 mxOFfEsA0.net
おもいついた
>>530
最後にsubstituteでまとめて消せばよくね?
576:デフォルトの名無しさん
20/10/12 23:43:56.93 k3Vmfe+e0.net
時間を戻そう
577:デフォルトの名無しさん
20/10/13 08:13:53.62 548t3foS0.net
>>561
objAcroAppにCloseメソッドがあってそれを実行していないとかいうオチだったりして
578:デフォルトの名無しさん
20/10/13 09:32:19.92 2dX+mfF30.net
>>572
普通の頭持ってたら
id = objAcroApp.Exit
がそれだと思うだろうに…
579:デフォルトの名無しさん
20/10/13 10:34:47.53 lK6RB09G0.net
「.CloseAllDocs」 ってメソッドもAcrobat.AcroAppにはあるらしいな
そしてExitだけじゃプロセスが残ることもあるらしい
まあAcrobatの環境ないから検証も何もできんけど、
安全取るならExitしたあとにプロセス監視してkillするしかないんじゃね
途中でエラー落ちしてもプロセスのこっちゃうらしいし
ちなみにどうでもいいが個人的にはExitとCloseは、意味的に異なると思う
だからExitとCloseが両方あってもおかしくないとは思う
でもExitがCloseを包括していても、それはそれでありだとも思う
Acrobat.AcroAppの公式ドキュメント見れてないからワイには答えが出せんわ
580:デフォルトの名無しさん
20/10/15 08:48:14.01 wrF56cyr0.net
>>560です
皆さん本当にありがとうございます。
みなさんのご意見をプログラムに反映した後、
ソースを最小(adobeをオープン・クローズするのみ)
にしてもエラーです・・・(次レス参照)
タスクマネージャには
adobe CEF helper、adobe update serviceがありますが
前者は消しても湧いてきているように見えます。
パソコン再起動してもダメ、日付が変わってもダメです。
しかし、エラーになったあとちょうど24時間経過すると
無事実行できるようになることがわかりました・・・
24時間後の数分前はエラーでしたが
数分後は無事実行できました。
ちょうど24時間で消えるプロセスが存在するんだと思いますが
何かご存知のかた居ましたらご教示ください・・・
581:デフォルトの名無しさん
20/10/15 08:49:26.67 wrF56cyr0.net
ソースを最小にするためところどころコメントアウトしてます
Dim objAcroApp As Acrobat.AcroApp
Dim objAcroAVDoc As Acrobat.AcroAVDoc
' Dim objAcroPDDoc As Acrobat.AcroPDDoc
Dim id As Long
' Dim js As Object
' Dim SaveName As String
Set objAcroApp = CreateObject( "AcroExch.App" )
Set objAcroAVDoc = CreateObject( "AcroExch.AVDoc" )
id = objAcroApp.Show
id = objAcroAVDoc.Open(FilePath, "")
' Set objAcroPDDoc = objAcroAVDoc.GetPDDoc()
' Set js = objAcroPDDoc.GetJSObject
' SaveName = FolderPath & "\" & Replace(FileName, ".pdf", "")
'変換のうえテキストファイルとして保存
' js.SaveAs SaveName & ".txt", "com.adobe.acrobat.plain-text"
'PDFファイルを変更無しで閉じる
id = objAcroAVDoc.Close(1)
'Acrobatアプリケーションを終了する。
id = objAcroApp.CloseAllDocs←どっかのサイトでobjAcroApp.Hideの前に入れてました
id = objAcroApp.Hide
id = objAcroApp.Exit
' Set js = Nothing
Set objAcroAVDoc = Nothing
Set objAcroApp = Nothing
582:デフォルトの名無しさん
20/10/15 09:20:24.96 7eWumHpU0.net
起動設定で、プロセスを殺すと、また再起動するアプリがある。
ウィルスチェックなどの、何かをチェックするアプリ
必ず、最低1つは起動しておくタイプのアプリ
そういうアプリは使わない方がよい。
何をチェックして、本社に送っているか、怪しい
会社に問い合わせて、再起動を止めるような設定を聞けば?
583:デフォルトの名無しさん
20/10/15 10:57:30.25 LAL4jdY0d.net
区分1~10のデータが記録されたcsvを区分ごとにExcelシート毎(シート名は1~10)に分割して読み込むvbaがどうしても出来ません…
ご教示いただけないでしょうか…
584:デフォルトの名無しさん
20/10/15 11:36:34.23 +kinuzul0.net
そんな説明でわかるわけがないので、
そこまで頑張って作ったコードとエラーメッセージを提示するのが最低限
そして、自分で何を試行したのかも説明すること
585:デフォルトの名無しさん
20/10/15 12:20:58.11 k/WlCRMPM.net
いつもの人
586:デフォルトの名無しさん
20/10/15 13:02:07.76 7eWumHpU0.net
Ruby なら、これで最初の列だけを、出力できる
require 'csv'
# CSV ファイルを、1行ずつ処理する
CSV.foreach( "a.csv" ) do |row|
puts row[ 0 ]
end
587:デフォルトの名無しさん
20/10/15 14:36:16.06 sVQ5bVjI0.net
>>581
C#スレで恥を晒したRuby荒らしは帰れよ
588:デフォルトの名無しさん
20/10/15 19:36:00.91 GQ796pt70.net
簡単かどうかなんてどうでもいい。
200万件のデータをADO+SQLより速く処理できるならRuby使ってやらなくもないが。
どうなんだい?
無理ならイラネ。
589:デフォルトの名無しさん
20/10/15 19:54:07.37 hF5+vxPB0.net
もう時代遅れなのはわかってるけど
会社が2019に更新してまだまだ使う気満々なので
そして配布が出来ないと困る
590:デフォルトの名無しさん
20/10/15 21:24:39.62 Dg+UC/FqM.net
>>583
ルビ糞基地外の味方をするつもりはないけど、DBがボトルネックならRubyだろうが何だろうが速さは変わらんよ
591:デフォルトの名無しさん
20/10/15 21:53:38.55 3DKNzMNt0.net
俺の解釈だとこんな感じ
Sub Macro1(Filename, Fieldname)
Set ws = Workbooks.Open(Filename).Sheets(1)
Set pvt = ws.PivotTableWizard(1, ws.UsedRange)
pvt.PivotFields(Fieldname).Orientation = 1
pvt.PivotFields(Fieldname).Orientation = 4
pvt.ColumnGrand = False
For Each r In pvt.DataBodyRange: r.ShowDetail = True: Next
End Sub
592:デフォルトの名無しさん
20/10/15 23:19:16.95 fOL5OZab0.net
>>562
はこのサイトかな
URLリンク(pdf-file.nnn2.com)
593:デフォルトの名無しさん
20/10/16 19:09:16.33 Hr39/iau0.net
>>587
多分それ。
594:デフォルトの名無しさん
20/10/16 19:55:23.45 rggqlWcj0.net
PDFファイルの件は、マクロの記録でやるとどうなるのか、確認すればいいんじゃないの?
595:デフォルトの名無しさん
20/10/16 21:55:06.26 Hr39/iau0.net
なあそれ、マクロの記録をするとどうなるか確認してから言ってるのか?
596:デフォルトの名無しさん
20/10/16 22:07:10.71 9Da+1I/Z0.net
モチのロンだぜ
597:デフォルトの名無しさん
20/10/16 22:24:45.68 tI22s9TB0.net
モロのチンだぜ
598:デフォルトの名無しさん
20/10/18 16:09:00.37 SMfw56kvd.net
>>533
そういうことじゃねえ。
599:デフォルトの名無しさん
20/10/21 23:21:44.77 w3Ug/D8p0.net
URLリンク(i.pinimg.com)
600:デフォルトの名無しさん
20/10/22 03:14:09.06 RxEiNjgnM.net
こまけぇこたぁ
いいんだよ!!
/)
//) __
`/ 二つ/⌒⌒\
| ニ⊃ (●)(●)\
/\ノ|⌒(_人_)⌒|
/ > ヽニノ <
601:デフォルトの名無しさん
20/10/22 08:49:00.24 8kbg1eIjd.net
まだVBAなんて使ってる人がいてビックリ
懐かしい言語だよね
602:デフォルトの名無しさん
20/10/22 09:02:14.12 OZW0tgCBM.net
Excel2000から20年なんて家電製品なら普通ですよ
603:デフォルトの名無しさん
20/10/22 12:37:02.60 QXcT5+jPM.net
Excel5.0からだよ
16ビットだよ
604:デフォルトの名無しさん
20/10/22 12:37:11.57 N0tQIHiYM.net
>>596
今現在Excel入ってりゃ必ず使えるのはVBAだけだから
まあ最近の言語に比べりゃ色々面倒な部分はあるけどちょっとしたツール程度ならなんとかなるぐらいの機能はあるし
605:デフォルトの名無しさん
20/10/22 17:17:13.81 8WoYrv7v0.net
A1に"2020/10/22"のように日付が入っています。
その日付が土曜日の場合、その月の何回目の土曜日かを調べるコードを教えてください。
606:デフォルトの名無しさん
20/10/22 17:41:32.24 V9nm7cr3M.net
嫌です
607:デフォルトの名無しさん
20/10/22 18:23:26.36 jxPHtPQlM.net
22÷7
608:デフォルトの名無しさん
20/10/22 18:50:04.05 lPQIKdWd0.net
>>600
その日付は木曜日です
609:デフォルトの名無しさん
20/10/22 18:56:20.17 CJ3HroyY0.net
int((日-1)/7+1)
610:デフォルトの名無しさん
20/10/22 19:08:32.49 XgRR6MjRa.net
days
611:デフォルトの名無しさん
20/10/22 20:00:05.75 Nlv/Qw7G0.net
>>596
ここでRuby教を広めようとしても無駄ですよ
612:
20/10/22 20:38:01.04 RiQFyYLuH.net
>>599
そうそう、それに win32api のほとんどを呼び出すことができるんですよね
613:600
20/10/22 20:54:38.55 EVMbdUMSM.net
〉〉604
ありがとうございます
614:デフォルトの名無しさん
20/10/22 21:21:26.60 hm8FUbN60.net
いつものあいつか
615:デフォルトの名無しさん
20/10/22 22:49:46.23 kity+iCG0.net
FileSystemObjectの参照設定
VBAの中でできないのかな?
616:デフォルトの名無しさん
20/10/23 00:04:14.15 1WodYwaj0.net
エディタの支援が不要ならCreateObjectでええやん
617:デフォルトの名無しさん
20/10/23 00:50:10.47 g9AT+l9rd.net
>>610
出来る。
618:デフォルトの名無しさん
20/10/23 01:26:42.51 ykqFrr6rM.net
>>610
出来ない
619:デフォルトの名無しさん
20/10/23 02:25:13.53 YKSIT3mga.net
>>610
出来まい
620:デフォルトの名無しさん
20/10/23 02:48:18.20 bmMgVHIId.net
競馬のオッズの取り込み教えて欲しい。
621:デフォルトの名無しさん
20/10/23 08:33:21.77 TKI7l+v40.net
複数のセルに纏めて背景色を付けたい場合についてです
指定のセルは離れているためRangeで範囲選択では済ませられないです
Unionを使用するのも手ではありますが動作速度に影響を及ぼすので最終手段としたいです
そこで背景色をつけるセルのAddressを取得して一次元配列に格納し
.Range(Join(Array, ",")).Interior.CoIor = CLng("&H00FAFAFA″)
で着色しようとしたのですが、どうもこの連結方法の場合、連結数が一定数を超えるとエラー停止してしまう様です
なので何か別のアプローチはないものかと模索している最中なのですがもしよろしければお知恵をお借りしたいです
622:デフォルトの名無しさん
20/10/23 08:37:04.87 WT7JJPgTa.net
自分で思いつかないようなテクニカルなやり方してもあとで読む人が大変だし普通に配列ループでいいじゃん
623:デフォルトの名無しさん
20/10/23 09:16:49.94 0vnMylCPM.net
VBAで済む事をわざわざ他言語でやる池沼よりマシ
624:デフォルトの名無しさん
20/10/23 10:42:10.63 9+IFx01J0.net
>>616
一定数を超えるとエラーになるってわかっているんだから一定数を超えないようにすればいいんじゃね
625:デフォルトの名無しさん
20/10/23 11:02:14.72 TKI7l+v40.net
>>619
不特定多数が使用する業務のスケジュール管理をするツールで、描写したスケジュール表を平日、土曜日、日曜祝日の3パターンで着色する必要があるんですけど、業務期間が長いとどうしても超えてしまう場合が発生するんですよね
業務期間に制限を設けるわけにもいかないですし
配列に格納してんだからループで一定数おきに着色ってのも考えたんですけどUnionより遅くなるっぽいんで最適化を諦めてUnionで繋げちゃうかーって思ってはいるんですが、その前にここで聞いてみて何かヒント貰えたらなーと
626:デフォルトの名無しさん
20/10/23 12:29:02.31 u/a/wHRt0.net
あまり編集をしないのであれば、条件付き書式で勝手に色がつくようにするとか
627:デフォルトの名無しさん
20/10/23 13:40:00.08 DQVFwAwV0.net
>>616
Join(Array, ",") ← こいつがエラー起こすって感じなの?
String 型は最大20億文字数らしいね
あるいは.Rangeが受け付けないのか
一応ググってみるとRangeの引数は255文字までというのが出て来る
これに引っかかってるんじゃねえの
628:デフォルトの名無しさん
20/10/23 13:51:36.68 DQVFwAwV0.net
>一次元配列に格納し
これでループ回したところで体感できるような速度差は出ないと思うがな
むしろRange内の文字列引数処理のほうが時間食われるんじゃないかと
Union・・・どんなもんだろねぇ
629:デフォルトの名無しさん
20/10/23 13:51:42.41 TKI7l+v40.net
>>622
なるほど
引数上限の255文字が原因っぽいですね
んー……そうするとやっぱり複数範囲をカンマ区切りでーは上限が発生しちゃいますよねぇ
630:デフォルトの名無しさん
20/10/23 14:36:51.59 ITa0Mrx5M.net
255件程度ならどんな方法でもさして時間変わらないのでは
screenupdating切れば一瞬で終わりそう
631:デフォルトの名無しさん
20/10/23 15:36:44.43 wfU4S4ZzM.net
数秒が待てないというのはイベント駆動でもさせる気なの?
632:デフォルトの名無しさん
20/10/23 15:48:23.96 BdUYZCjc0.net
エクセルでマリオカートを作ります
633:デフォルトの名無しさん
20/10/23 18:52:38.00 uwgUvjOA0.net
エクセルでねぇ・・。
実質DirectX頼りだろう。
セル書き換えじゃ60fps出ないし。
634:デフォルトの名無しさん
20/10/23 19:17:52.04 knErP7D20.net
255個ぐらいで数秒もかかるのはおかしい
635:デフォルトの名無しさん
20/10/23 19:24:37.35 9+IFx01J0.net
ヒントならもらったろうに、あとはどう実装するかは自力で試行錯誤やればいいんじゃね
636:デフォルトの名無しさん
20/10/23 19:38:40.04 TKI7l+v40.net
処理範囲的には
.Range(”M11:Q1011,T11:X1011,【中略】,CF11:CJ1011“).Interior.CoIor
ぐらいです
全体で1万弱程のステップがあって他ファイルの読込やグラフの生成、データファイルの出力等があり、全体の処理時間が10秒前後なので
この処理を軽くした所で焼け石に水なのは分かってはいるんですが、
オブジェクトの操作を極力減らして動作時間を軽減したいなぁと思っています
次の操作箇所を強調する為にRange(″M20,M20″).Selectみたいな操作を使ったので、これの応用で広域処理も行けるかなぁと思ったんですがダメみたいですね
お騒がせ致しました
お忙しい中ご意見等頂きありがとうございました
637:デフォルトの名無しさん
20/10/23 21:25:05.79 9+IFx01J0.net
問題に取り組む姿勢がおかしい
638:デフォルトの名無しさん
20/10/23 21:51:10.18 DQVFwAwV0.net
>>631
>他ファイルの読込
俺はこいつが異様に遅くて困ってる
100万個ほどのデータをCSVから読ませてるんだけど6世代i5で3分、セレロンだと10分とかかかる
Lineで1行ずつ読んでるせいなんだろうけどQueryだと早いんだろうなあと思いながら面倒で手を付けてなかった
これを機にやってみるかなぁ
実際相当早くなるもんかね?
639:デフォルトの名無しさん
20/10/23 22:37:29.74 jmwa0xlU0.net
何をやってるかにもよるがそもそも一度に全部読み込まなきゃいいんじゃね
640:デフォルトの名無しさん
20/10/23 23:22:27.59 /Kxbsbpt0.net
曜日の色付けなんてWEEKDAY関数と条件付き書式で良くないか?
曜日ごとに文字列記入するところはマクロにしてるけど
641:デフォルトの名無しさん
20/10/24 06:26:18.80 Uy2SF5SV0.net
>>634
>一度に全部読み込まなきゃ
そうやねぇ・・・
週ごとにデータを集計してんだけどいまんところ一括で読み込ませてる
常時PC立ち上がってる環境だから逐次データ吸い上げていけば一番いいんだけどそうなると小手先の変更じゃなくて大枠に手を加えなきゃなんなくなるのが頭痛いところ
てかこんなのエクセルでやらせんなよって話でもあるんだけどそうはいかない
642:デフォルトの名無しさん
20/10/24 08:29:55.58 Q0nf4D4p0.net
>>635
それでも良いんですけど、行ごとに工程の開始日と終了日を設定して工程の期間のセルは計画達成率ごとに緑、黄、橙、赤って着色する必要があり、その着色は開始日が平日なら土日祝日は着色しない、開始日が土日祝日なら期間中全てのセルを着色
とかやるんで条件書式でやるのかなり面倒なんですよね
ユーザーには進捗率をスケジュール表に記入させるんですけど今日以降の進捗率は入力があっても認識から外さなければならないって仕様もあったりするんで
643:デフォルトの名無しさん
20/10/24 10:23:24.93 EYzilKe/0.net
そのぐらいなら自分なら条件付き書式でやる
644:デフォルトの名無しさん
20/10/24 10:53:59.72 Fj5xdFDia.net
毎回全部のデータつくりなおすのか
差分だけやるとか分割するとかしないのね
645:デフォルトの名無しさん
20/10/24 12:24:40.86 9i+KquaLM.net
あるフォルダに複数のエクセルがあります。
シートは必ず一枚。
一番ファイル名が短いエクセルに
他のエクセルのシートをコピーしてまとめたい。
どう書けば楽ですか。
646:デフォルトの名無しさん
20/10/24 12:36:09.77 Gp+9LQQ1p.net
>>640
一番短いファイル名で同じ長さのものが有った時点で破綻
次の方どうぞ~
647:デフォルトの名無しさん
20/10/24 12:41:50.27 hS/lv/UK0.net
その問題を作った先生を問い詰めろ!
648:デフォルトの名無しさん
20/10/24 12:43:08.02 hS/lv/UK0.net
>>640
前提条件にリアリティがなさすぎるw
649:デフォルトの名無しさん
20/10/24 13:11:38.58 uN2dIIGs0.net
>>640
「わかりません」って書いとけばいいよ
650:デフォルトの名無しさん
20/10/24 13:18:00.47 Lxq4fMOo0.net
>>640
その通り書けば楽です
651:デフォルトの名無しさん
20/10/24 13:35:27.35 hS/lv/UK0.net
エクセルがあるとは何ですか?
652:デフォルトの名無しさん
20/10/24 13:37:23.43 hS/lv/UK0.net
Excelファイルのことを単にExcelと呼ぶのも違和感がある。
653:デフォルトの名無しさん
20/10/24 13:45:51.01 9i+KquaLM.net
>>641
同じ長さになることはありません
説明不足ですみません
654:デフォルトの名無しさん
20/10/24 13:46:27.15 EYzilKe/0.net
何を条件にした楽なのか?
655:デフォルトの名無しさん
20/10/24 15:19:09.43 hS/lv/UK0.net
ファイル名のことなんてあとで考えればよい。
まず手順を考えてください。
ファイル名は重要ではありません。
656:デフォルトの名無しさん
20/10/24 15:29:59.50 VJA5Q+pD0.net
いつものあいつっぽい
657:デフォルトの名無しさん
20/10/24 15:59:31.92 h35l0z5Z0.net
シート"土曜日の小計"のA2から、祝日と会社の休業日以外の土曜日を書いていくマクロを考えています。
(シートカレンダーのA列に日付、B列にA列の日付が祝日であれば"1"が入力してあり、C列に会社の休業日なら"1"が入力してあります)
このマクロだと、「424 オブジェクトが必要です」になります。どう書けば良いですか?
Dim a As Long,r As Long
a = 2
For r = 1 To 365
If Weekday(DateAdd("d", r, Date)) = 7 And _
Worksheet.Function.VLookup(DateAdd("d", r, Date), Sheets("カレンダー"), 2, False) <> 1 And _
Worksheet.Function.VLookup(DateAdd("d", r, Date), Sheets("カレンダー"), 3, False) <> 1 Then
Sheets("土曜日の小計").Cells(a, 1) = DateAdd("d",r,Date)
a = a + 1
End If
Next bc
658:デフォルトの名無しさん
20/10/24 17:14:11.51 hS/lv/UK0.net
>>652
URLリンク(officetanaka.net)
659:デフォルトの名無しさん
20/10/24 17:16:31.42 hS/lv/UK0.net
>>652
可読性の悪さw
660:デフォルトの名無しさん
20/10/24 17:22:25.13 VJA5Q+pD0.net
土曜日のことを聞いていたのは例のあいつ
661:デフォルトの名無しさん
20/10/24 17:24:29.58 hS/lv/UK0.net
>>652
どのワークシートなのか指定がないけど?
662:デフォルトの名無しさん
20/10/24 19:06:56.46 kz7Ernxq0.net
例のあいつが好きな人か
663:デフォルトの名無しさん
20/10/24 19:44:26.47 EYzilKe/0.net
オブジェクトの指定も無いし存在しない命令も書いてあるし
664:デフォルトの名無しさん
20/10/24 19:53:11.40 rvK7EvYrd.net
>>610
個別的になるが出来る。
Application.VBE.ActiveVBProject.References.AddFromFileを使う。
VBEを弄るからセキュリティがザルだ。
わかってる奴以外は使わないことをお勧めする。
665:デフォルトの名無しさん
20/10/24 20:28:18.61 UZJZIrrqM.net
>>652
Sheets("カレンダー")のあとにセル範囲を書けば動くんじゃね
666:デフォルトの名無しさん
20/10/24 21:19:11.38 9VZVkXWLd.net
理解しないまま適当にいじって、エラーが出る位置を見直そうともせず修正丸投げか
667:デフォルトの名無しさん
20/10/24 23:09:15.96 ZLw1Oaa2M.net
だっていつもの人だもの
668:652
20/10/24 23:35:43.13 h35l0z5Z0.net
>>653
どこにSetをつければいいか分かりません
>>652
どうやって指定すればいいですか?
>>660
Worksheet.Function.VLookup(DateAdd("d", r, Date), Sheets("カレンダー").Range("A:C"), 2, False) <> 1
でも同じでした
669:デフォルトの名無しさん
20/10/25 01:39:45.83 eXluQ9/t0.net
うるさい
670:デフォルトの名無しさん
20/10/25 02:05:19.43 mQ0mp2TEM.net
>>663
いい加減にしろや
死ね
671:デフォルトの名無しさん
20/10/25 11:43:41.49 R1nDOxYO0.net
>>663
基本的なことができてないようなので職場の他の人に頼んだ方が早いだろう
672:デフォルトの名無しさん
20/10/25 12:51:32.04 6oKLzf6v0.net
ある変数に、なんでもいいから100文字セットしたい場合って
どの関数使えばいいの?
str = "*****..."(100文字)
と書くのはダサいから嫌です
673:デフォルトの名無しさん
20/10/25 12:58:10.18 cOgZifE90.net
ダサいとする基準は?
674:デフォルトの名無しさん
20/10/25 13:44:52.27 eJOhPHQ60.net
>>667
WorksheetFunction.Rept("あ" ,100)
675:デフォルトの名無しさん
20/10/25 14:25:26.14 f7KUnMgPd.net
>>667
String(255,"*")
676:デフォルトの名無しさん
20/10/25 14:26:14.56 f7KUnMgPd.net
100文字か。
String(100,"*")
677:デフォルトの名無しさん
20/10/25 14:53:37.82 SDXJVscja.net
>>667
その質問のほうがダサい
678:デフォルトの名無しさん
20/10/25 17:29:34.56 6oKLzf6v0.net
>667
です
669-671
おかげさまでできました有難う天才たち
679:デフォルトの名無しさん
20/10/25 19:06:05.20 DNLjJymIM.net
やっぱりいつものあいつでしたとさ
680:デフォルトの名無しさん
20/10/25 19:23:20.13 eXluQ9/t0.net
なんでもいいという要件がわからない。
681:デフォルトの名無しさん
20/10/25 20:13:10.48 R1nDOxYO0.net
からかわれている
682:デフォルトの名無しさん
20/10/25 20:37:35.14 cOgZifE90.net
というかバカにされてるなたぶん
683:デフォルトの名無しさん
20/10/25 21:38:09.03 eeV8PNBf0.net
複数行まとめてコメントアウトしたい場合
どう書けばいいですか
一行ずつ'を入れたくないです。
684:デフォルトの名無しさん
20/10/25 22:03:05.56 D3cPjOx/a.net
選択されたら行範囲をすべてコメント化/コメント解除はツールバーにある
そのバーが非表示だと表示しなければダメだが
あと、推奨されるかは分からないけど、
#if 0 then
コメント化したい行
#end if
とかよくやります
685:デフォルトの名無しさん
20/10/25 22:04:11.05 D3cPjOx/a.net
出だし
選択された行範囲…
です
686:デフォルトの名無しさん
20/10/25 22:18:31.00 D3cPjOx/a.net
自分で書いておいてなんだけど、#でぃれくてぃぶによるコメントはお勧めしません
知っておいてよいかも、で
687:デフォルトの名無しさん
20/10/25 23:22:51.95 JTBNO/Ek0.net
>>678
行の末尾に半角スペースとアンダーバーを入れて次の行と繋げてしまうとか?
688:デフォルトの名無しさん
20/10/26 00:23:04.45 qmNjcSj20.net
>>678
数行程度の編集作業で手を抜くってのはどうかな
むしろそのコメント残さないで削除した方がいいんじゃね
一時的に処理を分けるならプロシージャとかで追い出して呼び出し部分をコメントにするとかあるけど
689:デフォルトの名無しさん
20/10/26 12:01:16.14 fNFJMgyU0.net
>>678 は釣り
690:デフォルトの名無しさん
20/10/26 14:18:17.78 qmNjcSj20.net
やっぱりそうか
691:デフォルトの名無しさん
20/10/26 22:12:59.62 jYeoL4370.net
元々スプレットシート使ってて最近vba始めたんだけど
エクセルのvbaではスプレットシートで言うとこのsetvaluesみたいなのはないの?
2次配列をシートに貼り付けるみたいなことしたいんだけど
692:デフォルトの名無しさん
20/10/26 22:13:37.01 jYeoL4370.net
2次配列じゃなくて多次元配列でした
693:デフォルトの名無しさん
20/10/26 22:18:23.63 LUihbr1y0.net
>>687
VBAは2次元配列限定でRangeに代入すればまとめて書き込んだり読み取ったりできる
694:デフォルトの名無しさん
20/10/27 00:26:27.42 bFDGidnH0.net
VBAはなぜか裏技っぽい文法が好きらしい
Midステートメントなんて最悪
695:デフォルトの名無しさん
20/10/27 01:13:56.57 86zqMFTdM.net
>>686
>>689
釣られないように
696:デフォルトの名無しさん
20/10/27 02:21:37.66 rqaBQIGU0.net
>>688
何度もすいません
例えばこんな感じでrangeの範囲がわからない場合rangeのとこどうしたらいいの?
dim tmp
tmp = worksheets("sheet1").usedrange
worksheets("sheet2").range()= tmp
697:デフォルトの名無しさん
20/10/27 02:24:20.74 rqaBQIGU0.net
ソース間違いです
dim tmp
tmp = worksheets("sheet1").usedrange.value
Worksheets("sheet2").range()= tmp
698:デフォルトの名無しさん
20/10/27 02:30:47.78 9HNq6CFYd.net
例のあいつ
699:デフォルトの名無しさん
20/10/27 11:38:27.45 ptoZa2VhM.net
Wordの2ページ目以降にラベルを追加する方法について教えてください
エクセルからWordを呼び出して、ラベルを追加しようとしています
以下のように記載しました
Set newDoc wdApp.Documents. Add
newDoc.Shapes.AddLabel msoTextOrientationHorizontal, 35, 300, 30, 20
AddLabelの第二引数(300になっているところ)を増やせば2ページ目以降に追加されると思いましたが消えてしまい上手くいきません
すみませんがどうすればいいかご教示お願いいたします
700:デフォルトの名無しさん
20/10/27 12:32:20.10 g67UH/S6d.net
>>692
それ、Rangeの範囲わかるよね。
701:デフォルトの名無しさん
20/10/27 16:07:03.53 rqaBQIGU0.net
>>695
わからない場合です
いちおうuboundとかで出せるのは分かるけど流石にこれだと増長すぎるかなと
worksheets("sheet2").range(cells(1,1),cells(ubound(tmp),ubound(tmp,2))) = tmp
702:デフォルトの名無しさん
20/10/27 18:11:55.01 l1bcXJEN0.net
VBAを使うには記述の冗長さは諦めたほうがいい
その書き方で大正解だ
703:デフォルトの名無しさん
20/10/27 18:13:10.53 l1bcXJEN0.net
VBAの何が終わってるってこう言う書き方に少しも疑問を覚えない老害がいっぱいいるんだよな
704:デフォルトの名無しさん
20/10/27 18:22:43.09 qZwcfAyua.net
一旦変数にいれればいいんじゃね
705:デフォルトの名無しさん
20/10/27 18:42:07.59 6WpiGXJ0M.net
疑問に思ったところでどうしようも無く無いか
自分でクラスでも作るとか?
706:デフォルトの名無しさん
20/10/27 18:50:59.46 D9T+kNV20.net
冗長にしたくなければテーブル使うのが1番手っ取り早いかなぁ
プロパティの分かりづらさとネット検索結果の貧弱さは仕方ない
707:デフォルトの名無しさん
20/10/27 19:33:07.02 w/TzFTqy0.net
>>697
resizeはどうだ?
708:デフォルトの名無しさん
20/10/27 19:35:27.63 w/TzFTqy0.net
最近おもいついたこと
ワークシート関数→波紋
VBAマクロ→幽波紋
709:デフォルトの名無しさん
20/10/27 23:01:35.17 o6G0sPC10.net
>>689
裏技っぽいかは知らんがこれ好き
a = b = c
710:デフォルトの名無しさん
20/10/27 23:03:09.41 gj2Ohu8L0.net
>>679
ありがとうお勧めではないそうですが
教えてくださった方法でコメントアウトできたので
使いますww
711:デフォルトの名無しさん
20/10/27 23:05:41.35 WVQXu4mGa.net
代入が式の言語だと、結果 a、b、c が同値になるし、イヤだなぁ…
712:デフォルトの名無しさん
20/10/27 23:13:03.58 WVQXu4mGa.net
>>705
[表示]-[ツールバー]-[編集] で表示られるアイコンの左から9番目で選択範囲を一括コメント化、その右のアイコンでコメント解除
それも試してみてください
713:デフォルトの名無しさん
20/10/27 23:23:37.13 2iVpt4JMa.net
>>704
おれは嫌い
714:デフォルトの名無しさん
20/10/28 06:32:08.53 MUExsF8QM.net
マクロ実行後、
エクセルファイルを保存しようとすると
プライバシーに関する注意
というメッセージが出ます。
出ないよう設定できるようですが
セキュリティ的に不安です。
皆さんどのような対処をされてますか
いったんエクセルを全部終了するくらいしか
思いつきません
715:デフォルトの名無しさん
20/10/28 06:48:10.23 MGib4+U5M.net
マクロ実行後、 ←この時点で手遅れ
716:デフォルトの名無しさん
20/10/28 08:53:47.67 MUExsF8QM.net
>>710
実行前に他のエクセルを終了するのが
一般的でしょうか
717:デフォルトの名無しさん
20/10/28 12:22:09.47 VqefcRCnM.net
>>704
好きとか嫌いとかじゃなくて
If b = c Then
a = True
Else
a = False
End If
みたいなコード書くなら
a = b = c
ッて書いた方が楽じゃね?
718:デフォルトの名無しさん
20/10/28 12:26:16.35 SBFJNMXDM.net
後から見直すときに前者の方が見やすい
書く時に楽かどうかは別にどうでもいいです
719:デフォルトの名無しさん
20/10/28 13:08:13.57 Gcn0+siH0.net
a = (b == c)
ならいいんだけどなぁ
720:デフォルトの名無しさん
20/10/28 13:28:06.88 ArgZkv9MM.net
インタプリタの時代にif文の構文解析が遅いからって可読性皆無の謎の数式書いてた思い出
721:デフォルトの名無しさん
20/10/28 15:35:13.90 0lSgHaJH0.net
>>697
教えてくれてありがとうございます
これが普通なんですね
仕方ないので暫くはこれで大人しく頑張ってみます
何か荒れてたとこに変な質問して申し訳ありませんでした
722:デフォルトの名無しさん
20/10/28 18:57:08.32 koZ0sZlBM.net
>>696
冗長とか増長とか言う前にシートを指定せずにcells( )とか使うのはバグの元、せめて
With Worksheets("sheet2")
.Range(.Cells(1, 1), .Cells(UBound(tmp), UBound(tmp, 2))) = tmp
End With
にした方がいい
723:デフォルトの名無しさん
20/10/28 19:02:36.90 SBFJNMXDM.net
withはなんか嫌い
724:デフォルトの名無しさん
20/10/28 19:10:52.23 URI3IFfrM.net
DAIGO監修マッチングアプリ
725:デフォルトの名無しさん
20/10/28 19:13:48.38 Aw3ALjki0.net
..でもうひとつ上のwithが使えるとか変な拡張してほしい
726:デフォルトの名無しさん
20/10/28 19:29:16.70 n4xiXKpa0.net
>>717
With ThisWorkbook.Worksheets("sheet2")
.Cells(1, 1).Resize(UBound(tmp), UBound(tmp, 2))) = tmp
End With
おれはブックから指定しないと気が済まんな
727:デフォルトの名無しさん
20/10/28 19:32:00.41 XiKqUxDYM.net
withはなんか嫌い
728:デフォルトの名無しさん
20/10/28 19:40:24.53 8aJXN6gS0.net
Sheetオブジェクトにbookから指定したシート格納して扱うことが多いかなー
729:デフォルトの名無しさん
20/10/28 19:43:09.41 Aw3ALjki0.net
SetしたらNothing警察がウルサイんだよ
730:デフォルトの名無しさん
20/10/28 19:44:40.32 n4xiXKpa0.net
Withじゃないと他人がつけたSheetやRangeの変数名を把握するの大変じゃない?
731:デフォルトの名無しさん
20/10/28 19:49:35.60 HcvuYFHJd.net
>>696
???
worksheets("sheet2").usedrange.value= tmp
じゃ駄目なのか?
範囲の文字が欲しいなら
worksheets("sheet2").usedrange.address
とかでも駄目?
732:デフォルトの名無しさん
20/10/29 12:00:49.68 xpkBYj/E0.net
>>726
sheet1と2じゃUsedRangeの範囲が違うだろ
sheet1の範囲取得しないと