Excel VBA 質問スレ Part49at TECH
Excel VBA 質問スレ Part49 - 暇つぶし2ch582:デフォルトの名無しさん (ワッチョイ e711-MZAo)
17/07/26 21:36:24.28 +NZ2Dbuu0.net
>>571
できるできないの話じゃないんだって
あとオーバーライドはちょっと厳しくないか
どうやって実装する?

583:デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
17/07/26 21:54:31.59 kYPrva630.net
>>564
AddressOf あるし使おうと思えば使える

584:デフォルトの名無しさん (ワッチョイ 473d-pqVL)
17/07/26 22:02:04.56 19gyZHTT0.net
>>573
自身のメンバとして基底クラスを宣言して、基底クラスに自身を登録して、
基底クラスのメソッドを実行すると基底クラス側で自身の特定のメソッドが呼ばれるとかかな。

585:デフォルトの名無しさん (ワッチョイ df11-efHF)
17/07/26 22:05:43.16 gz+R3HSW0.net
>>569
さすがにそれはないわ...

586:デフォルトの名無しさん (ワッチョイ df11-efHF)
17/07/26 22:09:54.70 gz+R3HSW0.net
>>574
アドレス取るのはいいけどどうやって使うつもり?

587:デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
17/07/26 22:32:43.94 kYPrva630.net
>>577
ごめんVBAから直接には使えなかった

588:デフォルトの名無しさん (ワッチョイ bf23-FdGq)
17/07/26 23:08:50.27 +wB1yzpw0.net
>>511
officeも何もなくてもc#書けるけど。
コンパイラ初めからあるから。

589:デフォルトの名無しさん (ワッチョイ bf23-FdGq)
17/07/26 23:11:34.30 +wB1yzpw0.net
vbaでオブジェクト指向とか中級者がやることだな。
初心者よりタチ悪いこともある。

590:デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
17/07/26 23:58:17.75 kYPrva630.net
上級者はなにするんだ?

591:デフォルトの名無しさん (ワッチョイ db91-ntdb)
17/07/27 00:50:19.96 Gu8HEug70.net
>>576
なぜ?
で、どうするの?

592:デフォルトの名無しさん (ワッチョイ db91-ntdb)
17/07/27 01:05:44.74 Gu8HEug70.net
>>571
VBAと言う言語にクラスとかオブジェクト指向の概念が入っている
つまりオブジェクト指向の概念は言語にもつながる
と言う主張
一方でオブジェクト指向は設計にのみ関わる概念と言う主張もある
オブジェクト指向の概念を取り入れた言語でオブジェクト指向設計したものを実現するのと
オブジェクト指向の概念がない言語で実現するのでは
生産性とかに差が生じるだろう

593:デフォルトの名無しさん (ワッチョイ 2623-toSE)
17/07/27 01:36:25.07 Ddw23w1u0.net
>>581
上級者はvbaは大人しく手続き型的にやるよ。

オブジェクト指向しようとして、これできないかなーあれできないかなーとか悩むだけ無駄。

594:デフォルトの名無しさん (ワッチョイ db91-ntdb)
17/07/27 01:54:44.40 Gu8HEug70.net
>>584
各シートの統計情報を取りたい時はどうする?
例えば、セルを更新した回数、最大値、最小値、平均値
を各シート毎に知りたい時

後から分散とか標準偏差とかも知りたくなったらどうする?

595:l (ワッチョイ 0fcf-GNib)
17/07/27 02:24:19.55 lqCZB24a0.net
Youtuberヒカルが月収を明らかに!!おはよう朝日です出演
URLリンク(www.youtube.com)
第1回案件王ランキング!YouTuberで1番稼いでるのは誰だ!
URLリンク(www.youtube.com)
ユーチューバーの儲けのカラクリを徹底検証!
URLリンク(www.youtube.com)
【給料公開】チャンネル登録者4万人突破記念!YouTuberの月収公開!
URLリンク(www.youtube.com)
誰も言わないなら俺がYouTuberのギャラ相場を教えます
URLリンク(www.youtube.com)
YouTuberになりたいのは馬鹿じゃない!YouTuberになる方法
URLリンク(www.youtube.com)

最高月収5000万円だとさ。年収じゃなくて「月収」な
おまえらもyoutubeに動画投稿したほうがいい
顔出したくないならラファエルみたいに仮面かぶればいい
手っ取り早く視聴数稼ぐには有名ユーチューバーへの物申す系動画がオススメ

596:デフォルトの名無しさん (ワッチョイ 2623-toSE)
17/07/27 04:56:34.97 Ddw23w1u0.net
>>585
クラスやらユーザ定義型を作るね。

597:デフォルトの名無しさん (オッペケ Srb3-ZCwv)
17/07/27 05:41:33.30 8/6stQ5Xr.net
>>584
つ 上級者の定義

598:デフォルトの名無しさん (ワッチョイ db91-ntdb)
17/07/27 06:25:09.17 Gu8HEug70.net
>>587
クラスってオブジェクト指向じゃないの?

上級者的に手続き型でやらないの?

599:デフォルトの名無しさん (ドコグロ MM8a-gqKx)
17/07/27 06:47:24.74 P1js1uXhM.net
>>582
> なぜ?

> 逆にスーパークラスに相当する関数に
> スイッチみたいな引数を付けて
> サブクラスに相当する関数に分岐するとか
サブクラスを増やす度にスーパークラスに手を入れるつもりなの?
真顔で言ってるなら単なるアホだろ w

> で、どうするの?
無理じゃね?
って書いてあるんだが...

600:デフォルトの名無しさん (ドコグロ MM8a-gqKx)
17/07/27 07:00:09.74 P1js1uXhM.net
>>585
> 各シートの統計情報を取りたい時はどうする?
要件次第
> 例えば、セルを更新した回数、最大値、最小値、平均値
> を各シート毎に知りたい時
更新回数以外は全セルなめて計算することもあるしイベント毎に合計、最大、最小を更新していくのもあるだろうな
> 後から分散とか標準偏差とかも知りたくなったらどうする?
そういう機能を実装するだけ
イベント以外はオブジェクト指向関係ないと思うぞ

601:デフォルトの名無しさん (ワッチョイ db91-ntdb)
17/07/27 07:12:45.05 Gu8HEug70.net
>>590
でいちいち同じ処理をコピペするの?

602:デフォルトの名無しさん (ワッチョイ db91-ntdb)
17/07/27 07:13:37.01 Gu8HEug70.net
>>591
生産性が違うんじゃね?

603:デフォルトの名無しさん (ワッチョイ db91-ntdb)
17/07/27 07:15:00.43 Gu8HEug70.net
>>591
全セルなめるとか性能要件を満たせなくなる可能性が高いだろ

604:デフォルトの名無しさん (ワッチョイ 666d-V1Wy)
17/07/27 07:17:39.18 mlaDFoVL0.net
>>594
それはその時に考えたほうが良いと思う
大体
> 例えば、セルを更新した回数、最大値、最小値、平均値
> を各シート毎に知りたい時
こんな状態がまずないw

605:デフォルトの名無しさん (ワッチョイ db91-ntdb)
17/07/27 07:17:56.55 Gu8HEug70.net
>>590
サブクラスからスーパークラスを呼ぶ方は?

606:デフォルトの名無しさん (ドコグロ MM8a-gqKx)
17/07/27 07:37:59.47 P1js1uXhM.net
>>592
どこからコピペが出てきたのか意味不明

>>593-594
だから「要件次第」って書いてあるんだが
最初に一度はなめないといけないから一回しか呼ばれないと言う要件ならその方が効率的だし

>>596
それになんの意味があるんだ?
マジでオブジェクト指向の基礎からやり直した方がいいレベルだぞ

607:デフォルトの名無しさん (ワッチョイ 2623-toSE)
17/07/27 07:40:20.87 Ddw23w1u0.net
>>589
そうだよ。
データ構造だけ定義するんだよ。

608:デフォルトの名無しさん (アウアウエー Sae2-kGGk)
17/07/27 08:16:42.60 LMuXn2N9a.net
>>575
結局それだと要らんもんまで呼び出したり不便なんだよ
やれんことはないけど不便
オーバーロードもやれんことはないけど実装がめんどくさい
使いたい場面は結構出てくると思うけどね
インターフェースもなんかスマートじゃないし

609:デフォルトの名無しさん (ワッチョイ 1f73-cdfR)
17/07/27 08:50:43.35 f8l+azOG0.net
お前らスレタイ読んで他所へ行け

610:デフォルトの名無しさん (ワッチョイ db5a-PZKh)
17/07/27 09:44:44.74 cQuO+1bD0.net
【IT】10代のネット環境「スマホのみ」が7割、「PCのみ」は25%にとどまる [無断転載禁止]©2ch.net
スレリンク(bizplus板)

611:デフォルトの名無しさん (スップ Sd8a-y7IM)
17/07/27 09:49:36.92 yI2DKD3yd.net
>>600
クラスモジュールがある以上、このスレの話題として守備範囲内

612:デフォルトの名無しさん (JP 0H76-ZO1u)
17/07/27 10:22:34.31 ZNB0F0Q0H.net
>>554
> ライター、チャッカマン、バーナーが他所であるのにマッチでも火をおこせるしこれはこれで良いもんだぞって言ってるようなもん
マッチだけでも十分OOできる
それにWithEventsもあるしね
URLリンク(github.com) のソース読んだか?以外といろいろできるぞ

613:デフォルトの名無しさん (スップ Sd8a-y7IM)
17/07/27 10:40:17.72 yI2DKD3yd.net
>>603
これはあなたが作者さんなの?

興味深いが手っ取り早く知りたい
VBEX /testから読めばいいのかな?

614:デフォルトの名無しさん (JP 0H76-ZO1u)
17/07/27 10:55:11.44 ZNB0F0Q0H.net
>>604
> これはあなたが作者さんなの?
いや、俺じゃないよ
コードサンプルとして読んでみたらってこと

あとこれとか
URLリンク(github.com)

OOの知識があって、いわゆる「インターフェース継承」を視野に入れれば、かなりのことができる
さらに、WithEventsを使えば双方向データバインディングなんかも実装できる

615:デフォルトの名無しさん (ドコグロ MM22-toSE)
17/07/27 11:24:49.36 698/A489M.net
インタフェースなんかvbaで使うなボケ

616:デフォルトの名無しさん (スップ Sd8a-y7IM)
17/07/27 11:56:09.26 yI2DKD3yd.net
>>605
うーん、、、
日本語のないかな?(ボソッ

617:デフォルトの名無しさん (アークセー Sxb3-PRKf)
17/07/27 12:01:06.07 SAqwCo2Mx.net
>>606
ほーわーいー

618:デフォルトの名無しさん (スップ Sd8a-y7IM)
17/07/27 12:17:23.37 yI2DKD3yd.net
チンリン山脈

619:デフォルトの名無しさん (アウアウエー Sae2-kGGk)
17/07/27 13:24:05.39 LMuXn2N9a.net
>>603
いやだからさ
俺の言いたいこと伝わらないし理解する気無いよね
こっちはマッチしか無いから仕方なくマッチ使ってんの
不満だからって努力を放棄してるわけじゃないからな?
ただどう考えても手間だろ
そんだけの話

620:デフォルトの名無しさん (JP 0H76-ZO1u)
17/07/27 14:02:53.37 ZNB0F0Q0H.net
>>610
君も俺の言いたいこと1ミリも理解しようとしてないから、お互い様だね

621:デフォルトの名無しさん (ササクッテロル Spb3-ntdb)
17/07/27 14:43:39.94 DPiXNUUHp.net
>>597
意味がわからない?
学びなおした方が良いぞ

622:デフォルトの名無しさん (ドコグロ MM8a-gqKx)
17/07/27 16:09:11.81 P1js1uXhM.net
>>612
> サブクラスに相当する関数から
> スーパークラスに相当する関数を呼べばいいんじゃね?
そこまで言うならなんの意味があるのか説明してみな

623:デフォルトの名無しさん (ワッチョイ ea06-HJpE)
17/07/27 16:44:21.21 7xCZa4oD0.net
だからさぁお前らは雑談したいだけだろ?スレ立ててそこでやれっつーの
クソうぜぇ

624:デフォルトの名無しさん (アウアウエー Sae2-kGGk)
17/07/27 16:44:34.77 uf/My/5wa.net
>>611
使い方によってはvbaだってoopできるよ!って言いたいんでしょ?

625:デフォルトの名無しさん (JP 0H76-ZO1u)
17/07/27 17:00:44.58 ZNB0F0Q0H.net
>>615
さいしょから言ってるでしょ
> オブジェクト指向にドップリしてたら使いにくいことこの上ないと思う
なことないよ

626:デフォルトの名無しさん (スップ Sd8a-y7IM)
17/07/27 17:11:23.71 yI2DKD3yd.net
使いたいときに便利な機能を自由につまみ食いできるのがいいライブラリだと思っているんだが、
オブジェクト指向のライブラリって少しおせっかいというか世界観を押し付けてくるところがある。
会員にならないと利用できないサービスみたいな感じ。
自分で作ったものを自分で利用する分には当然問題ないんだけどね。
VBAの言語機能の弱さを考えると、クラス間の関連のある体系的な使い方を実現するのは厳しいだろう。

627:デフォルトの名無しさん (アウアウエー Sae2-kGGk)
17/07/27 17:44:10.44 uf/My/5wa.net
>>616
俺は工夫を強いられてる時点でうんちだと言�


628:チている 以上です



629:デフォルトの名無しさん (JP 0H76-ZO1u)
17/07/27 17:59:09.25 ZNB0F0Q0H.net
経験不足だね
言語10個くらいマスターしてこい

630:デフォルトの名無しさん (アウーイモ MM9f-k5Qo)
17/07/27 19:42:01.40 xCwJ4jCdM.net
某サイトを参考にメールを一括作成するVBAを書いています。
createitemfromtemplateの行で「実行時エラー13 型が一致しません」というエラーが出ます。
どうやらcreateitemfromtemplateがうまく機能していないようなのですが、解決方法を教えていただけませんでしょうか。
よろしくお願いいたします。
※「Microsoft Outlook 14.0 Object Library」の参照設定はONになっています。
-----------------------------------
Sub main()

Dim OL As New Outlook.Application
Dim M As MailItem

Dim MaxRow: MaxRow = Range("A1").End(xlDown).Row

For i = 2 To MaxRow
Set M = OL.createitemfromtemplate("D:\本文.msg")

M.To = Cells(i, 列.件名).Value
M.Subject = Cells(i, 列.件名).Value
M.Attachments.Add "D:\" & Cells(i, 列.添付ファイル).Value
M.HTMLBody = Replace(M.HTMLBody, "●●", Cells(i, 列.氏名).Value)
M.SaveAs "D:\" & Cells(i, 列.企業名).Value & "_" & Cells(i, 列.氏名).Value & ".msg"
Next

End Sub
-----------------------------------

631:デフォルトの名無しさん (ワッチョイ 6623-V1Wy)
17/07/27 20:32:44.20 60P4ZjAM0.net
>>620
msdnのリファレンスをみると
Outlookテンプレート(.oft)を指定しろって書いてあるので
怒られているとおり、型がちがうのでしょう。

CreateItemメソッドを使えばいいんじゃないでしょうか。

632:デフォルトの名無しさん (ワッチョイ 0fe4-Tef8)
17/07/27 21:59:25.00 aAe8+IMH0.net
オブジェクト指向がどうこうって語りたいなら

オブジェクト指向
って言葉と
オブジェクト指向言語
って言葉をちゃんと区別して発言して下さい

633:620 (アウーイモ MM9f-k5Qo)
17/07/27 22:07:28.99 xCwJ4jCdM.net
>>621
返信ありがとうございます!!
すみません、CreateItemでも変わらずエラーでした・・。
ちなみに下記のように.oftを指定しても同じでした。
これは本当に不思議です・・・。

---------------------------------------
Sub test03()

Dim OL As New Outlook.Application
Dim M As MailItem
Set M = OL.CreateItemFromTemplate("D:\本文.oft")

M.To = "aaaa@bbb.co.jp"
M.SaveAs "D:\test03.msg"

End Sub
---------------------------------------

634:デフォルトの名無しさん (ワッチョイ 6aaa-V1Wy)
17/07/27 22:19:54.50 eHKEweRs0.net
関西のお笑いと関西のお笑い芸人も区別して語るべきなのか?

635:デフォルトの名無しさん (アークセー Sxb3-PRKf)
17/07/27 22:40:28.48 SAqwCo2Mx.net
>>624
そうよ

636:デフォルトの名無しさん (ワッチョイ ea6f-ZO1u)
17/07/27 22:46:54.67 e65zqkX+0.net
俺予想だと、2023年くらいに.NETと統合されるので、大丈夫じゃないの。

637:デフォルトの名無しさん (ワッチョイ 6623-V1Wy)
17/07/27 23:04:48.75 60P4ZjAM0.net
>>623
Sub test()

Dim ol As New Outlook.Application
Dim mi As MailItem
Set mi = ol.CreateItem(olMailItem)
mi.Display

End Sub

この最小構成でメール編集画面がでるかお試しを。
出なかったら参照設定が変なのかも。
Excelのバージョンが変わると勝手に参照設定のバージョンも
変わるという罠に引っかかったことがあるので。
実行時バインディングでやってみると言う手もあり。

638:620 (アウーイモ MM9f-6wLz)
17/07/27 23:18:55.37 xCwJ4jCdM.net
>>627
最小構成でやってみると、やはり同じエラーでした!
これは、参照ができていないのですか??

639:デフォルトの名無しさん (オッペケ Srb3-ZCwv)
17/07/27 23:25:30.12 8/6stQ5Xr.net
'// 1行目の項目名が、A列から順に
'//[アドレス][件名][添付ファイルパス][本文]
'// のとき、

Dim dataSet
Dim lastRow As Long
Dim i As Long

lastRow = Cells(Rows.Count, 1).End(xlUp).Row
dataSet = Range(Cells(2, 1), Cells(lastRow, 4)).Value

With CreateObject("Outlook.Application")
  .GetNamespace("MAPI").GetDefaultFolder(16).Display
  For i = 1 To lastRow - 1
    With .CreateItem(olMailItem)
      .To = dataSet(i, 1)
      .Subject = dataSet(i, 2)
      .Attachments.Add dataSet(i, 3)
      .Body = dataSet(i, 4)
      .Save
    End With
  Next i
End With

640:デフォルトの名無しさん (ワッチョイ 6623-V1Wy)
17/07/27 23:27:06.45 60P4ZjAM0.net
>>628
よく考えたら、参照ならその前にエラーを吐きそう。
ためしに

Sub test()

Dim ol As Object
Set ol = CreateObject("Outlook.Application")
Dim mi As Object
Set mi = ol.CreateItem(olMailItem)
mi.Display

End Sub
これをOption Explicitを無効にして実行したら
どうなるでしょうか?

だめならOS再起動してみる。
どうにも理解不能なエラーがこれで直ったことがあるw。

641:デフォルトの名無しさん (ワッチョイ 0fe4-Tef8)
17/07/27 23:56:32.00 aAe8+IMH0.net
>>628
まず、そのユーザーでOutlookはちゃんと動いてメールの送受信できるのか?

642:620 (アウーイモ MM9f-6wLz)
17/07/28 00:24:24.58 EJW5hZGgM.net
>>630
試しましたが同じエラーでした。

>>631
問題なくできています。


みなさん、ご協力ありがとうございます。ご迷惑おかけしてすみません。
今気づいたのですが参照先が14.0でした。最新は15.0なんですよね?これが原因でしょうか?

643:620 (アウアウアー Sab6-6wLz)
17/07/28 04:23:09.57 Kx1QSHwna.net
皆様ありがとうございました! 
理由はわかりませんが突然できるようになりました!
本当にご迷惑おかけしました!

644:デフォルトの名無しさん (オッペケ Srb3-ZCwv)
17/07/28 04:32:44.73 ccATQH/dr.net
>>632
ごめん。コード間違ってた。orz

参照設定をoffにし、↓のコードで試してみて。

'// olMailItemを直値(0)に変えた
Dim dataSet
Dim lastRow As Long
Dim i As Long

lastRow = Cells(Rows.Count, 1).End(xlUp).Row
dataSet = Range(Cells(2, 1), Cells(lastRow, 4)).Value

With CreateObject("Outlook.Application")
  .GetNamespace("MAPI").GetDefaultFolder(16).Display
  For i = 1 To lastRow - 1
    With .CreateItem(0)
      .To = dataSet(i, 1)
      .Subject = dataSet(i, 2)
      .Attachments.Add dataSet(i, 3)
      .Body = dataSet(i, 4)
      .Save
    End With
  Next i
End With

645:デフォルトの名無しさん (オッペケ Srb3-ZCwv)
17/07/28 04:34:16.17 ccATQH/dr.net
一歩遅かったか…orz

646:620 (アウアウアー Sab6-6wLz)
17/07/28 06:49:10.86 Kx1QSHwna.net
>>635
おはようございます!
ありがとうございます!

647:デフォルトの名無しさん (ワッチョイ db11-AITk)
17/07/28 23:02:57.85 +oxMyCi10.net
win10
excel2016で
MSXML2.XMLHTTPを使って
responseTextでgoogle検索結果のページを取得しようとすると、
responseTextで返ってきたものが、今までwin7 excel2007などで返ってきたものと全然違うんですが、win7の時のように受け取る方法ってありませんか?

win7の時はhtmlそのものが返ってきてましたがwin10では最初の方が判読困難です。

やろうとしていることは、vbaでgoogle画像検索の結果の画像をセルに表示しようと思ってます。

648:デフォルトの名無しさん (ワッチョイ 6aaa-V1Wy)
17/07/30 10:16:32.82 WZc9I6Vq0.net
そういえば responseBody しか使ったことないなあ
(adTypeBinary な ADODB オブジェクトに Write するために)

649:デフォルトの名無しさん (ワッチョイ db11-AITk)
17/07/30 12:41:33.40 ND/Yhbfk0.net
すみません、いろいろ試してたんですが、google以外ではちゃんと同じようなものを受け取れてました。
googleでは環境によって返すものが違うのかもしれません。
その先はスレ違いになるので自分でいろいろやってみます。ありがとうございました。

650:デフォルトの名無しさん (ワッチョイ 666d-fl5W)
17/07/30 15:24:50.24 LIjBkUDz0.net
api以外でgoogleの検索結果を取得しないほうがいい
すぐにアクセス禁止になる

651:デフォルトの名無しさん
17/08/02 00:57:39.97 O3oN8G+MM.net
Function Name2Adr(str As String)
Dim Cts As Folder, Ct As ContactItem
Set Cts = CreateObject("Outlook.Application").GetNamespace("MAPI").GetDefaultFolder(olFolderContacts)
Set Ct = Cts.Items.Find("[Email1DisplayName] = '" & str & "'")
If Ct Is Nothing Then Name2Adr = "不明" Else Name2Adr = Ct.Email1Address
Set Cts = Nothing: Set Ct = Nothing
End Function
↑ローカルのアドレス帳から表示名を検索しメアドを返す関数です。これはうまくいくのですが、
↓下のグローバルアドレス帳を検索するものがうまくいきません。エラーメッセージは「オブジェクト


652:はこのプロパティまたはメソッドをサポートしていません」です。 どなたか解決法をご教示ください。よろしくお願いします。 Function gName2Adr(str As String) Dim olApplication As Outlook.Application Dim olNameSpace As Outlook.Namespace Dim olAddressLists As Outlook.AddressLists Dim olAddressList As Outlook.AddressList Dim olAddressEntries As Outlook.AddressEntries Set olApplication = New Outlook.Application Set olNameSpace = olApplication.Session Set olAddressLists = olNameSpace.AddressLists Set olAddressList = olAddressLists.Item(2) Set olAddressEntries = olAddressList.AddressEntries Dim olAddressEntry As Outlook.AddressEntry Set olAddressEntry = olAddressEntries.Items.Find("[Email1DisplayName] = '" & str & "'") '←この行でエラー If olAddressEntry Is Nothing Then gName2Adr = "不明" Else gName2Adr = olAddressEntry.Email1Address End Function



653:デフォルトの名無しさん
17/08/02 02:57:39.31 9fnjiac4a.net
>>641
名前長いな

654:デフォルトの名無しさん
17/08/02 06:22:21.40 Yub86NHXr.net
少々長くてもわかりやすい名前をつけるのが基本だからね。
ハンガリアンよりは全然いい。

655:デフォルトの名無しさん
17/08/02 06:31:28.66 SLRN4nNP0.net
少々長くても分かりやすい名前を付ける、それがハンガリアン記法

想像してるのはたぶんシステムハンガリアン記法

656:デフォルトの名無しさん
17/08/02 07:20:47.27 Mrcj6vwlM.net
変数はAddressなのにメソッド名はAdrで統一してないのは理由あるの?

657:デフォルトの名無しさん
17/08/02 07:40:08.64 ed9o3kBwx.net
変数名長いなぁ
olAppとかAdrListとかにすれば良いやん

658:デフォルトの名無しさん
17/08/02 07:40:35.97 Yub86NHXr.net
>>644
単に「ハンガリアン」と言った場合は、システムハンガリアンの意味で用いられていることが多い。

ということでどうかひとつ。

659:デフォルトの名無しさん
17/08/02 07:44:09.62 Yub86NHXr.net
>>646
むしろ関数名を

GetNameToAdddress

にしたほうがいいかも。

660:デフォルトの名無しさん
17/08/02 07:44:43.49 boOv7Sns0.net
>>641
Dim Cts As Folder, Ct As ContactItem

ユーザー定義型が定義されてません
エラーが出た

661:デフォルトの名無しさん
17/08/02 08:11:17.19 i5+f8wczM.net
>>649
参照設定してないだけじゃね?

662:デフォルトの名無しさん
17/08/02 08:56:23.68 boOv7Sns0.net
>>650
まぁそうだけど、どれ参照するのか探すのめんどい
開発用に、コンポーネント参照の全選択ほしいな。それともあるんかな?

663:デフォルトの名無しさん
17/08/02 09:10:48.85 Y/LidHA/0.net
>>650
649は店に来たお客さんのつもりのようだから、まともに相手する必要はないよ

664:デフォルトの名無しさん
17/08/02 11:50:02.54 a22879YUM.net
単なる自己満足なんだからそこまで突っ込むなよ
どうせ永遠に平行線なんだろ?

665:デフォルトの名無しさん
17/08/02 12:08:29.03 pZ2w6jYsM.net
>>648
メソッドの頭文字は小文字にしたいな
あとd多いのはなんか意図あるの?

666:デフォルトの名無しさん
17/08/02 12:26:23.95 Yub86NHXr.net
>>654
ごめん、dはタイプミスだ。

メソッドの頭文字を小文字にするのは何流?
VBA流では大文字だよね。

667:デフォルトの名無しさん
17/08/02 12:33:57.68 x+1N4OhAM.net
>>655
言語関係なくただのキャメルケースだよ

668:641
17/08/02 13:14:55.44 1uis+HfsM.net
みなさん、ご迷惑おかけしてすみません。
outlook vbaのスレに書くべき質問だったでしょうか、、

>>649
すみません、outlookのライブラリです。
よろしくお願いします。

669:デフォルトの名無しさん
17/08/02 15:50:17.32 Yub86NHXr.net
>>656
いや、だからメソッドをキャメルケースにするのは何流なのかなと。

670:デフォルトの名無しさん
17/08/02 16:45:06.13 pmz5Ebvba.net
>>658
javascriptはキャメルだと思う

671:641
17/08/02 16:56:06.29 uQ5PKG3iM.net
みなさん、ご迷惑おかけしてすみません。
outlook vbaのスレに書くべき質問だったでしょうか、、

>>649
すみません、outlookのライブラリです。
よろしくお願いします。

672:デフォルトの名無しさん
17/08/02 18:07:23.96 Yub86NHXr.net
>>659
IDの最後がvbaだ。カコイイ

なるほど、メソッドキャメルはJS流だったのね。サンクス

673:デフォルトの名無しさん
17/08/02 18:28:23.95 i5+f8wczM.net
>>660
Outlook VBA スレないからまあここでもいいと思うが仕事中に軽くググった範疇だといい方法が見つからん
> Set olAddressEntry = olAddressEntries.Items.Find("[Email1DisplayName] = '" & str & "'") '←この行でエラー
Items.Find( ) は Folder オブジェクトしか持ってないからここでエラーになるのは当然
グローバルアドレス帳(Global Address List)は GetGlobalAddressList( ) で取得できるし内容も入っているんだが取得したリストの GetContactsFolder( ) を呼び出しても Nothing しか返ってこない
何か設定が要るのか根本的に頓珍漢なのかさっぱりわからん

674:デフォルトの名無しさん
17/08/02 19:58:09.08 Yub86NHXr.net
ここでも聞いてみれば?

つ【VBAなんでも質問スレ Part2】
スレリンク(tech板)

675:620
17/08/03 06:23:52.11 y8hiM9O7a.net
>>662
ありがとうございます!勉強になります。

> グローバルアドレス帳(Global Address List)は GetGlobalAddressList( ) で取得できるし内容も入っているんだが

↑その内容というのは、debug.printで見ることはできますでしょうか??

676:デフォルトの名無しさん
17/08/03 07:51:33.57 T58VKPgl0.net
>>664
foo = bar.GetGlobalAddressList( )
をどこかに入れてfooをウォッチ式で見る

677:デフォルトの名無しさん
17/08/03 08:16:18.57 8PSWLe0hM.net
>>664
Set GlobalAddressList = Namespace.GlobalAddressList( )
Debug.Print GlobalAddressList.AddressEntries.Item(1).Name
とかすれば見れるよ
全件エクスポートするサンプルとかあるので見てみて
URLリンク(www.slipstick.com)

678:デフォルトの名無しさん
17/08/04 13:47:28.51 2SBD/wKoM.net
バージョンが上がって日付時刻型の除算ができなくなりました。バリアント型にしても空になります。
対応方法はありませんでしょうか?
また、こういう仕様変更はどこで確認できますか?

679:デフォルトの名無しさん
17/08/04 19:09:28.11 HbiPV4wFd.net
>>667
Dateの除算てなんのためにやるんだっけ?
CLngとかしてからじゃダメなの?

680:デフォルトの名無しさん
17/08/04 19:49:21.85 EaU+sIDF0.net
日付じゃなくて時刻(時間)で除算したいのでは?
1950/1/1を2で割って1925/1/1…なんてことはしないだろう

>>667
office 更新プログラム等で検索
URLリンク(support.office.com)

681:デフォルトの名無しさん
17/08/04 20:11:22.22 CfFJ59fY0.net
時刻ですね

682:デフォルトの名無しさん
17/08/05 08:53:42.25 3n3qQbM6r.net
>>667
エラーの出たコードを書いてみて。
あとバージョンも。2016?

683:デフォルトの名無しさん
17/08/05 09:48:36.05 7J5Re5fS0.net
2010でも時刻の割り算できたけど?

684:デフォルトの名無しさん
17/08/05 10:09:48.61 3n3qQbM6r.net
じゃあ、この話題はこれで終わりだな。

685:デフォルトの名無しさん
17/08/05 11:28:42.39 J2w+rLAY0.net
エラーコードは51
データ型が日付時刻の除算はエラーでる

686:デフォルトの名無しさん
17/08/05 12:58:50.71 kXEyZiX90.net
Sub foo()
bar = Date / 2
Debug.Print bar
End Sub

2010、win7だけどエラーでない

687:デフォルトの名無しさん
17/08/05 13:00:51.75 J2w+rLAY0.net
>>675
時刻同士で割って見て

688:デフォルトの名無しさん
17/08/05 13:07:29.37 j7okUzoP0.net
ダブルにキャストしてから計算したら
ずれるのかな?

689:デフォルトの名無しさん
17/08/05 13:08:47.84 kXEyZiX90.net
>>676
Sub foo()
bar = Date / Date
Debug.Print bar
End Sub

普通に1になったけど

690:デフォルトの名無しさん
17/08/05 13:35:11.02 1ncAb1Zc0.net
URLリンク(www.youtube.com)

691:デフォルトの名無しさん
17/08/05 16:53:51.52 3n3qQbM6r.net
質問者からのエラーコードの提示がないので無駄な回答だな。

692:デフォルトの名無しさん
17/08/05 18:06:14.68 fC/MwjWZ0.net
時刻を時刻で割る意義は? どんな分野で必要と成るんだ? それは知りたい

693:デフォルトの名無しさん
17/08/05 18:54:05.96 UH683s5QM.net
バージョンが上がって…
とか言いながらバージョンを書かない馬鹿
指摘されても書かないという

694:デフォルトの名無しさん
17/08/05 18:58:41.09 NpEI7ikB0.net
>>681
8時間の就業時間の間に25分掛かる作業を何回できるか見積るとか

695:デフォルトの名無しさん
17/08/05 19:00:17.07 90gBDUFU0.net
しょうもない質問はほっとけばいいんじゃ?
それとも答えたくてウズウズしてる感じ?

696:デフォルトの名無しさん
17/08/05 19:45:20.37 ze59kfDf0.net
>>683
無理くり理由をこじつけてもその程度だよな…ほんと何がしたいんだろうな

697:デフォルトの名無しさん
17/08/05 20:31:20.41 2UigV3EYM.net
質問するのにバージョンも書かない
ID変わってるのに名無しのまま
環境書けと言ってるのに無視
こんな処理する理由は?と聞かれても無視


こんな人間の生産物を現場で使う恐怖

698:デフォルトの名無しさん
17/08/05 20:47:12.34 fC/MwjWZ0.net
それは時刻で無くて時間だろ と

699:デフォルトの名無しさん
17/08/05 23:20:40.34 3n3qQbM6r.net
>>686
何のためにここで質問したのかわからないよね。

つか、俺たちが釣られただけ?

700:デフォルトの名無しさん
17/08/05 23:56:01.89 dqSa99my0.net
質問者が軌道修正のために必要な情報を提供しないってのはここではザラにあることだろ。
そんなのによく付き合ってられんなー

701:デフォルトの名無しさん
17/08/06 00:12:38.56 7dbJmn2Z0.net
質問室じゃねえんだよ

702:デフォルトの名無しさん
17/08/06 12:22:25.32 hXGNAkd3r.net
また教えたがりの無能が暴れとるのかw

703:デフォルトの名無しさん
17/08/06 16:09:44.69 wM27hiyIa.net
暴れているのはただの煽り

704:デフォルトの名無しさん
17/08/07 16:41:33.18 /LwpuoG3M.net
>>678
dim a as date
dim b as date
dim test as date

a = time
b = time
test = a / b

でエラー出た

705:デフォルトの名無しさん
17/08/07 16:59:56.15 PHW4jpUx0.net
>>693
地域オプションで先頭が数字以外になるような書式だったとか?

706:デフォルトの名無しさん
17/08/07 19:35:32.88 9LTblBy60.net
>>693
環境書けよ
なんでエラー出たとか言うやつは環境書かないの
VBAの日付型は原則数値として扱えるはずので
日付型である事が原因でエラーが出るとは考えにくいけどなぁ
ちなみにエラー51のヘルプ(2007)には
>このエラーが Error ステートメントまたは Raise メソッドで生成されたものでなければ、Microsoft 製品テクニカル サポートに連絡して、メッセージが表示されたときの状況を知らせてください
ってあるから、ホントにエラー51出たならEXCELのバグの可能性もないではないな

707:デフォルトの名無しさん
17/08/07 20:09:27.70 PGc1T+jA0.net
excel2010 win7
エラーが起こるのは除算の分母側がdateだった時
longにキャストするか、variantで宣言していれば問題ない(もちろん宣言してない場合も問題ない)
バグくさい挙動だなぁ
Sub foo2()
Dim a As Time
Dim b As Time
Dim test As Date
a = Time
b = Time
test_long = (a * 1) / (b * 1) 'ok
test = a / (b * 1) 'ok
test = 1 / b 'error
test = (a * 1) / b 'error
test = a / b 'error
End Sub
Sub foo()
Dim a As Variant
Dim b As Variant
Dim test As Date
a = Time
b = Time
test = a / b 'ok
End Sub

708:デフォルトの名無しさん
17/08/07 20:36:42.78 5JtEoMJq0.net
Cdbl()で分母をDoubleにキャストすればいいだけじゃね?

709:デフォルトの名無しさん
17/08/07 20:39:22.17 PGc1T+jA0.net
>>697
まぁ解決法としてはそれでも何でもいいし、そもそもdateで除算って事をやらないんだけど
根本的な原因が分からないと、変なとこで悪影響受けそう

710:デフォルトの名無しさん
17/08/07 20:54:07.86 5JtEoMJq0.net
Time って
DateTime.Time プロパティのことだよな
Property Time As Variant
だからもともとVariant型
dim a As Time がエラーになるんだが

711:デフォルトの名無しさん
17/08/07 21:05:47.61 5JtEoMJq0.net
Date型はVBAのデータ型で"21:02:32"みたいな文字列なんじゃね?
だから計算するとエラーになる
分子にDate型を持ってきたときはDoubleに自動的にキャストされてると予想

712:デフォルトの名無しさん
17/08/07 21:13:12.34 PGc1T+jA0.net
>>699
ごめんなさい訂正前の送ってしまいました
定義部分は以下に変えてください
Sub foo2()
Dim a As date
Dim b As date

713:デフォルトの名無しさん
17/08/07 23:25:10.55 kmFs6vPH0.net
>>695
2007じゃエラーでないよ

714:デフォルトの名無しさん
17/08/07 23:33:20.74 elxVZ6u90.net
データベースのDATETIME型の値がそのままVBAのDate型変数にマップできれば楽なのに、
1900年以前だとうまくいかないのが残念だ。

715:デフォルトの名無しさん
17/08/07 23:39:54.26 5JtEoMJq0.net
>>702
2010とかだとエラーになる
分母にDate型を持ってくるときは
明示的にCdblでキャストすればエラーにならなくできる
MS側にバグレポートしたところで修正するかどうかはMS側次第
仕様変更したと言うかもしれない

716:デフォルトの名無しさん
17/08/07 23:59:58.12 HViBOnBI0.net
そろそろ日付時刻での除算の意味を教えて

717:デフォルトの名無しさん
17/08/08 00:39:23.26 sJaKEDtc0.net
>>705
>>683
全くない需要ってわけでもないと思う

718:デフォルトの名無しさん
17/08/08 00:57:18.12 ZuuTozCK0.net
キャストしてできるんならなんの問題もないだろう
キャストできない理由があるんじゃないのか?
まさか発想になかったわけじゃないだろうし

719:デフォルトの名無しさん
17/08/08 05:17:42.76 ttZKdV6P0.net
つーか質問者本人どこいったんじゃ

720:デフォルトの名無しさん
17/08/08 07:26:59.16 qEy0EStIr.net
>>693
つか、dateをdateで割った答えがdateっておかしくね?
たとえば、60分を15分で割ったら答えは「4分」ではないよね。
なので、
Dim test as Long
とすべき。

721:デフォルトの名無しさん
17/08/08 07:52:46.37 4vV+Ffiu0.net
>>709
そこはエラーとは関係ない
debug.print a/b
でもエラーになる
意味的に間違いでも形式的文法的には正しい

722:デフォルトの名無しさん
17/08/08 07:57:39.53 sJaKEDtc0.net
これエラーにならん
Debug.Print 1 / Time
これはエラー
foo = time
Debug.Print 1 / foo
意味わかんねぇmsに聞くか

723:デフォルトの名無しさん
17/08/08 08:15:13.81 qEy0EStIr.net
>>711
型が関係してるとしか思えないんだけど…

724:デフォルトの名無しさん
17/08/08 08:17:59.56 7r69+AsTM.net
>>706
>>683は 時間÷時間 の話で 時刻÷時刻 じゃないだろ
時間を演算するならシリアル値に変換して演算すればいいだけ
日付時刻に対する加減算以外の演算なんて意味ない

725:デフォルトの名無しさん
17/08/08 08:18:45.83 T3VkQlydp.net
>>711
TimeはDaterime.timeでvariantだからエラーにならないのはわかる
fooもvariant?それともDate型?

726:デフォルトの名無しさん
17/08/08 08:21:04.55 T3VkQlydp.net
>>713
時刻を基準日時刻からの時間以外で定義できるんだっけ?

727:デフォルトの名無しさん
17/08/08 08:24:56.85 sJaKEDtc0.net
>>713
>日付時刻に対する加減算以外の演算なんて意味ない
除算も乗算も意味あるんだが、一体何を言ってるんだ

728:デフォルトの名無しさん
17/08/08 08:24:58.32 Czpew14v0.net
今のとこ試した範囲では、2010で割る方の方がDate型だとエラー51だすな
バリアントだとVarType 7(vbDate)でも平気
どうにもバグくさい。だれかインシデント余ってるやつMSに聞いてくれ
>>711
だからエラーになるやつは環境かけよ
Win7 2010ではそれだけではエラーにならんぞ
どっかでfooをDateで宣言してんじゃねえのか

729:デフォルトの名無しさん
17/08/08 08:31:46.30 Czpew14v0.net
>>713
VBAでは時間と時刻の型は区別されてないから、その議論に意味があるかは微妙だな
Date型を時刻ととらえるか基準時点からの時間ととらえるかの問題だろ
>>716
時間と時刻の違いわかってる?
一般的な会話での時間って言葉はほとんどが本来だと時刻の間違いだぞ
時刻の除算にどんな意味があるんだ?

730:デフォルトの名無しさん
17/08/08 12:35:05.88 l31z4HMeM.net
除算は1900/1/1からの経過日数の比
って認識で良いのかな

731:デフォルトの名無しさん
17/08/08 17:34:44.63 o2sPvDRf0.net
>時間の就業時間の間に25分掛かる作業を何回できるか見積るとか
(終了時間ー開始時間)を分単位に直して25で割るってことじゃないですか。
これは10000円を100円単位に分けたらいくつになる?ってのと同じ数量の問題だよね?
時刻の除算ってのは例えば
A = "2017/04/11 16:54:00"
B = "2017/08/15 10:45:48"
で A / B (Aは日付型でなくてもいいんだろうけど)ということでしょ?
これにどんな意味があるのよ

732:デフォルトの名無しさん
17/08/08 18:14:01.43 Plhneb/rd.net
単純な操作のはずなのによくわからん
0. .xlmxファイルを(パス:\A)に作成しておく
1. フォルダ(パス:\B)内のすべてのCSVファイル(データは1列のみ)を、先ほど作成したファイルのSheet1の2列目から順次マージする
データを繋げるところで詰まるので助けてください

733:デフォルトの名無しさん
17/08/08 18:15:20.46 7r69+AsTM.net
>>715
日時が先か時間が先かは知らんが今の議論には関係ないと思う
>>716
どういう意味があるのか書いてからほざきない
>>718
言語で区別してないから使う人が意識しなきゃねって話

734:デフォルトの名無しさん
17/08/08 19:18:53.44 4vV+Ffiu0.net
>>722
Date型で割るとエラーになると言う点と
あとどうでもいいんだが時刻で割ると言う点の
2つの論点が並行している
Dateで割る時はdoubleにキャストすればいいだけ

735:デフォルトの名無しさん
17/08/08 19:20:53.27 4vV+Ffiu0.net
>>720
Bを1とした時にAを数値で表した値
どんな価値があるかはその時によるが
全く価値がないとも言い切れない

736:デフォルトの名無しさん
17/08/08 19:33:26.34 qEy0EStIr.net
>>721
君が書いたコードのどこが拙いのか検討しようぜ。
まずはコード書いて。

737:デフォルトの名無しさん
17/08/08 19:36:48.60 bHuYQqMY0.net
Excel総合に間違って投下してしまったので、こちらに再投稿します。
以下のマクロをボタンに登録し、印刷範囲をhtmで保存しようとしています。
しかし、このブックを一度上書き保存等しないと正常に動作しません。
見よう見まねでこうなったコードなのですが、どうすれば良いでしょうか?
アドバイスお願いします。
Sub SAVE()
'
' SAVE Macro
'
'
With ActiveWorkbook.PublishObjects.Add(xlSourcePrintArea, _
Range("AT1").Value & ".htm", "Sheet1", "", xlHtmlStatic _
, "", "")
.Publish (True)
.AutoRepublish = False
End With
ChDir "C:\Users\admin\Desktop"
End Sub

738:デフォルトの名無しさん
17/08/08 21:36:34.68 JRNVbyEr0.net
複数ステップのOLE DBの操作でエラーが発生しましたとか言われて、
adOpenKeyset, adLockOptimisticで対策したら、
今度はUpdateで怒られるんですが、どうにかなりまんせん?

739:デフォルトの名無しさん
17/08/08 21:50:18.55 4vV+Ffiu0.net
>>727
エラーとカーソルタイプやロックタイプは関係あるの?

740:デフォルトの名無しさん
17/08/08 22:02:37.25 JRNVbyEr0.net
>>728
わからないんですが、
他にも、adUseServerでエラーになるので、
adUseClientに直すと、違うエラーが出たり、
何かを直すと違うエラーが出る、もぐら叩き状態です。

741:デフォルトの名無しさん
17/08/08 22:06:10.50 4vV+Ffiu0.net
sqlのエラーならそこらへんは関係ないんじゃないの?
なんのエラーか知らんけど

742:デフォルトの名無しさん
17/08/08 22:12:27.27 wQlpajLt0.net
DB操作はClose通らない処理を挟んでしまって二重にOpenするとかで苦労した事があるなぁ。
それが原因ならクラス作ってデストラクタにClose書いておけば忘れなくて便利。

743:デフォルトの名無しさん
17/08/08 23:58:40.83 cql1o/lA0.net
>>723
> Date型で割るとエラーになると言う点と
俺はそんなことは問題にしてない
意味のない演算ができてしまう言語なんて珍しくないし
> あとどうでもいいんだが時刻で割ると言う点の
どうでもいいなら放置しておけば?

744:デフォルトの名無しさん
17/08/09 09:22:17.50 Qcpwsibl0.net
>>726
保存先をパス付きで指定したらどうかな
chdirは自分のパスだろうし

745:デフォルトの名無しさん
17/08/09 10:44:54.73 F6AoeH710.net
>>727
こいつもそうだけど、ソースも示さずエラーが出ると言ってどんなエラーかも示さず

アホか
大方SQL単体でも失敗してんだろ

746:デフォルトの名無しさん
17/08/09 13:14:09.12 b9k/R7FPM.net
Sexel-VBA

747:デフォルトの名無しさん
17/08/09 13:28:47.67 MinGKowar.net
>>734
たぶん、『解答』が欲しいのではなく、『レス』が欲しいんだろうね。
つまり、雑談したいだけなんじゃね?

748:デフォルトの名無しさん
17/08/09 13:56:39.55 LTZc9U500.net
>>733
ありがとうございます。帰宅後、やってみます。

749:デフォルトの名無しさん
17/08/09 18:28:18.83 b9k/R7FPM.net
>>737
いいってことよ(´・ω・`)b

750:デフォルトの名無しさん
17/08/10 22:43:19.50 JdKfuZ5y0.net
>>734
一般的でなく、同じ目にあった経験者しか答えを知らなそうな内容なので・・。
ググって出てきた例が全滅なので、
多分、AccessではなくExcelでやってるのが原因だとは思うのですが。

751:デフォルトの名無しさん
17/08/10 23:14:30.24 JdKfuZ5y0.net
ちなみに、EOFがtrueじゃありませんとか、
IZAMが有効じゃありませんとか、
そんなやつです。

752:デフォルトの名無しさん
17/08/10 23:22:56.42 VgLhJXRi0.net
>EOFがtrueじゃありません
俺もmysqlにアクセスするのを作ってる段階でそういうのを出すことはあるよ。けど、そういうのここで
チンタラチンタラ言っててもソースがない以上こちら側ではどうしようもないわけで。

753:デフォルトの名無しさん
17/08/10 23:45:49.59 SqJ4/4zg0.net
>>740
もしかしてEXCELで直接開いてるのにAccessと同じ文法のSQL使ってない?
ワイルドカードとか色々と違う点があるんで、もしかしたらSQLが失敗して空のレコード開いてるのかも。

754:デフォルトの名無しさん
17/08/11 04:12:54.28 +mgolt3u0.net
そもそも何のDB(ドライバ)かすら書いてないし
どうやってレコードセット開いてupdateしたのか書いてないし
レスするだけ無駄な気がするぜ
>EOFがtrueじゃありません
そんなエラー見たことないな。EOFがFalseなら普通にデータ取れてるってことじゃねえの?
EOFがTrue前提の操作が浮かばんが、何しようとしたらそんなエラーになるんだよ
>IZAMが有効じゃありません
IZAMって何さ?ビジュアル系バンドメンバーかよ

755:デフォルトの名無しさん
17/08/11 07:44:16.53 xHfWhpghr.net
>>743
> レスするだけ無駄な気がするぜ
いいんだよ、それで。雑談が目的なんだから。
答えを出す必要はない。

>> EOFがtrueじゃありません
> そんなエラー見たことないな。
ADOでレコードセットを操作していると、ときたま現れるエラー。
クエリ結果にレコードが1件もない場合とかに出たりする。

756:デフォルトの名無しさん
17/08/11 11:24:22.86 dnJD889I0.net
初心者ですがご教授下さい
クラス内にTRが9ありそのうちの1~4を取得したいと思っています。
現在は1しか取得できません。どう書き換えればいいでしょうか?
Sub shisaku()
Dim objIE As InternetExplorer
Set objIE = CreateObject("Internetexplorer.Application") '
objIE.Visible = True '
objIE.navigate "URLリンク(www.aaa)
Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE
DoEvents
Loop
Dim htmlDoc As HTMLDocument
Set htmlDoc = objIE.document
Dim colTR, colTH, colTD, colImg As IHTMLElementCollection
Set colTR = htmlDoc.getElementsByClassName("first")
Dim el As IHTMLElement
For Each el In colTR
Set colTH = el.getElementsByTagName("th")
Set colTD = el.getElementsByTagName("td")
Debug.Print colTR(0).innerText
Next el
End Sub

757:デフォルトの名無しさん
17/08/11 11:47:54.41 H2cGDcz1a.net
>>745
なんでcolTRをclassnameで取得してんの?

758:デフォルトの名無しさん
17/08/11 11:50:59.38 H2cGDcz1a.net
あと並べて書いた場合でも変数一つずつ型指定してかないとvariantになるよ、vbaの場合

759:デフォルトの名無しさん
17/08/11 13:07:34.65 11Y29+uU0.net
吉岡美穂のカキタレ

760:デフォルトの名無しさん
17/08/11 13:38:42.84 dnJD889I0.net
>>747
vbaでieを操作を読んでもググってもあり理解出来なくてとりあえず作りながら覚えようと
コピペしたものを一部変えました
tr、tdは特定出来ずclassが特定出来るのですがどのように書き換えればよろしいのでしょうか?

761:デフォルトの名無しさん
17/08/11 13:56:55.44 kj6/PAcR0.net
>>749
処理対象によってどうすればいいか変わるから
対象が判らないとなんとも言えないのではないと思う
クラスで全部のTRを取れてるのかも判らないし

762:デフォルトの名無しさん
17/08/11 14:32:36.47 yOhrxWpUa.net
>>749
trがほしいならgetElementsByTagName("TR")で取るのが普通じゃね
その後のfor eachの中の処理もよくわからんが

763:デフォルトの名無しさん
17/08/11 14:42:02.39 hvV/hgBn0.net
例えば下のように文字と数字が並んでいて、文字を数字の横に持って行くにはどうしたらいいですか?
12
q
15
b
10
c

12 q
15 b
10 c

764:デフォルトの名無しさん
17/08/11 14:45:37.73


765: ID:fD8DkUIg0.net



766:デフォルトの名無しさん
17/08/11 14:51:25.70 fD8DkUIg0.net
>>752
必ず数字と英語が入れ替わりで来るなら以下のマクロ
Sub foo()
For i = 1 To 100
行 = Int(i / 2)
If i Mod 2 = 1 Then
Cells(行 + 1, 2) = Cells(i, 1)
Else
Cells(行, 3) = Cells(i, 1)
End If
Next
End Sub

767:デフォルトの名無しさん
17/08/11 15:01:16.16 hvV/hgBn0.net
>>754
ありがとうございます。
でもすみません、2連続で文字のパターンもあります
正確には下のような感じです

q
r

d

c

○ qr(セル内改行)
○ b
○ c

768:デフォルトの名無しさん
17/08/11 15:12:27.50 kj6/PAcR0.net
>>755
まず数字か文字列か判別すればいいんじゃね?
if a like "[0-9]*" then
って感じでできる様なきがする

769:デフォルトの名無しさん
17/08/11 15:23:36.72 hvV/hgBn0.net
>>756
今考えてるのは以下の感じです
VBAもプログラミ�


770:塔Oも初心者のため全然コードがわかってなくてすみません loop (i) if instr(cell(i,1),"○")<>0 sw=1 if sw=1 sw =1の時それより下のセルの情報を切り取り  loop(n)  n=i+1  if instr(cell(n,1),"○")<>0  sw=0  else n=n+1  loop end else i=i+1 loop end



771:デフォルトの名無しさん
17/08/11 15:32:45.42 fD8DkUIg0.net
>>755
こう
Sub foo()
行 = 1
'一行目は数字
Cells(行, 2) = Cells(1, 1)
tmp = Cells(1, 1)
For i = 2 To 100
If IsNumeric(Cells(i, 1)) Then
'数字
Cells(行, 2) = tmp
Cells(行, 3) = 文字
行 = 行 + 1
tmp = Cells(i, 1)
文字 = ""
Else
'文字
文字 = 文字 & vbCrLf & Cells(i, 1)
End If
Next
End Sub

772:デフォルトの名無しさん
17/08/11 15:33:16.05 fD8DkUIg0.net
>>756
なんでlikeなんだよ
isnumericでいいだろw

773:デフォルトの名無しさん
17/08/11 15:48:56.25 kj6/PAcR0.net
>>759
数字を含む文字列をどっちに判別するかによるんじゃね

774:デフォルトの名無しさん
17/08/11 16:02:01.36 yOhrxWpUa.net
>>749
追記でおせっかいついでに、ie操作覚えたいなら軽くhtml勉強したほうがいいよ
エクセルのオブジェクト理解せずにvbaで扱うなんて無理なのと一緒

775:デフォルトの名無しさん
17/08/11 16:32:57.50 FWZL6nYt0.net
Ruby で書いた
URLリンク(paiza.io)
ary = []
File.open("File1") do |file|
# 1行ずつ処理する
file.each_line do |line|
# 0~9
if /^\d+$/ =~ line.chomp!
ary << line + ' '
else
ary[-1] = ary[-1] + line
end
end
end
puts ary
入力
01
a
b
12
c
23
出力
01 ab
12 c
23
ただし、23 の後ろに、半角空白が入っているけど

776:デフォルトの名無しさん
17/08/11 20:25:45.30 Nl+bIgs10.net
>>742
普通にCopyFromRecordsetするだけなら出来るんです。
Do Until rs.EOF
 rs!項目=何とか ←ここで何かしようとすると、Debug.Print以外は全て失敗します。
 rs.MoveNext
Loop
諦めて、GetRowsして編集してから出力しようとしたら、
縦横入れ替わってるし(Excelで使うのに何故こんな仕様にした?)、
Transposeで直そうと思っても型が違いますとか言われるし・・。
>>743
I-zamはサポートしてませんだったかも?

777:デフォルトの名無しさん
17/08/11 20:45:51.85 2aci5jkj0.net
>>763
>rs!項目=何とか ←ここで何かしようとすると、
rs.項目に何か代入しようとしてんのか?

778:デフォルトの名無しさん
17/08/11 20:48:59.91 +mgolt3u0.net
>>744
>クエリ結果にレコードが1件もない場合とかに出たりする。
それ普通はEOFがTrueになるはずだけど
MySQLのドライバでそうならなかったりするのか?ドライバのバグじゃねえの?
それどうやってゼロ件かどうか判定するんだ?

779:デフォルトの名無しさん
17/08/11 21:03:31.05 +mgolt3u0.net
>>763
だからDBとドライバ何で、どうやってそのレコードセット作ってるんだよ
そもそもレコードセットを更新する必要があるのかどうかも疑問だけどな
レコードセットは常に更新できるとは限らんのだぞ

780:デフォルトの名無しさん
17/08/11 21:18:12.65 Nl+bIgs10.net
>>764
そうです。
SQL上だと難しい内容があるので、後から入れようかなと。
>>766
CsvとMicrosoft.Ace.OLEDB.12.0です。
元のCsvの方は、多分更新出来ないだろうとは思ってたのですが、
出力結果の方に、編集した内容が反映されればいいかなと。

781:デフォルトの名無しさん
17/08/11 21:29:48.64 2aci5jkj0.net
>>767
CursorTypeがどうなっているのかとかいちいちこちらから聞かないと情報を出さないのか?
で、延々と続ける気?

782:デフォルトの名無しさん
17/08/11 22:03:13.38 kj6/PAcR0.net
>>764
rsに代入できるんだっけ?
debug.print出来るならrsから読み込むのは出来るんじゃね?
別変数にコピーしてから変更したら?

783:デフォルトの名無しさん
17/08/11 22:06:37.63 mfxycmdp0.net
Excel(VBA)でデータベース接続ってどういうのが一般的なんでしょうか?
自分は専ら生ODBCを叩いているので他人のことが気になってる。

784:デフォルトの名無しさん
17/08/11 22:11:37.85 kj6/PAcR0.net
>>770
そんなの統計とかアンケートとかとってる人いないんじゃないかな
実現したいことができればいいんじゃね

785:デフォルトの名無しさん
17/08/11 22:15:41.96 fD8DkUIg0.net
そもそもexcelでデータベースに接続しないな
全部accessで済ませてしまう

786:デフォルトの名無しさん
17/08/11 22:36:29.71 mfxycmdp0.net
>>772
VBAとODBCドライバしか使わないのでExcel, Outlook, Word, Access その他 Officeなら何でもOKにはしてる。
ExcelとOutlookくらいしか使わないけどね。
Outlookはメールで「このテーブルをこう読んだときに~」とか連絡を受けたときにそのままVBEを開いて使ったりとか。

787:デフォルトの名無しさん
17/08/11 23:12:57.71 Nl+bIgs10.net
>>768
それは最初に、読み取り専用じゃないやつに変えたけどダメだったと書きましたけど。
>>770
ググって引っかかる率が高いのはADO。
外部データ取り込みの方なら、参照設定もいらないのに、どういうわけかADOばっか。
ADOばっか出るから、ADOに乗り換えてみたら、このザマですよ。

788:デフォルトの名無しさん
17/08/11 23:35:39.96 mfxycmdp0.net
>>774
乗り換えた、って何から?

789:デフォルトの名無しさん
17/08/12 00:49:01.81 RTe2mUwF0.net
>>775
外部データ取り込み(Microsoft Query)からです。
シートの指定が、なぜか[シート名$]じゃなくて`シート名$`とか、
データの出力開始列にコマンドボタンを配置すると、ボタンを押した瞬間、
ボタンが横に逃げるとか(離すと元の位置に戻ってくる)、
意味不明な軽い嫌がらせがありますけど。

790:デフォルトの名無しさん
17/08/12 10:58:36.59 AoA5DjYT0.net
ヘルプ見ると日付型の説明として以下のように書いてあるじゃん。
 日付型 (Date) の変数は、IEEE 64 ビット (8 バイト) の浮動小数点数の変数です。
 西暦 100 年 1 月 1 日~西暦 9999 年 12 月 31 日の範囲の日付と、0:00:00 ~ 23:59:59 の
 範囲の時刻を表すことができます。
でも1900年以前のDate型変数をワークシートに貼ろうと思ってもできなくて、
 実行時エラー'1004':
 アプリケーション定義またはオブジェクト定義のエラーです。
ってエラーが出てくるじゃん。これ控えめにいtt

791:デフォルトの名無しさん
17/08/12 11:02:43.67 q63a26xE0.net
mysqlとodbc経由で接続している。以前はSQLServerとでもやってた。他にもポスグレやoracleとやってる人間も沢山居るだろ。
んでそんな文句言ってるのはお前だけ。
お前のソースがバグだらけなんだよ。けどソースは示さないんだろ?一人勝手にやってろ

792:デフォルトの名無しさん
17/08/12 11:56:57.58 TCrjrl3y0.net
>>725
ごめんできちゃった
ありがとね

793:デフォルトの名無しさん
17/08/12 12:46:19.08 IpuKNNKZr.net
>>755
  Dim lastRow As Long
  Dim i As Long
  Dim arry
  Dim str
  
  lastRow = Cells(Rows.Count, 1).End(xlUp).Row
  arry = Range("A1:A" & lastRow).Value
  i = 1
  Do Until i = UBound(arry)
    If IsNumeric(arry(i, 1)) And arry(i, 1) <> "" Then
      str = str & arry(i, 1)
      Do Until IsNumeric(arry(i + 1, 1))
        str = str & arry(i + 1, 1)
        i = i + 1
        If i = UBound(arry) Then Exit Do
      Loop
      str = str & vbCrLf
    Else
      i = i + 1
    End If
  Loop
  Range("B1").Value = str

794:デフォルトの名無しさん
17/08/12 13:38:05.91 IpuKNNKZr.net
>>779
満足してもらえたようで良かったです。

795:デフォルトの名無しさん
17/08/12 15:49:33.01 s2RcRfJ50.net
>>.777.
それはVBAの問題じゃない
EXCELで扱える日付範囲がVBAより狭いだけ

796:デフォルトの名無しさん
17/08/13 10:20:51.63 YIp/txnN0.net
VABでIEを開いて、
情報を取ってるんですが、
ie.Visible = False
で、
画面でないようにしてるけど、
これは、どこか裏で開いてる?
それとも、消えてくれるのかな、
Falseで画面出さない時は、
IE閉じる処理はしなくてもいいでしょうか?

797:デフォルトの名無しさん
17/08/13 10:33:34.50 ua4YvzFl0.net
よくわからんけど、WBEクエリってので、
画面出さずに取れませんか。

798:デフォルトの名無しさん
17/08/13 10:35:11.41 YIp/txnN0.net
>>784
クエリでも獲れるけど、
VBAも使いたいので、
なにか閉じる処理とかいるのかなぁ

799:デフォルトの名無しさん
17/08/13 10:45:28.39 B6edc+jF0.net
>>784
表の中の項目だったら<td>のinnerTextを取ればいいし、リンクだったら<A>のhrefを取ればいい。
ググればなんとかなるさ。

800:デフォルトの名無しさん
17/08/13 11:53:36.55 TIsdzDXzr.net
>>783
タスクマネージャのプロセスにieが残ってるはず。
たとえバックグラウンドであっても、開いたら閉じるが原則。
ie.Quitの1行は必須です。

801:デフォルトの名無しさん
17/08/13 12:24:29.35 B6edc+jF0.net
>>784
ごめんWebクエリってExcelの機能があったのか。
>>786ではCreateObject("MSXML2.XMLHTTP")とCreateObject("htmlfile")を使う方法を答えてしまった。

802:デフォルトの名無しさん
17/08/13 12:33:27.11 YIp/txnN0.net
>>787
そうですか、
閉じるようにします、
ありがとうございます!
>>788
俺も、
htmlのタグとか、でieから情報とってる。

803:デフォルトの名無しさん
17/08/16 19:34:35.81 jf8MYepF0.net
>>745です
childrenで情報は取得できそうです(イミディエイト上確認できています)
エクセルのA列に入力のURL100をA2から順に自動で情報取得、B列、C列、D列に取得した情報を出力したいのですがどのようにすればいいでしょうか?
おそらくは下記部分の書き換えかと思われますがご教授下さい
objIE.navigate "URLリンク(www.aaa.jp)
Debug.Print colTD(2).innerText & "|" & colTD(3).innerText & "|" & colTD(4).innerText

804:デフォルトの名無しさん
17/08/16 21:36:07.94 DoB/Yq6sa.net
>>790
昔作った簡易ツールなんだけどさ、これで指定のURLのページのDOM情報を全部ごっそり取れるから試して見たら。
標準モジュールに張り付けて保存して閉じた後で再度開くとアドインリボンにボタンが2つ出来る。
URLリンク(pastebin.com)

805:デフォルトの名無しさん
17/08/16 22:17:10.08 DoB/Yq6sa.net
一点忘れてた。
このツール、取ってくるページが重いと時間がかかる。
あんまり遅いときはBreakしてくれ。

806:デフォルトの名無しさん
17/08/16 22:19:22.62 6PDnHTyR0.net
CreateObject("InternetExplorer.Application")
なんてしたくないからMSXML2.XMLHTTPとか使うんじゃないのか?

807:デフォルトの名無しさん
17/08/16 22:53:28.23 DoB/Yq6sa.net
>>793
DOM情報は一緒に使える。
情報を得るだけならMSXML2.XMLHTTPの方が良い。
俺のツールは10年以上前に作ったから、その頃はMSXML2.XMLHTTPを知らんかった。

808:デフォルトの名無しさん
17/08/17 06:21:37.08 5/l7qEpXr.net
>>791
タイプミスが1個あったよ。
181行目:objndode
おそらく、objNodeと思われ...

809:デフォルトの名無しさん
17/08/17 08:34:41.30 CrDCSFke0.net
お前の過去とか知らんし、判ってる事なら修正版を出してはくれまいか

810:デフォルトの名無しさん
17/08/17 17:22:04.13 im50xVqsa.net
>>795
おお、確かに。
>>796
必要なら自分で修正しなよ。
使えるから長いこと使ってるけど簡易ツールだし、マウス下のDOM情報を取って来るツールとかを使う場合も多い。
バグだらけだから公開はしないけど。

811:デフォルトの名無しさん
17/08/17 18:27:33.83 IrM4WgJo0.net
>>797
ありがとうございます。でもごっそりは重そうなので出来れば自作できればと。
ググるとこれが良さそうですが
Range("A1").Hyperlinks(1).Follow NewWindow:=True
例えばexcelシートにB2~B101までurlの記載があり選択してctrl+sみたいな感じで自動実行
これを書き換えるにはどうすればいいでしょうか?
Set DataSheer = ActiveSheet
Dim i As Long, cnt As Long
For i = 1 To 100
cnt = cnt + 1
Cells(cnt, 1) = i
適当に拾ってきた物を書いてみましたアドバイスをお願いします
>>793
MSXML2.XMLHTTP の利用について教えて下さい。
1日500URLを寝る前に取得したいので出来れば動作は早い方がいいです。
ieを開かずにデータを取得できるんですよね
>>745
Set objIE = CreateObject("Internetexplorer.Application")
objIE.Visible = True
を変更でいけますか?
Set objIE = CreateObject("MSXML2.XMLHTTP")
objIE.Visible = False

812:デフォルトの名無しさん
17/08/17 21:06:10.14 wc7ZtjOc0.net
>>798
このへん読めばいいんじゃないの?
URLリンク(www.kanaya440.com)

813:デフォルトの名無しさん
17/08/17 23:13:12.34 yWP51BMra.net
>>798
そうじゃなくて、そのツールでとってこれるのは指定のURLのページがどういう構造になっているかという情報。
それが分かれば自分で組めるでしょという話。
500個のURLのページがみんな同じ構造なら取りあえず1つだけ構造を調べれば他は同じように組めるでしょ。
例えば君は9個のTRの内、1~4を取りたいけど1だけしか成功して無いんだろ。
なぜ2~4が取れないかを調べるのに使う。
取りたいデータに名前やクラス名がついてたらそれで取ってきた配列を使うし、無ければタグ名で取って来る。
タグ名ならその右にある番号から何個飛ばしで取れば良いとかを類推する。
MSXML2.XMLHTTPやMSHTML.HTMLDocumentは単純にInternetExplorer.Applicationを置き換えて使えるわけじゃない。
ソースを取ってきてそれをDOMDocumentに当て嵌めれば似たように使えるけど。
ところで、1日に500個のURLから情報取ってきて問題無いんだろうね。
岡崎図書館の例にもある通り、不正アクセスとして捕まるのを避けるために先方には確認してる?

814:デフォルトの名無しさん
17/08/17 23:29:45.34 Fn2cTqwk0.net
ふだんプログラミングはExcelのVBAがほとんどでこれならかなり本格的なこともできるスキルがあります。
ところでJavascriptに興味を持ちメモ帳でJavascriptをはじめました。
これでExcelVBAのようにコード書くときにインテリセンスで入力補助ができるツールってないんですか?
メモ帳だから当然そんなのできません。
Javascriptの入門書はいつくか読んでますがExcelVBAのようなインテリセンスが使える開発環境のことには全くふれていません。

815:デフォルトの名無しさん
17/08/18 00:33:09.65 SqU1frnT0.net
JavaScriptスレでどうぞ

816:デフォルトの名無しさん
17/08/18 00:52:10.12 fGYkVGPpr.net
ふつーにVSでいいんじゃね?

817:デフォルトの名無しさん
17/08/18 02:47:26.07 2Rkfa1Rx0.net
うむ

818:デフォルトの名無しさん
17/08/18 06:08:15.32 Pl3jF8BM0.net
フリーのテキストエディタなんて腐るほど調べりゃ出てくるだろ

819:デフォルトの名無しさん
17/08/18 06:32:04.53 fGYkVGPpr.net
>>805
インテリセンスはどうすんの?

820:801
17/08/18 06:47:56.97 r9Ad8ntQ0.net
>>802
いや、ここに居座る。
>>803
VSってVisual Studioですかね?かなり本格的なツールと思いますが
Javascriptでインテリセンスだけできたらいいのですがシンプルなツールはないものでしょうか?
というよりJavascriptやってる人の使用ツールの使用率みたいな円グラフはないでしょうか?
あとExcelVBAでよくやるブレークポイントを使ってF8のコマ送りや実行途中で変数の値を見るのって
Javascriptで使うツールでもできるんですかね?

821:デフォルトの名無しさん
17/08/18 06:56:08.49 uergmdKS0.net
回答率が低い方で聞くのは時間の無駄では?
NGにするから何でもいいけど

822:デフォルトの名無しさん
17/08/18 07:07:24.51 k8zOSHbua.net
>>806
javascriptサポートしてるやつは出てくるんじゃねえの?
使ったことないけど
出ないならvsとか使えばいいじゃん

823:デフォルトの名無しさん
17/08/18 07:14:13.91 r9Ad8ntQ0.net
なんだよ、ここじゃ教えてくれないのです?

824:デフォルトの名無しさん
17/08/18 07:15:23.14 r9Ad8ntQ0.net
             / ̄ ̄ ̄ ̄ ̄\
         /           \
         /              ヽ 
   / ̄\ l      \,, ,,/      | そりゃないよ
  ,┤    ト |    (●)     (●)   | かあちゃん!
 |  \_/  ヽ     \___/     |  
 |   __( ̄ |    \/     ノ 
 ヽ___) ノ

825:デフォルトの名無しさん
17/08/18 07:17:18.70 r9Ad8ntQ0.net
>>809
VSは会社で気軽にインストールできないじゃん

826:デフォルトの名無しさん
17/08/18 07:28:46.83 sIEj8B6D0.net
必要なら出来るだろ

827:デフォルトの名無しさん
17/08/18 07:30:00.10 k8zOSHbua.net
TR取れないくんはgetElementByTagName("TR")は試したのかよ

828:デフォルトの名無しさん
17/08/18 07:36:13.08 fGYkVGPpr.net
>>812
そこなんだよ、問題は。
じゃ、テキストエディタは気軽にインスコできるのかっつーと、インテリセンス実現するためには、やれプラグインだなんだって追加する必要が出てくる。
ソフトのインストール申請は1回で済ませたいよね。
となると、なんだかんだでVSが最良の選択肢になる。
配布元がMSなのも安心だし。
HTMLやCSSも入力補完できるからね。
入れておくとめちゃ便利でっせ、旦那。

829:デフォルトの名無しさん
17/08/18 08:07:29.86 k8zOSHbua.net
TeraPadは便利そうだけどvbscriptが標準でサポートされてないのがつらい

830:デフォルトの名無しさん
17/08/18 08:21:16.51 6b7crCYjx.net
Notepad++とか軽くていいぞ
申請通りやすいかどうかは分からんが

831:デフォルトの名無しさん
17/08/18 08:32:10.11 MkY1nhvU0.net
TeraPad は、サロゲートペア(4バイト文字)のような、
ユニコードに新しく採用された漢字は、? に変換されてしまう
中国の「深圳」みたいな漢字

832:デフォルトの名無しさん
17/08/18 08:34:34.23 Jk1oT0GC0.net
スレタイも読めない馬鹿はスルーで

833:デフォルトの名無しさん
17/08/18 09:27:19.77 r9Ad8ntQ0.net
>>819
こんな掲示板のルールは守る必要がない。
そもそも20年くらい前のインターネット創始期にリアル世界からバーチャル世界への人々の続々の初参加で
みんなが気軽に参加さえできればどこでもいい掲示板がたまたまここだっただけで
まるで自分のアイデアで発明して作り上げた掲示板と勘違いした管理人が有名になったことも利用して年収数億円にもなった
そんなずるいアホの作ったルールを守る必要あるか?

834:デフォルトの名無しさん
17/08/18 09:32:23.59 vyx+pdak0.net
IDEがダメならVSCにすりゃ良いだろ
デバッグ機能使えるし、エディタ扱いだから軽い

835:デフォルトの名無しさん
17/08/18 09:37:07.95 r9Ad8ntQ0.net
>>821
それはあちらのスレでもだれかが言ってたvisual studio codeですか。
評判よさそうなので使ってみます。

836:デフォルトの名無しさん
17/08/18 09:39:00.89 r9Ad8ntQ0.net
あと最重要なことを忘れていた。
Excel VBAのF2で呼び出せるオブジェクトブラウザは上級者ならこの便利さは涙ものだと思うけど
これに相当するものはJavascriptでも使えるんですよね?
たいていのツールならJavascriptでのオブジェクトブラウザは見れる仕様になってるの?

837:デフォルトの名無しさん
17/08/18 09:39:54.13 AHP5pPkPp.net
visual studio codeはフリーで商用利用も可能だったはず

838:デフォルトの名無しさん
17/08/18 11:46:40.85 Jk1oT0GC0.net
>>820
ルール無用な俺格好いい!w

839:デフォルトの名無しさん
17/08/18 11:49:00.60 4NPjN4uFd.net
VSCかー、使ってみようかな
今までVSとVBEでしかプログラム書いたことないや

840:デフォルトの名無しさん
17/08/18 11:56:09.72 WOYUy8950.net
>>820
>まるで自分のアイデアで発明して作り上げた掲示板と勘違いした管理人
何かの著書で、自分のオリジナルじゃないと言い切ってたけど。

841:デフォルトの名無しさん
17/08/18 11:58:21.04 pqZlgJQex.net
>>820
ヒュー
スゲー承認します。

が提案は却下でーーす

842:デフォルトの名無しさん
17/08/18 12:26:45.40 fGYkVGPpr.net
>>820
> こんな掲示板のルールは守る必要がない。
相手してくれる人がいるんならそれでいいんじゃね。
相手したくないやつはスルーするだろうし。

843:デフォルトの名無しさん
17/08/18 12:44:31.00 r9Ad8ntQ0.net
しかもそいつはYoutube動画のすべてのサムネイルで
自分のカバみたいなデカい顔を恥ずかしげもなくデカデカとのせてる。
URLリンク(www.youtube.com)
これが許させるのはイケメンだけではないか?
勘違いもはなはだしい。

844:デフォルトの名無しさん
17/08/18 12:57:32.20 r9Ad8ntQ0.net
動画の内容も幼稚。
こんな低レベルのことしか考えれないのにしゃべるな!というレベル。
例えばプログラミングついての動画見てよ。
URLリンク(www.youtube.com)
コピペが最良とか言ってて、こんなんやってたら共同作業でプログラングやってたらめちゃめちゃになる。
このレベルじゃデザインパターンとかリファクタリングのことを全く知らないしろうとだとわかる。
この人さっぱりプログラミングできないのは明らか。
言語の見解としてCOBOLはやる人がいないからチャンスかも、というのもそれは違うだろ。

845:デフォルトの名無しさん
17/08/18 13:20:37.36 SqU1frnT0.net
はいはいかっこいい

846:デフォルトの名無しさん
17/08/18 13:55:05.43 HoFsfG3Ua.net
>>831
まあ、どうでも良いんだがjavascriptは詳しくないからなあ。
有用な回答が得られるかっていうと知らんということでjavascriptのスレよりは難しいんじゃないか?
ところでググることぐらいはしてるんだろうね。
OmniSharpが使えるエディタならなんでもいけるかも。
あと、マイナーかもしれんがScite4がいけるかも。
AutoItで使ってるからjavascriptはどの程度使えるかは分からんが。

847:デフォルトの名無しさん
17/08/18 14:04:26.04 HoFsfG3Ua.net
>>814
うん、DOMの構造を調べて求めるデータがgetElementsByTagname("TR")の何番目なのかや、実際にはその子どもや孫の可能性もあるからその何番目かっていうのを簡易ツールで調べて欲しいんだがね。
テーブルの場合、連続した番号にならないことも多いから何個飛ばしかが分かれば取ってこれると思うんだけど。

848:デフォルトの名無しさん
17/08/18 15:07:33.11 pqZlgJQex.net
>>831
スゲー承認します

849:デフォルトの名無しさん
17/08/18 17:40:24.80 AdXlT0dS0.net
TR取れない君です
>>790に書いてますが取得は出来てます
3サイト程試したので理解は出来ているかと思います
昨日はcellに出力まで出来ました。
Set colTable = htmlDoc.getElementsByName("oppai")
Dim el As IHTMLElement
For Each el In colTable
Set colTH = el.getElementsByTagName("th")
Set colTD = el.getElementsByTagName("td")
i = 2
Cells(i, "B") = colTD(2).innerText
Cells(i, "C") = colTD(3).innerText
Cells(i, "D") = colTD(4).innerText
Next el
後はA列に記載のURLから順に情報を取得して上のcellに格納していくのと
MSXML2.XMLHTTPやMSHTML.HTMLDocument化です
A列に記載のURL(B2からB101)から順に情報を取得して上のcellに格納の
具体的なコードを教えて頂けないでしょうか

850:デフォルトの名無しさん
17/08/18 17:41:43.48 AdXlT0dS0.net
A2からA101の間違いです

851:デフォルトの名無しさん
17/08/18 17:55:29.64 MkY1nhvU0.net
>>798
1つのドメインにつき、1日1回までにしておかないと、業務妨害で逮捕されるぞ。
同じサイトへ、しつこくアクセスするなよ
普通のサイトは、ツールでのアクセスは認めていないから
robots.txt に、検索エンジンのクローラー(ロボット)に対する、命令が書いてあって、
それに従わないアクセスは、業務妨害で逮捕される

852:デフォルトの名無しさん
17/08/18 20:31:07.04 AdXlT0dS0.net
>>838
えっ1日に2回サイトにアクセスすると逮捕って日本の法律?
じゃあスクリプト組んで商品買ってるやつみんな逮捕されてんの
コードの書き方書いてるやつやソフト屋も幇助で逮捕されてるんだ
ちなみに取りに行くの海外サイトなんだけど同じなの?
国際指名手配とかになると困るんだけど

853:デフォルトの名無しさん
17/08/18 20:35:27.71 50s8GsCc0.net
岡崎図書館アクセス事件か

854:デフォルトの名無しさん
17/08/18 20:42:49.44 uergmdKS0.net
>>839
大丈夫だよ
>>838はちょっと頭がおかしいだけ

855:デフォルトの名無しさん
17/08/18 23:15:13.61 b4AgNHol0.net
>>840
> 岡崎図書館アクセス事件か
wikiを見てみると、1秒に1アクセスは「常識的で礼儀正しい」って世間の認識のようだね
男性の作成したクローラの動作
このクローラは、同時には一回しかリクエストを送らず、受信後に間隔をおいてから次のリクエストを送信していた
(1秒に1アクセス程度に調整)。これはクローラの動作としては「常識的」「礼儀正しい」程度のものであり、
応答を待たずに過大なアクセスを行うことで高負荷にさせる攻撃用のプログラムと異なる動作であった。
男性の業務妨害の強い意図が認められないとして起訴猶予処分となった

856:デフォルトの名無しさん
17/08/18 23:45:49.18 tsIqQuRu0.net
>>798
1日に500URLの取得が場合によってはサーバーの稼働を妨害していると見られる場合があるので
注意したほうがいいぞ、2回目で通報はないだろうけどな

857:デフォルトの名無しさん
17/08/19 00:40:39.77 vs90uVQG0.net
>>841 >>843
OKです
例えばですが同一サイトの目的の個別ページに100アクセスするのと
1アクセスになるのかわからないけど根こそぎリンクたどっていくのとどっちがいいのでしょうか
前者のやり方はググっても同じやり方の参考になるサイトがなくてコードを希望しました
後者なら似た感じのがあったので自分でも作れそうです
欲しい情報のほとんどが各ページ10字程度のTD1ケ所だけです
素人考えで該当のページから必要な部分だけ抜いたほうがいいのかなって思ったんですがどっちがいいのでしょうか

858:デフォルトの名無しさん
17/08/19 04:41:34.88 lWDfsp6Na.net
サーバーの性能、サイトやデータの構成、取得の目的とか書かないの?

859:デフォルトの名無しさん
17/08/19 08:16:52.16 y9n8lCwp0.net
転売ヤーかなんかか?こいつ

860:デフォルトの名無しさん
17/08/19 09:53:56.58 OPyAj3On0.net
必要な情報は提供せず、こちらが知りたいことだけ教えろ!
これがこのスレの質問者のデフォ

861:デフォルトの名無しさん
17/08/19 10:50:30.19 4AkL572wa.net
>>847
教えても例もしないゴ�


862:~クズが多すぎるな 特に「具体的なコード教えて」君は人としてのレベルの低さがすけて見えて気持ちが悪いわ



863:デフォルトの名無しさん
17/08/19 12:32:35.39 9KU7ntuJ0.net
岡崎図書館事件では、逮捕されている。
第三者機関である裁判所から、逮捕状も取れている
裁判所だから、警察などの行政執行機関じゃなくて、司法の判断で、ほぼ有罪になる。
単に、起訴猶予処分にしたというだけ
1秒に1回なら、アクセスしても無罪というのは、
無罪になるために、こういうのが常識ですよって広めただけで、
実際には、逮捕状も取れている
robots.txt に従っていないと、相手のサイトが訴えるのは自由だから、
各社の検索エンジンは、1日1回しかアクセスしない

864:デフォルトの名無しさん
17/08/19 12:34:28.91 qVAbDdKi0.net
>>849
オンラインゲームでチート反対って言ってる人?

865:デフォルトの名無しさん
17/08/19 13:55:26.61 8yrvVjZy0.net
詳細を知れば作り方によって回避できるのではないか
URLリンク(ja.wikipedia.org)

866:デフォルトの名無しさん
17/08/19 13:55:32.82 stRE+6ELa.net
>>836
そこまで分かってて何で組めんの?
基本的な問題で躓いてるみたい。
君はどういう方針で組んでるの?
普通はそういうサンプル組めたらURLを変数に置き換えて、指定のURLを引数にして4つのデータを取得するプロシージャ作ると思うんだが。
Function Get4Data(strURL As String) As String()
Dim strData() String
.
.
.
Get4Data=strData
End Function
Sub MainProc()
Dim strData() As String
Dim i As Long
Dim j As Long
For i=2 To 102
strData=Get4Data(Cells(i,1).Value)
For j=0 To 2
Cells(i,j+2).Value=strData(j)
Next j
Next i
End Sub
4つのデータに意味を意識するならユーザー定義型を返すプロシージャにしてメインでは配列の利点を使わない。(jを使わない)
この辺は趣味の問題だと思うけど。
なお、スマホから打ってるからコードには間違いが有るかも。

867:デフォルトの名無しさん
17/08/19 13:57:02.56 9KU7ntuJ0.net
別に反対とは言わないけど、
相手のサイトが、業務妨害で訴えるのは自由だから、逮捕されるよってだけ
コンビニのアイスクリームのケースに入って、写真を撮っただけで逮捕されてる
被害額は、0円なのにw
気持ち悪くて、客に出せないから、アイスクリームを全部捨てましたって
相手は、何とでもできる。
無傷でも、被害額を請求できる

868:デフォルトの名無しさん
17/08/19 14:07:36.79 8yrvVjZy0.net
>>853
なぜ脅したがるのか知らんがクローラーでなければ問題ないし
先にrobot.txtの内容を見る処理書けばいいだけだから

869:デフォルトの名無しさん
17/08/19 14:16:21.11 stRE+6ELa.net
岡崎図書館の場合は図書館側に問題があって、プログラムでアクセスした時にそれが顕在化したということだったと思うが。
ただし、プログラムでのアクセスはサーバーをダウンさせることもあり得るわけでそれはアクセスの程度問題であるということ、過度なアクセスはサーバー側にとっては迷惑であるということ、不正アクセス防止法は意図しなくても問えるということは、留意する必要があるだろう。
要は無断でのアクセスは迷惑になるから気をつけてってこと。
そういう意識があって、でもそれほどアクセスが有るわけじゃ無いから連絡はしなくても良いだろうという判断ならそれもありじゃないかとも思う。
これが全く気にもせず、人のことはどうでも良いと考える人ならもう教えないし、プログラム組むのも辞めた方が良いと思う。
そういう人のプログラムって動けばOKの独りよがりプログラムになって周りが迷惑になりがちだから。

870:デフォルトの名無しさん
17/08/19 14:25:11.26 8yrvVjZy0.net
そのためのrobot.txtだし

871:デフォルトの名無しさん
17/08/19 14:25:27.42 8yrvVjZy0.net


872:デフォルトの名無しさん
17/08/19 14:33:28.32 stRE+6ELa.net
仕事でWebから情報取って来るプログラムを作ったときは客にその旨を説明し、先方には実際のプログラムのソースコードと一緒にどういう手順でアクセスするかの説明を提示して貰った。
先方と言っても会社は違うけど客の会社の関連会社で情報取って来るプログラムもその会社関連の仕事の中の一部だったわけだけど。
先方が承諾することは分かってたけど一応報告すべきってことで。
>>839
そういうわけで手順を踏んで許可を取れば問題ないから幇助には当たらない。

873:デフォルトの名無しさん
17/08/19 15:26:44.64 s/7RraD70.net
無断でのアクセスって何のことだろう?

874:デフォルトの名無しさん
17/08/19 15:56:14.31 qGabhzqpH.net
全部MDISのせい
Librahack氏はMDISに慰謝料を請求してもいいレベルだと思うね

875:デフォルトの名無しさん
17/08/19 16:13:25.46 YttHcr520.net
同じコードで実行してもできる時と反応がない時とあるんだけどなんで?

876:デフォルトの名無しさん
17/08/19 16:51:19.94 8l5l37FKr.net
>>861
必要な情報は提供せず、こちらが知りたいことだけ教えろ!
これがこのスレの質問者のデフォ
らしいですよ。

877:デフォルトの名無しさん
17/08/19 18:01:00.40 s/7RraD70.net
もうすぐ停電が起こる

878:デフォルトの名無しさん
17/08/19 18:37:05.55 lbryh9n10.net
>>849
> 1秒に1回なら、アクセスしても無罪というのは、
> 無罪になるために、こういうのが常識ですよって広めただけで、
> 実際には、逮捕状も取れている
不起訴になってるじゃん
前例ができたから、今後は逮捕されることもないでしょ

879:デフォルトの名無しさん
17/08/19 18:47:22.47 qVAbDdKi0.net
岡崎図書館不起訴になったのか
じゃあ問題無しだな。一時間に一回ぐらいのクロールなら余裕だろう

880:デフォルトの名無しさん
17/08/19 22:27:39.50 vZgN9gzSa.net
>>861
その同じコードをさらせよって意味だよ
日本語わかるよな

881:デフォルトの名無しさん
17/08/19 22:32:40.39 +zJz2sC40.net
>>862
逆に言うと
その程度の脳みそだから教えてもらわないとわからないってことなんだろうな
低レベルな質問するやつほど
自分の環境言わなかったりコード提示しないイメージ

882:デフォルトの名無しさん
17/08/19 23:39:23.73 8yrvVjZy0.net
>>861
ネット関係ではよくあると思うが

883:デフォルトの名無しさん
17/08/20 05:28:39.28 C1zPHqEG0.net
>>853
> コンビニのアイスクリームのケースに入って、写真を撮っただけで逮捕されてる
> 被害額は、0円なのにw
そういう思考回路の時点で、お前も同じレベルのキチガイだ

884:デフォルトの名無しさん
17/08/20 08:32:07.00 1pFA1rOB0.net
被害額0円でも女子トイレに入っただけでも逮捕されることあるけどな

885:デフォルトの名無しさん
17/08/20 09:23:54.53 B8YXLqYv0.net
>>861
コードが間違ってるから

886:デフォルトの名無しさん
17/08/20 10:22:38.45 fQYf1WJRM.net
>>853
それが被害額ゼロ円だと思ってる時点でお察しだよ

887:デフォルトの名無しさん
17/08/20 11:34:29.55 xnxdM6Sy0.net
初心者ですいません。教えてほしいです。
シートが2枚あり、1枚目のシートの特定セルに「デリ」と入力後、
2枚目シートの特定セルにデリと入力されるのを作ってるのですが1枚目のC13のは反映されるのですが、C14以降が反映されません
ご教授お願いします
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim name As Variant
Dim linenm As Integer
For i = 13 To 52
If Intersect(Target, Cells(i, 3)) Is Nothing Then
Exit Sub
Else
'デリがもし記載されていれば
If Cells(i, 3).Value = "デリ" Then
'デリが記載の名前をnameに代入
name = Cells(i, 3).Offset(0, 1).Value
'ワークシート(シフト)で、nameに代入されている名前の行数を取得
linenm = Application.Match(name, Worksheets("シフト").Range("A1:A60"), 0)
Worksheets("シフト").Cells(linenm, 2).Value = "デリ"
End If
End If
Next i
End Sub

888:デフォルトの名無しさん
17/08/20 13:16:25.67 hXI6dDhp0.net
>>873
ここがおかしい
targetがcells(14,3)だとループから即抜けて終わる
For i = 13 To 52
If Intersect(Target, Cells(i, 3)) Is Nothing Then
Exit Sub
Else
以下のように書き換える

Dim linenm As Integer
'範囲外だったら終了
If Intersect(Target, range(Cells(13, 3),cells(52,3))) Is Nothing Then
Exit Sub
endif
'メイン処理
For i = 13 To 52

こうすれば何をしているかわかりやすいと思う

889:デフォルトの名無しさん
17/08/20 13:17:04.87 hXI6dDhp0.net
で、更に言うと、スコープの関係でWorksheet_Changeから別シートは触れ無くないか?
以下はエラーになる気がする
Worksheets("シフト").Cells(linenm, 2).Value = "デリ"
以下のようにすると動くと思う
'worksheet1
Private Sub Worksheet_Change(ByVal target As Range)
'無限ループを抑制する
Application.EnableEvents = False
'この時点で選別する
If Intersect(target, Cells(i, 3)) Is Nothing Then
Exit Function
Else
'標準モジュールに投げる
foo (target)
End If
Application.EnableEvents = True
End Sub
'標準モジュールの内容
Function foo(ByVal target As Range)
Dim i As Integer
Dim name As Variant
Dim linenm As Integer
'範囲外だったら終了
If Intersect(Target, range(Cells(13, 3),cells(52,3))) Is Nothing Then
Exit Sub
endif
'メイン処理
For i = 13 To 52


890:デフォルトの名無しさん
17/08/20 14:44:51.18 Qs6CySsIa.net
>>875
874理解しました。
なるほどです。
外出中なので検証できませんが、
changeイベントはシート1の値を対象で
イベントが発生すればifを実行
ifでシート1にデリが記載されていれば
シート2にデリを入力
というのは不可能なんでしょうか、、
帰ったらやってみます。

891:デフォルトの名無しさん
17/08/20 18:50:52.94 1pFA1rOB0.net
できるよね
Worksheets("シート2").Cells(linenm,2).Value = "デリ"

892:デフォルトの名無しさん
17/08/20 18:56:54.50 hXI6dDhp0.net
すまんかった、普通に間違えてたわ

893:デフォルトの名無しさん
17/08/20 22:03:48.69 xnxdM6Sy0.net
>>878
今戻って書き直したら正常に動作しました。
ありがとうございます。
別件の質問なんですが、
worksheet_changeは
セルの値を削除した際には対応していないのでしょうか。
うまくいかない・・。

894:デフォルトの名無しさん
17/08/20 22:23:57.13 4PP/aROC0.net
>>879
どう言う手順でセルを削除してるのか知らんが、ブレークポイント置いても止まらんのならそうなんだろ
削除の手順変えるか他のイベントを当たれ

895:デフォルトの名無しさん
17/08/20 22:27:23.10 hXI6dDhp0.net
>>879
削除ってDELETEキーの事?
それとも行削除?
どっちにしても取得できたけど
Private Sub Worksheet_Change(ByVal Target As Range)
Debug.Print Target.Row
End Sub

896:デフォルトの名無しさん
17/08/20 22:32:57.93 ikiDo2Le0.net
>>846
余った金で買ってるですら時間かけれなくて基本放置メインの優待株なのにちまちま転売なんて時間ないですよ
休みは家族サービスしなきゃなんないし
暑いなかヨドバシ並んだり労力に合わないこと無理
>>845
いや初心者なんでほんと申し訳ないが相手のサーバーの性能とか構成とかどうやって調べるの?
知りたいしやり方具体的に教えてほしい
自分で貼ったコードは今は理解出来てるけど
初心者からすると3日前ならポカーン
正直debug→sellsなんて簡単な事すらわからないレベルが初心者ですw
>>852
ありがとうございます
変数の置き換え等がまさに知りたかった事です
改変出来るサイトが見つけられず完全にお手上げでした
お酒入ってるんで明日試してみます
質問ですが456行目の...はなにか入るかのでしょうか?それともこのままでしょうか?
tb3のみの取得の場合でもこれでいけるのでしょうか?

897:デフォルトの名無しさん
17/08/21 00:12:17.86 yLjCptZM0.net
>>879
おそらくその削除行為で↓のNothing が成り立って終わっている
>If Intersect(Target, range(Cells(13, 3),cells(52,3))) Is Nothing Then

898:デフォルトの名無しさん
17/08/21 02:11:48.51 7jIbvv4Ra.net
>>880
>>881
>>883
解決しました‼
無事作りたいのできました。ありがとうございます‼

899:デフォルトの名無しさん
17/08/21 10:14:11.43 WASZaGRQ0.net
>>884
どう解決したか書けよハゲ

900:デフォルトの名無しさん
17/08/21 12:19:06.20 EyA7fO9yr.net
すまぬ。助けてほしい。
シート上にActiveコントロールのボタン配置します。
なぜか、勝手に大きくなったりちいさくなったりして堪らん。
解決策ありますか?

別件でもうひとつ。
シート右クリックメニューにコマンド追加してます。(マクロで追加)
端末によって、改ページシート表示時なら、コマンド表示されるけど、標準表示時は標準されない。
何が原因ですかな。標準表示でだしたいの。

901:デフォルトの名無しさん
17/08/21 12:42:03.35 a8XpI6K5M.net
>>886
後者に関しては
Cellって名前のCommandBarを取得して変更してると思うけど
改ページと標準で名前はどちらもCellだけど実体は別々のCommandBarだから
改ページの方だけしかメニュー追加できてないんだろう
ついこないだ自分も全く同じ現象にハマった
そのことも加味して作ってるサンプルググれば出てくるよ
出先だから細かいことは書けん

902:デフォルトの名無しさん
17/08/21 12:44:17.85 yLjCptZM0.net
>>886
右クリックしてコントロールの書式設定→プロパティ
セルに合わせて移動するがサイズ変更しないを選択

903:デフォルトの名無しさん
17/08/21 13:44:10.34 EyA7fO9yr.net
>>887
たすかる。あとは、さがしてみるよ!

904:デフォルトの名無しさん
17/08/21 13:46:53.82 EyA7fO9yr.net
>>888
ためしてみるよ。
ファイル開くたびにミリ単位に小さくなる。開放されたい。

905:デフォルトの名無しさん
17/08/21 14:35:20.65 yLjCptZM0.net
>>890
URLリンク(answers.microsoft.com)
それでもだめならグループ化すれば治る場合もあるらしい

906:デフォルトの名無しさん
17/08/21 14:42:45.59 EyA7fO9yr.net
>>891
おう!。たすかります。

907:デフォルトの名無しさん
17/08/21 20:36:29.86 F/qAyFl80.net
変数のウォッチ式を見ていると、変数の中身が勝手に変わるという現象に遭遇しました
以下のコードのどこかに問題があると思います。問題を絞り込み切れませんでした
直前にIEで「メモリを使い切りました」というエラーが出た場合に起こる頻度が高い気がしています
(このマクロは、IEから落とした巨大なデータに対して処理をかけるものです)
PCをしばらく動かしてからマクロを走らせると、何度やっても
特売コード名 = ""
のところで勝手に変数が書き換わります
再起動直後には変わる事はありません
IEのエラーに原因があるのでしょうか?
また、他に見るべきところなどはあるのでしょうか
マクロの内容は
・マクロファイル自体はマクロだけです
・データファイルをopenし、フィルターを掛けて新ブックにコピー、保存
これを繰り返しています
コードは以下です
Set 特売コードリスト = ThisWorkbook.Worksheets("list")
リスト最終行 = 特売コードリスト.Cells(Rows.Count, 1).End(xlUp).Row 'この時点で変数「リスト最終行」にはdoubleの140が格納されている
'特売コードのタイトル設定
For i = ヘッダ列数 + 1 To 最終列 Step 7
特売コード = RIファイル.Sheets(1).Cells(ヘッダ行数 - 1, i).Value * 1 '特売コードはlongの13桁です(JANコードです)
特売コード名 = "" '何故かここで変数変数「リスト最終行」が「特売コード」の値になります。13桁なのでものすごい量の処理になってしまいます
'以降、他の処理
Next


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch