1 名前:デフォルトの名無しさん [2017/05/16(火) 08:24:45.78 ID:iIGA/64l0.net] !extend:checked:vvvvv:1000:512 スレ立ての際は一行目に !extend:checked:vvvvv:1000:512 と入れてスレ立てして下さい ExcelのVBAに関する質問スレです コード書き込みや作成依頼もOK ※前スレ Excel VBA 質問スレ Part47 [無断転載禁止]©2ch.net echo.2ch.net/test/read.cgi/tech/1489557874/ ※関連スレ VBAなんでも質問スレ Part2 echo.2ch.net/test/read.cgi/tech/1432173164/ Access VBA 質問スレ Part1 echo.2ch.net/test/read.cgi/tech/1328536426/ Excel総合相談所 125 echo.2ch.net/test/read.cgi/bsoft/1481369538/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
477 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 12:26:31.41 ID:I1EQuNZXM.net] ある数値に対して指数表記の有理数と指数を楽に拾いたいときって、format関数を使うのがいいですかね? 他に楽な方法ありますか?
478 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 14:32:15.95 ID:zUUtTsys0.net] どんな方法があるにせよ、お前はそれで納得できずもっと他にないの?って 聞き続けるんだろ? >>463
479 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 17:47:56.11 ID:I1EQuNZXM.net] 書いてたら泥沼化してたんだけど、結構すっきり書けました。 指数=cint(split(format(数値,"0e+0"),"e")(1)) 有理数=数値*0.1^指数
480 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 21:26:05.82 ID:rlzCeZS80.net] エクセルの複数のセルの外枠に罫線を引きたいのですが、アプリケーション定義なんたらのエラーが出ます。 workbooks(********.***).worksheets(*****).range(cells(StartRow,StartCol),cells(endrow,endocol).borderaround でstartrow startcol endrow endcolは変数です どこがおかしいでしょうか?
481 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 21:45:23.47 ID:Zr32bafNM.net] >>466 cellsがActiveSheetのセルなのでエラーになる。 ↓のような感じでどうぞ。 with workbooks(********.***).worksheets(*****) .range(.cells(StartRow,StartCol), .cells(endrow,endocol).borderaround end with
482 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 22:52:19.74 ID:rlzCeZS80.net] >>467 ありがとう。 そういうことだったんですね。
483 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 17:22:19.30 ID:u7+4M4Ru0.net] >>468 初心者が一番嵌まる奴だな。
484 名前:デフォルトの名無しさん [2017/06/03(土) 21:54:33.85 ID:4eBaDiw20.net] クラスモジュールってクラス定義してインスタンス化できるってこと?マルチスレッド可能なの? オブジェクト指向?
485 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 22:20:24.58 ID:KC92KqWf0.net] >>470 >クラス定義してインスタンス化できるってこと? そう >マルチスレッド可能なの? 無理
486 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 22:30:10.37 ID:aDOlFL7Wx.net] >>470 オブジェクト指向
487 名前:ヘ中途半端なとこまでしかできない マルチスレッドは無理 [] [ここ壊れてます]
488 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 22:32:25.28 ID:KC92KqWf0.net] エクセルvbaの場合エクセル自体がメインのオブジェクトだから、そんなにclassにこだわることもないけどね エクセルvbaでゲーム作ってる人は知らん
489 名前:デフォルトの名無しさん [2017/06/03(土) 22:56:31.41 ID:4eBaDiw20.net] >>471 >>472 プロパティくらいなのか サンキュ
490 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 23:02:58.42 ID:aDOlFL7Wx.net] >>474 カスタムイベント実装、インターフェース継承くらいなら出来る ただ引数付きコンストラクタの作成やクラス継承・オーバーロードが出来ない
491 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 23:49:37.74 ID:KC92KqWf0.net] vbaって継承できたのか、知らなかった・・・
492 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 23:53:01.27 ID:6M92ecdj0.net] >>475 C++でそれらを使ってた時は 無くてもいいかなあとか思ってたけど VBA始めたらありがたさがわかった
493 名前:デフォルトの名無しさん [2017/06/04(日) 00:02:03.04 ID:SMq8qLM70.net] >>477 C++でわからなかったんだからわかってないよそれw
494 名前:デフォルトの名無しさん mailto:sage [2017/06/04(日) 00:14:43.34 ID:QJwsDnIt0.net] >>478 いや、普通に使ってるものに対して いちいちありがたみなんて感じないだろ? あるのが当然なんだから 正直lamdaもほしい
495 名前:デフォルトの名無しさん [2017/06/04(日) 00:23:32.29 ID:SMq8qLM70.net] >>479 そうか?オレ毎日納豆食うけど食うたびに美味しいぜ?
496 名前:デフォルトの名無しさん mailto:sage [2017/06/04(日) 00:46:27.14 ID:TICwxklg0.net] 無くてもいいかなあ とわざわざ考えるとは疑問
497 名前:デフォルトの名無しさん mailto:sage [2017/06/04(日) 00:55:58.63 ID:/9No1Vdv0.net] C++の共用体はこんなもん使うか?と思ったけど、使うべき場面が来たら普通に使う そういうもんだった
498 名前:デフォルトの名無しさん mailto:sage [2017/06/04(日) 01:47:41.87 ID:ObX9l6mb0.net] ありとあらゆる機能を使って実装するっていう状況自体少ないだろうしな。
499 名前:デフォルトの名無しさん (ワッチョイ 6a6f-E6+r) mailto:sage [2017/06/04(日) 08:43:15.60 ID:/sAoF2vM0.net] マルチスレッドが無理って、 2つのブックでDoEventsして、 2つ実行したらおかしくなるってこと?
500 名前:デフォルトの名無しさん (ワッチョイ bd23-KDIu) mailto:sage [2017/06/04(日) 11:38:52.57 ID:ParPgGiC0.net] >>484 それはマルチスレッドじゃなくね?
501 名前:デフォルトの名無しさん (ワッチョイ 3511-UdBD) mailto:sage [2017/06/04(日) 11:40:48.80 ID:NZhuuX9z0.net] なんやかんやクラスは便利 データまとめるのにはよく使うわ
502 名前:デフォルトの名無しさん (アークセー Sx3d-nANo) mailto:sage [2017/06/04(日) 12:00:24.95 ID:I9SwB1IFx.net] >>486 クラスでデータまとめるって、具体的にはどういう場面で使ってる? ワークシート使うより便利?
503 名前:デフォルトの名無しさん (ワッチョイ 3511-UdBD) mailto:sage [2017/06/04(日) 12:55:28.25 ID:NZhuuX9z0.net] >>487 シートにあるやつを一回配列かコレクションか(俺はやらないけどレコードセットでもいい)にクラスん中でまとめるのよ メインコードにリストに入れる処理入れるとごちゃごちゃするからさ
504 名前:デフォルトの名無しさん (アークセー Sx3d-nANo) mailto:sage [2017/06/04(日) 13:22:31.55 ID:tlzlLDo0x.net] >>488 レスありがとう なるほどね 複数のレコードに対して同じ処理を繰り返す必要がある場合には便利そう
505 名前:デフォルトの名無しさん (ワッチョイ 9e23-amhP) mailto:sage [2017/06/04(日) 17:48:58.65 ID:1s3T2QVw0.net] >>484 全然ちがう。 win32API使って別スレッド作る方法はあるし可能だよ。 けどExcelVBAでそれをやると物凄い不安定になる。 自分が試した感触ではRangeとかCellとかのExcelのオブジェクト触った瞬間にExcelごと落ちる感じ。 じゃあ、Excelのオブジェクト触らずに計算する所だけなら良いかというと、動く場合もあるけど複雑なものになると処理が間に合わなくて落ちるらしい。 基本、やめた方が良い。
506 名前:デフォルトの名無しさん (スプッッ Sded-qcoX) mailto:sage [2017/06/05(月) 01:20:19.17 ID:oPyz6kCkd.net] 別処理をWord使って処理させようとしてもOf
507 名前:fice全体で連携かかってるみたいでうまくいかなかったことがある 変なとこで作り込まれていてやりたいようにできないんだよな [] [ここ壊れてます]
508 名前:デフォルトの名無しさん (ドコグロ MM12-Tm/A) mailto:sage [2017/06/05(月) 08:37:00.53 ID:nJSdLO+iM.net] 元々マルチスレッドに対応してないものを無理矢理動かそうとして文句言われてもなぁ...
509 名前:デフォルトの名無しさん (ワッチョイ 5e6d-zyXy) mailto:sage [2017/06/05(月) 08:43:10.54 ID:+xVCJOY00.net] 文句じゃなくね
510 名前:デフォルトの名無しさん (ワッチョイ 2973-KDIu) mailto:sage [2017/06/05(月) 08:55:26.49 ID:btJTHdak0.net] 想定外の使い方ができないぞ!ってのは文句じゃないのか
511 名前:デフォルトの名無しさん (スップ Sdea-rE82) mailto:sage [2017/06/05(月) 09:24:51.60 ID:Sx3XxldLd.net] >>490 ほほ同じ経験がある。 自分の場合は処理が終了したデータをDBにINSERTするところは上手くマルチスレッド化できた。 待ち合わせが必要ないパターンだったし。 COMそのものがマルチスレッドだめなんかね?
512 名前:デフォルトの名無しさん (JP 0H6e-rLqX) mailto:sage [2017/06/05(月) 11:01:11.07 ID:bwrXOc4qH.net] >>490 > 自分が試した感触ではRangeとかCellとかのExcelのオブジェクト触った瞬間にExcelごと落ちる感じ。 それGUIアプリの常識。 全然関係ないスレッドからUIスレッド管理下のものに触ってはいけない。 https://ja.wikipedia.org/wiki/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%82%A4%E3%82%B9%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89
513 名前:デフォルトの名無しさん (スップ Sdea-rE82) mailto:sage [2017/06/05(月) 11:54:25.53 ID:Sx3XxldLd.net] >>496 プライマリスレッドからでもダメなこと多かったよ。
514 名前:デフォルトの名無しさん (JP 0H6e-rLqX) mailto:sage [2017/06/05(月) 11:59:36.00 ID:bwrXOc4qH.net] >>497 > プライマリスレッドからでもダメなこと多かったよ。 どの言語で?
515 名前:デフォルトの名無しさん (ドコグロ MM12-Tm/A) mailto:sage [2017/06/05(月) 12:54:03.39 ID:cR57/ADJM.net] >>495 > COMそのものがマルチスレッドだめなんかね? COM 自体はアパートメントモデルをちゃんと設定すればマルチスレッドでも動く eternalwindows.jp/com/apartment/apartment01.html 個々のオブジェクトが正しく動作するかどうかはまた別の話
516 名前:デフォルトの名無しさん (ササクッテロラ Sp3d-mjoq) [2017/06/05(月) 23:38:18.98 ID:bd1ggU41p.net] マクロを作成は通常MODULEですが、 Sheet1やThisworkbookに記入するのはどういうときでしょうか。済みません。
517 名前:デフォルトの名無しさん (ワッチョイ 4aef-PQPf) mailto:sage [2017/06/06(火) 00:15:48.16 ID:d6CS0Xy90.net] なんでVBAでマルチスレッドにするの
518 名前:デフォルトの名無しさん (ワッチョイ 9e23-amhP) mailto:sage [2017/06/06(火) 04:12:26.65 ID:NdFOOmMr0.net] >>501 要望として有るのは待ち状態の時に先に進めるためとか。 ダイアログの中には何らかの操作をしてダイアログ自体を閉じさせないと次のステップに行かない物がある。 そういう時に別スレッドで無限ループ中でそのダイアログが見つかったら操作する処理を動かしてからダイアログ表示させるとか。 例えばメッセージボックス表示させるんだけど10秒間ボタンが押されなかったらキャンセルするとか。 こういうのは上手く書くと動く。 他にも複数の関連しない計算に時間がかかっている時に単純に速度アップのために使いたいと思うかもしれない。 でも動いても趣味のプログラム以外じゃ危なっかしくて使えない。 マルチプロセスで代替えできるものも多いから無理する必要もない。
519 名前:デフォルトの名無しさん (ワッチョイ 6a06-k7rq) mailto:sage [2017/06/06(火) 04:20:46.72 ID:LBKXQv4G0.net] >>500 >Sheet1 そのシートをActiveにした時の処理、DeActivateにする時の処理、あるいは 特定のセルにデータを入れた時の処理 etc >Thisworkbook ブックの起動時や終了時にDBとの接続処理や切断処理を入れてる
520 名前:デフォルトの名無しさん (ワッチョイ 5e6d-zUMb) mailto:sage [2017/06/06(火) 07:54:06.29 ID:xLIl+dL/0.net] sheetやbookに書くのはそのオブジェクトのイベント 使い捨ての整形マクロなんかはsheetに書いてもいいけど、標準モジュールに書いたほうベター
521 名前:デフォルトの名無しさん (アークセー Sx3d-nANo) mailto:sage [2017/06/06(火) 09:
] [ここ壊れてます]
522 名前:05:13.69 ID:YhE+Nuz8x.net mailto: >>500 シートやブックのイベントを使用するためだよ [] [ここ壊れてます]
523 名前:デフォルトの名無しさん (ワッチョイ bd23-KDIu) mailto:sage [2017/06/06(火) 20:09:22.46 ID:Uy4z/eLw0.net] vlookup等を使用しているとソルバーが使えないらしいのでVBAで作ろうと思っていますが、定番というか定石というか、参考になるサイトややり方等はありますか? 言ってて抽象的だなとは思ってはいますが、どうすべきなのか判らず…よろしくお願いします。
524 名前:デフォルトの名無しさん (ワッチョイ 6a6f-E6+r) mailto:sage [2017/06/06(火) 21:53:22.27 ID:efHThVDq0.net] >>500 Thisworkbook.Worksheets(Activesheet.Name).Cells(1,1).Value=1 って書くのが面倒くさくて、 Me.Cells(1,1).Value=1 って書きたい時とか。 Me.も要らねえだろって? 何らかの理由でActivesheetが変わっちゃったら嫌じゃないですか?
525 名前:デフォルトの名無しさん (ササクッテロラ Sp3d-mjoq) [2017/06/06(火) 21:56:25.64 ID:vXDpJbBwp.net] 教えてください。 マクロでハイパーリンクを実行したいのですが、セルにリンクを貼る必要がない、ただマクロから実行するだけというとき、どう書けば良いのでしょうか。
526 名前:デフォルトの名無しさん (ワッチョイ ed46-RkbP) mailto:sage [2017/06/06(火) 22:06:15.37 ID:XIE7cY+50.net] >>508 これ? Sub foo() ThisWorkbook.FollowHyperlink "www.google.co.jp/" End Sub
527 名前:デフォルトの名無しさん (ワッチョイ 6a6f-E6+r) mailto:sage [2017/06/06(火) 22:14:17.43 ID:efHThVDq0.net] そっち? ハイパーリンクじゃなきゃダメなのか、 飛べば何でもいいのか。 Dim Ie As InternetExplorer Set Ie = CreateObject("InternetExplorer.Application") Ie.Visible = True Ie.Navigate "www.google.co.jp/"
528 名前:デフォルトの名無しさん (ワッチョイ 6a6f-E6+r) mailto:sage [2017/06/06(火) 22:21:53.88 ID:efHThVDq0.net] ↑Microsoft Internet Controlsを参照設定しないとだめだわ。
529 名前:デフォルトの名無しさん (ワッチョイ 5e6d-hsUK) mailto:sage [2017/06/06(火) 22:53:35.96 ID:xLIl+dL/0.net] >>510 IEではなく、chromeインスタンスを作ることって出来ますか?
530 名前:デフォルトの名無しさん (アークセー Sx3d-nANo) mailto:sage [2017/06/06(火) 23:09:15.48 ID:NPrNQzK4x.net] Dim objShell as Object Set objShell = CreateObject(“WScript.Shell”) GC.Run (“chrome.exe -url ” & アクセスしたいページのアドレス)
531 名前:デフォルトの名無しさん (アークセー Sx3d-nANo) mailto:sage [2017/06/06(火) 23:10:19.79 ID:NPrNQzK4x.net] 間違えたので Dim objShell as Object Set objShell = CreateObject(“WScript.Shell”) objShell.Run (“chrome.exe -url ” & アクセスしたいページのアドレス)
532 名前:デフォルトの名無しさん (スプッッ Sded-qcoX) mailto:sage [2017/06/07(水) 00:14:23.17 ID:iB9NoSxCd.net] >>507 activesheetがどこだろうとsheetモジュールに書いてんなら関係なかんべ sheetオブジェクトまで省略できる手抜きコードで済ますのにたまに使ってるわ あとsheetをコンフィグ書いとくのに使ってるときにプロパティ的な関数を置いといたりな あまり行儀よくはない自覚はある
533 名前:デフォルトの名無しさん (ブーイモ MM49-JT0G) mailto:sage [2017/06/07(水) 01:08:40.19 ID:0NeAqWbNM.net] >>506 詳しくはないけど、VBAでやるものじゃない印象。 Excelのソルバーで収束するように数式を書き換えるか、他の言語やツールを使うのがいいんじゃないかなあ。 「ソルバー アルゴリズム」でググれば色々手段が出てくるよ。
534 名前:デフォルトの名無しさん (ワッチョイ 7d6d-28Zt) [2017/06/08(木) 01:09:56.48 ID:eFwaOcHQ0.net] あるサイトのスクロールバーを一番下まで下げて キャプチャしてシートに貼り付けてトリミング。 同じページにあるフレーム内のスクロールバーを下まで下げて キャプチャしてシートに貼り付けてトリミング。ってのを 3ページ分位繰り返し行いたいのですが www.vba-ie.net/ie/iescroll.html この辺とか見てるんですがヒントください
535 名前:デフォルトの名無しさん (ワッチョイ 5b23-cb7n) mailto:sage [2017/06/08(木) 05:16:07.28 ID:1DKX/Vru0.net] >>517 なんでこんなヘンテコなことしなきゃならんの? JavaScriptなんて
536 名前:必要無いぞ。 と思ったけど、ちょっと調べてみるとJavaScriptでスクロールしてる例が多いな。 今、試す環境が無いから何とも言えないな。 DOMの勉強するよろし。 [] [ここ壊れてます]
537 名前:デフォルトの名無しさん (ワッチョイ db6d-D9zB) mailto:sage [2017/06/08(木) 07:40:44.87 ID:fJC45ZIB0.net] >>517 パット見たけどかなりめんどくさそう キーボードマクロの方が良いと思う
538 名前:デフォルトの名無しさん (ワッチョイ 5b23-cb7n) mailto:sage [2017/06/08(木) 15:33:04.11 ID:1DKX/Vru0.net] >>519 キーボードマクロは危険だよ。 動いてる最中にマウスクリックとかすると場合により大変なことになる。 操作は難しくないけどキャプチャをどうするかで難しくなるかも。 自分だったら難しい方法を選択するので。
539 名前:デフォルトの名無しさん (アウアウイー Saf1-ptyI) mailto:sage [2017/06/08(木) 20:37:38.86 ID:HogApBmCa.net] VBA初心者です For Nextループのカウンタ変数について質問です 1) データの最終行を取得 カウンタ変数の初期値 2、終了値をデータの最終行に設定(仮に11とします) 2) For Nextループで処理 3) ループ終了後、A11セルの値を変数に代入したい For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row 処理 Next ★変数 = Cells(i, 1).Value ★For Nextループを抜けた直後のカウンタ変数iは、データの最終行(i=11)のはずなので、 そのままCellsプロパティに代入すればA11セルの値を取得できると考えたのですが、 ループ終了時にカウンタ変数iが終了値に+1されて12になってしまいます 「For Nextループ終了後のカウンタ変数iは終了値+1になる」 というのは仕様なのでしょうか?
540 名前:デフォルトの名無しさん (ワッチョイ dd8b-Loth) [2017/06/08(木) 20:40:46.12 ID:TyBSFeDZ0.net] 仕様ではないけど現実はそうなる
541 名前:デフォルトの名無しさん (ワッチョイ d543-g/1O) mailto:sage [2017/06/08(木) 20:45:04.87 ID:xavUYSpk0.net] ループ変数が指定の範囲を「越えたら」ループを終了する、というのがForの仕様
542 名前:デフォルトの名無しさん (アークセー Sx71-sCoW) mailto:sage [2017/06/08(木) 20:46:19.32 ID:x3QO3rgpx.net] >>521 xlupの値を使えばいいでしょ
543 名前:デフォルトの名無しさん (ワッチョイ dd8b-Loth) [2017/06/08(木) 20:46:39.16 ID:TyBSFeDZ0.net] ループ変数が指定の範囲の「間」ループを繰替えす、というのがForの仕様
544 名前:デフォルトの名無しさん (アークセー Sx71-5Ux4) mailto:sage [2017/06/08(木) 20:53:59.27 ID:ajpliBtkx.net] >>522 仕様だよ For Nextはカウンタ変数の値が引数endを超過した(または引数endの値未満になった)と判断したときにループ終了になる Step1でループさせた場合、カウンタ変数がend+1の値になったときに次の処理に移るので、ループを抜けた後のカウンタ変数は当然end+1になる
545 名前:521 (アウアウイー Saf1-ptyI) mailto:sage [2017/06/08(木) 20:55:48.28 ID:HogApBmCa.net] お答えありがとうございます >>523 ,525-526さんがおっしゃってるようなことかなー、と思ったのですが カウンタ変数は終了値を維持するという謎の思い込みがあったので 詳しい方々にきちんと教えていただけて有り難いです >>524 ごり押しでi=i-1とするつもりでしたが断然スマートですね というか、最終行取得のCells(Rows.Count, 1).End(xlUp).Rowも定型文のように覚えていたので、 きちんと構文の意味と動作を調べ直します
546 名前:デフォルトの名無しさん (アークセー Sx71-sCoW) mailto:sage [2017/06/08(木) 20:59:19.38 ID:x3QO3rgpx.net] >>527 へっ 良いってことよ! 達者でな
547 名前:デフォルトの名無しさん (ワッチョイ 2311-OlK+) mailto:sage [2017/06/08(木) 21:43:39.15 ID:ZLqPeRaK0.net] i = 1 Do While i <= 11 i = i + 1 Loop みたいなもんだね。 あと言語によってはループ変数(i)がfor文の中だけのスコープで for文を抜けたら破棄されたりするから、ループ変数はループの中だけで 使う癖をつけておいた方が無難。
548 名前:デフォルトの名無しさん (ワッチョイ 236f-xcYX) mailto:sage [2017/06/08(木) 21:44:40.10 ID:/ZCsTOrv0.net] 別ブックのデータを自動で取り込むプログラムを書いていて思うんだけど、
549 名前: そういうのが簡単に出来るクラスとかないの? [] [ここ壊れてます]
550 名前:デフォルトの名無しさん (ワッチョイ 7d3d-OlK+) mailto:sage [2017/06/08(木) 21:47:25.81 ID:XdC3vCwF0.net] >>530 Workbooks.Open
551 名前:デフォルトの名無しさん (ワッチョイ 2311-OlK+) mailto:sage [2017/06/08(木) 21:52:58.35 ID:ZLqPeRaK0.net] >>517 こんな感じかな? 出来るかはわかんないけど。 IEインスタンスを生成する IEを表示する IEにURLを送る IEの表示を待つ IEのページにフォーカスする sendkeysで一番下までスクロールする sendkeysでPrintScreen 0.1秒位待つ シートに貼り付けてトリミングする IEのiframeにフォーカスする sendkeysで一番下までスクロールする sendkeysでPrintScreen 0.1秒位待つ シートに貼り付けてトリミングする 以下ループ キーマクロは俺も考えたけど、エクセルの操作が融通ききにくそう。 UWSCとか使えばいいかもしれないけど、結局VBAで書くのと大差なくなる気がする。
552 名前:デフォルトの名無しさん (ワッチョイ 236f-xcYX) mailto:sage [2017/06/08(木) 22:01:50.62 ID:/ZCsTOrv0.net] >>531 そうだけどさ、 自身のファイルを開いてないか? 開いたファイルにフィルタがかかってないか? 開こうとしているファイルは既に開いてないか? xlsかcsvか? って、色々チェックするの面倒じゃん。
553 名前:デフォルトの名無しさん (ワッチョイ db6d-MPbE) mailto:sage [2017/06/08(木) 22:16:37.58 ID:fJC45ZIB0.net] 作ればいいんじゃないの
554 名前:デフォルトの名無しさん (ワッチョイ 7d3d-OlK+) mailto:sage [2017/06/08(木) 22:40:42.97 ID:XdC3vCwF0.net] >>533 Function foo1(FilePath As String) As Workbook For Each x In Workbooks If x.FullName = FilePath Then Set foo1 = x: Exit For Next If foo1 Is Nothing Then Set foo1 = Workbooks.Open(FilePath) End Function Function foo2(WS As Workbook, SheetName As String) As Worksheet For Each x In WS.Worksheets If x.Name Like SheetName Then Set foo2 = x: Exit For Next If Not foo2 Is Nothing Then foo2.AutoFilterMode = False End Function こんなんだろ。大した手間でもないと思うんだけど。 俺はモジュール一個にワークブック、ワークシート、セルの各種チェック含めた操作関係まとめてたけど、 二十個くらいにしかならなかったぞ。
555 名前:デフォルトの名無しさん (ワッチョイ dd8b-Kuea) [2017/06/08(木) 23:01:17.07 ID:TyBSFeDZ0.net] >>535 まあそんなもんなら大した手間じゃないよな それじゃ全然ダメだけど禿
556 名前:デフォルトの名無しさん (ワッチョイ db6d-qkek) mailto:sage [2017/06/08(木) 23:08:59.28 ID:fJC45ZIB0.net] Function foo1(FilePath As String) As Workbook on error resume next この魔法の一行で全て解決
557 名前:デフォルトの名無しさん (ワッチョイ 7d3d-OlK+) mailto:sage [2017/06/08(木) 23:28:03.30 ID:XdC3vCwF0.net] On Errorだと原因が分からないからなぁ。 単純なマクロならそれでもいいんだけど。
558 名前:デフォルトの名無しさん (ワッチョイ 2311-OlK+) mailto:sage [2017/06/08(木) 23:37:56.75 ID:ZLqPeRaK0.net] >>535 > If x.FullName = FilePath Then Set foo1 = x: Exit For これ通るのか…知らなかった…
559 名前:デフォルトの名無しさん (ドコグロ MM13-UHXl) mailto:sage [2017/06/08(木) 23:41:02.10 ID:q8X0hO01M.net] application.runをaccessから呼んだんだけど、 activateしないと失敗してしまう。 あと、マクロを保持してるブックを開いてマクロを実行すると処理中はブックを触れないが、accessから呼ぶと触れてしまう。 おかげで処理に失敗するので、何とかならないだろうか。
560 名前:デフォルトの名無しさん (ワッチョイ 7d3d-OlK+) mailto:sage [2017/06/08(木) 23:47:27.35 ID:XdC3vCwF0.net] >>539 コロンが改行の代わりになるから、コロンで区切りさえすればだいたいのものは通るぞ。 >>540 ExcelからAccessを触るようにしよう。 AccessからExcel触るのは管理がくっそ面倒だから(バージョンによるかもしれないが) 修飾付きのエクセルファイル出力がしたいとかでない限りやめた方がいい。 あとはExcelで直接DBを開いてSQLで制御するという地獄の選択肢もあるぞ。
561 名前:デフォルトの名無しさん (ワッチョイ 0332-Ell8) mailto:sage [2017/06/09(金) 03:33:36.27 ID:Vt79/8Sl0.net] アクセル
562 名前:デフォルトの名無しさん (ワッチョイ 5b23-cb7n) mailto:sage [2017/06/09(金) 04:45:48.88 ID:e02rbmqe0.net] >>532 キーマクロもSendkeysもやめた方が良い。 Sendkeys等は宛先を指定しない。 VBA動作中でもアクティブウィンドウは操作で変更出来る。 IEのスクロールはページ表示後もDOMで出来る。 '1ページ高さ lngPH=objIE.Document.DocumentElement.ClientHeight 'サイト高さ lngBH=objIE.Document.Body.ScrollHeight '1ページスクロール objIE.DocumentParentWindow.ScrollTo 0, lngPH
563 名前:デフォルトの名無しさん (ドコグロ MM13-W6lL) mailto:sage [2017/06/09(金) 07:54:37.94 ID:SNIZYBKJM.net] >>542 なんかふと笑った
564 名前:デフォルトの名無しさん (ワッチョイ 9d73-2i+1) mailto:sage [2017/06/09(金) 11:39:02.72 ID:MW/jqskx0.net] excelで直接DBに接続してSQLの何が地獄なんだろう…
565 名前:デフォルトの名無しさん (アークセー Sx71-sCoW) mailto:sage [2017/06/09(金) 12:02:22.23 ID:KaOScHzEx.net] >>545 説明できるほうに100億ドル ただしジンバブエの
566 名前:デフォルトの名無しさん (ワッチョイ 7d3d-OlK+) mailto:sage [2017/06/09(金) 12:08:37.61 ID:6C6XVn6H0.net] >>545 Accessと文法が違う 使えない命令がある エラーが返ってこない データ型の指定が出来ない 過去スレとかで何度も出たけど、だいたいこの辺の理由で地獄
567 名前:デフォルトの名無しさん (ワキゲー MM13-S7v4) mailto:sage [2017/06/09(金) 12:17:15.07 ID:lNiKtgPwM.net] >>546 ジンバブエドルってもう回収済みだから割と価値高いよな
568 名前:デフォルトの名無しさん (ワッチョイ 7d3d-OlK+) mailto:sage [2017/06/09(金) 12:23:12.97 ID:6C6XVn6H0.net] 今の1ジンバブエドル=0.3円らしいから、100億ジンバブエドル=30億円かな
569 名前:デフォルトの名無しさん (ドコグロ MM13-UHXl) mailto:sage [2017/06/09(金) 12:48:37.15 ID:8EXeePojM.net] >>541 access起点で作ってるらもう駄目だー。
570 名前:デフォルトの名無しさん (ブーイモ MMa9-+CHm) [2017/06/09(金) 12:52:52.49 ID:jWLsfRM+M.net] 素人にVBAを教えるとき いきなりRange()とするんじゃなく Workbooks("うんたら")〜.RangeやCells と、ちゃんと上位層の指定を書くんよ! って最初から教えるべき? それとも慣れてから教えるべき?
571 名前:デフォルトの名無しさん (ワッチョイ 3546-MFns) mailto:sage [2017/06/09(金) 14:03:55.81 ID:DLo2rfbX0.net] >>551 >>466 のようなエラーがあるから Cells Rangeの前には必ず上位層を指定する癖を 付けさせた方がいいと俺は思う 手を抜いて省略するのは慣れてからでもいいんじゃね?
572 名前:デフォルトの名無しさん (JP 0H6b-m0Mh) mailto:sage [2017/06/09(金) 14:16:07.35 ID:ehLmIvolH.net] >>552 普通に、「シートモジュールから自分のシートを参照するときは不要、それ以外は必要」と教えれば?
573 名前:デフォルトの名無しさん (ワッチョイ 7d3d-OlK+) mailto:sage [2017/06/09(金) 14:20:33.43 ID:6C6XVn6H0.net] >>551 べったり張り付いてられるなら失敗してから教える方がいい。 PC教室みたいに一過性の教育なら省略しない書き方で覚えさせた方がいい。
574 名前:552 (ワッチョイ 3546-MFns) mailto:sage [2017/06/09(金) 14:43:26.16 ID:DLo2rfbX0.net] >>553 アンカミスなのか 俺宛てなのか分らが・・・ シートモジュールの場合 省略していいよじゃなくて 自分自身を示すMeを使って Me.Range(・・・・) と教えた方が良いと思うんだけど
575 名前:デフォルトの名無しさん (アウアウエー Sa93-qAom) mailto:sage [2017/06/09(金) 14:48:22.03 ID:LCUpZwW2a.net] >>533 fso使って自分で作りゃいいじゃん 難しくないでしょ
576 名前:デフォルトの名無しさん (アウアウエー Sa93-qAom) mailto:sage [2017/06/09(金) 14:50:28.52 ID:LCUpZwW2a.net] >>551 同時に教える 動かして動かせたらなんでか、というふうに
577 名前:デフォルトの名無しさん (JP 0H6b-m0Mh) mailto:sage [2017/06/09(金) 14:56:10.12 ID:ehLmIvolH.net] >>555 > Cells Rangeの前には必ず上位層を指定する癖を 付けさせた方がいいと俺は思う に対する俺の意見なんで、アンカーは間違ってないよ。 > Me.Range(・・・・) と教えた方が良いと思うんだけど これにも反対。 MSが言うように、実引数のときのみ使う方がわかりやすい。 https://msdn.microsoft.com/ja-jp/library/office/gg251792(v=office.15).aspx そうしないとMeだらけになる。