[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 12/05 07:16 / Filesize : 254 KB / Number-of Response : 1006
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part69



1 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 00:22:23.67 ID:Fd224klc0.net]
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付ける

ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

※前スレ
Excel VBA 質問スレ Part68
https://mevius.5ch.net/test/read.cgi/tech/1598756127/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

231 名前:デフォルトの名無しさん mailto:sage [2021/01/10(日) 23:32:18.31 ID:LL6dwzdY0.net]
>>229
お前は馬鹿馬鹿いうだけの馬鹿だな

232 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 22:06:06.53 ID:pqPOJoG50.net]
このスレでお世話になりまくった者だけど
金欲しさに工場部門の夜勤に今年から異動したからVBA触ることももうない
数年後間接部門に戻れるかわからんけど
いや戻れないだろうけど
スレの全員に感謝だわ
本当に色々教えてもらったし構文そのまま頂けた
本当にありがとう

233 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 23:57:28.02 ID:pfNMzUxK0.net]
生産管理でまた使うことになったりして・・・

234 名前:デフォルトの名無しさん mailto:sage [2021/01/12(火) 01:59:02.62 ID:OTa0Zw/f0.net]
VBAに触らなくて良くなるだけで羨ましいわ

235 名前:デフォルトの名無しさん mailto:sage [2021/01/12(火) 19:01:11.25 ID:dCVmoeOp0.net]
>>231
製造現場になじめないで会社辞めるに1ガバチョ

236 名前:210 mailto:sage [2021/01/13(水) 19:37:02.44 ID:lspxZscb0.net]
Dirコマンドの件で回答くれた皆さん

パスにUTF-8で文字化けする文字を含んでいたのが原因だったわ
しょうもないオチでごめんなさい&ありがとう

237 名前:デフォルトの名無しさん mailto:sage [2021/01/13(水) 20:54:16.63 ID:aeNWg8u3H.net]
UTF-8からシフトJISに正しく変換できない文字かあ
葛飾区とか草薙とか色々あるよな
記号も〜とか¥とか半角スペースとかマイナスとか、よく使うのに化けるのがたくさんある

238 名前:デフォルトの名無しさん [2021/01/14(木) 02:22:27.50 ID:JNzdWMyDd.net]
>>235
それを解決できない馬鹿が中途半端に書き込むなよ

239 名前:デフォルトの名無しさん mailto:sage [2021/01/14(木) 05:19:52.68 ID:ecyWCD0F0.net]
知恵袋よかこっちの方がよほど親身なのは住人が優しくてイイ人ばかりだからでつか?



240 名前:デフォルトの名無しさん mailto:sage [2021/01/14(木) 07:59:40.60 ID:gDZI6jyWr.net]
=TEXT(ROUNDDOWN(a1,1-INT(LOG(a1))),IF(1-LOG(a1)>0,"0."&REPT(0,1-INT(LOG(a1))),"0"))

をVBAで記述するとどうなるのか教えて欲しいです。よろしくお願いします。

241 名前:デフォルトの名無しさん mailto:sage [2021/01/14(木) 12:22:18.25 ID:YIqcuI1O0.net]
a = [TEXT(ROUNDDOWN(a1,1-INT(LOG(a1))),IF(1-LOG(a1)>0,"0."&REPT(0,1-INT(LOG(a1))),"0"))]

242 名前:デフォルトの名無しさん mailto:sage [2021/01/14(木) 12:56:03.99 ID:YzBTA1U5H.net]
>>240で解決してたけど、一応正攻法みたいな物

Sub 有効数字2桁()
  Dim A1 As Double
  Dim L As Integer
  Dim S As String
  Dim F As String
  A1 = Range("A1")
  L = 1 - Int(Log(A1) / Log(10#))
  If L > 0 Then
    F = F & "." & String(L, "0")
  Else
    F = "0"
  End If
  S = Format(WorksheetFunction.RoundDown(A1, L), F)
  Debug.Print S
End Sub

243 名前:デフォルトの名無しさん mailto:sage [2021/01/14(木) 18:59:26.33 ID:+2NwXrek0.net]
>>240
マジか・・
普通に書くか、いちいちWorksheetfunctionとか書いてたわ

244 名前:デフォルトの名無しさん mailto:sage [2021/01/14(木) 20:01:26.65 ID:SduAKFWs0.net]
質問です。

シートモジュール内で、

Private Sub Worksheet_Change(ByVal Target As Range)
For Each test In Range("他シートにある名前付きセルの名前")
Next test
End Sub

これで実行時エラー”1004” ’Range’メソッドは失敗しました:WorkSheetオブジェクト が出てしまうのですが、原因は何でしょうか。
Publicを取ってみたり、シートを指定しみたりしたんですが、変化ありません。
標準モジュールに記述してF5で実行した場合はエラー発生しません。
宜しくお願い致します。

245 名前:デフォルトの名無しさん mailto:sage [2021/01/14(木) 20:33:06.60 ID:gxjpIPZs0.net]
シートを指定する
名前の適用範囲を確認する

246 名前:デフォルトの名無しさん mailto:sage [2021/01/14(木) 20:38:30.13 ID:SduAKFWs0.net]
>244
名前の適用範囲を変えてみたりもしたんですが、だめでした。

247 名前:デフォルトの名無しさん mailto:sage [2021/01/14(木) 20:52:33.18 ID:SduAKFWs0.net]
>>244
すみません、解決しました。
名前の適用範囲を参照範囲のシートあるいはブックにして、且つVBAでそのシート指定すればいけました。

248 名前:デフォルトの名無しさん mailto:sage [2021/01/14(木) 20:55:12.26 ID:yNTWs1ET0.net]
>>243
In Rangeの範囲がそのシートだから、そこに名前付きセルはない
その範囲のあるシートがわかってるなら、In 他シート.Range("... のように指定するか
同一ブック内ならIn ThisWorkbook.Names("名前付きセルの名前").RefersToRange
とかでいけんじゃね

249 名前:デフォルトの名無しさん mailto:sage [2021/01/15(金) 07:45:14.16 ID:fl9fRXksr.net]
>>240
>>241
ありがとうございます。



250 名前:デフォルトの名無しさん mailto:sage [2021/01/16(土) 04:08:04.09 ID:wM/4uvwh0.net]
@Set DB As CurrentDb

ASet DB As CurrentDb()

この二つに使い分ける意味はありますか?

251 名前:デフォルトの名無しさん mailto:sage [2021/01/16(土) 10:41:53.52 ID:MRodpgDG0.net]
ないと思う

252 名前:デフォルトの名無しさん mailto:sage [2021/01/16(土) 16:36:07.57 ID:SaJeHrUX0.net]
@はカッコつけたい時
Aはキーボード打つのめんどくさい時

253 名前:249 mailto:sage [2021/01/16(土) 19:03:22.47 ID:wM/4uvwh0.net]
>>250>>251
ありがとう。教本読んだら2種類出てきたので、
何か違いはあるのかと思いまして。
同じだったのか…。

254 名前:デフォルトの名無しさん mailto:sage [2021/01/16(土) 19:33:57.85 ID:MRodpgDG0.net]
同じではない
必要性を感じないというだけ

255 名前:デフォルトの名無しさん mailto:sage [2021/01/16(土) 20:50:02.04 ID:wM/4uvwh0.net]
必要ないのを同じと表現したの

256 名前:デフォルトの名無しさん mailto:sage [2021/01/16(土) 21:12:53.28 ID:haZmUiAy0.net]
>>253
使い分ける意味がないのに同じでないのはないってどういう意味?

257 名前:デフォルトの名無しさん mailto:sate [2021/01/16(土) 21:22:36.09 ID:BbkPLu/V0.net]
ExcelのVBAにCurrentDbなんてないのは置いておくとしても
その文ってどっちもエラーになると思うんだが

258 名前:デフォルトの名無しさん mailto:sage [2021/01/16(土) 21:38:23.62 ID:wM/4uvwh0.net]
あ、すみません…
AccessVBAのスレってあったんですね。
申し訳ない。
あと1As」 って書いちゃってたけど「=」

259 名前:デフォルトの名無しさん mailto:sage [2021/01/16(土) 21:39:02.86 ID:wM/4uvwh0.net]
訂正
あと「As」って書いちゃってたけど当然「=」でした



260 名前:デフォルトの名無しさん mailto:sage [2021/01/16(土) 21:59:42.58 ID:BbkPLu/V0.net]
Accessで試したけどどっちも通って同じ結果だな

俺の予想では2はデフォルトプロパティの呼び出しになると思ったんだが
引数省略したら、かっこそのものも除去されて評価されてるのかもしれん

つかその教本ってなんだ?

261 名前:デフォルトの名無しさん mailto:sage [2021/01/16(土) 22:14:43.61 ID:BbkPLu/V0.net]
>>255
この例は同じ結果になってるけど、その二つはまったく同じではないよ
Accessで違いが出る例
Dim DB
Dim CurrentDb As Database
Set CurrentDb = Application.CurrentDb

Set DB = CurrentDb
MsgBox TypeName(DB)

Set DB = CurrentDb()
MsgBox TypeName(DB)

まあCurrentDbとかいう変数名は少なくともVBAではお勧めできないけどな

262 名前:デフォルトの名無しさん mailto:sage [2021/01/16(土) 22:21:15.40 ID:wM/4uvwh0.net]
CurrentDb自体を変数にするとか、それはもう別の話では

263 名前:デフォルトの名無しさん mailto:sage [2021/01/16(土) 23:00:55.60 ID:BbkPLu/V0.net]
前提を絞らなければ、動作に違いが出るかどうかの話だから別の話じゃない
変数名の良し悪しに関してはまあ別だが

つかその教本とやらを曝せ
俺的にはデータベースのインスタンスを取得する目的で後者の書き方とかなら、そっちのほうが問題だわ

264 名前:デフォルトの名無しさん mailto:sage [2021/01/17(日) 05:07:21.78 ID:Bpeq2DcA0.net]
実際にはやらない無理な方法で無理矢理話を混ぜ返したいだけで、
そもそも意図を汲んでない

265 名前:デフォルトの名無しさん mailto:sage [2021/01/17(日) 18:18:57.16 ID:6FyugFd+d.net]
初心者です
オートシェイプの名前を検索して置換できるコードを教えてください
調べてもオートシェイプ内のテキスト変換しかありません
お願いします

266 名前:デフォルトの名無しさん mailto:sage [2021/01/17(日) 20:37:25.77 ID:EfLIE7TKH.net]
>>264
オートシェイプの個数は
sheets("Sheet1").shapes.count

名前は
sheets("Sheet1").shapes(1).name

267 名前:デフォルトの名無しさん mailto:sage [2021/01/17(日) 21:03:01.02 ID:Bpeq2DcA0.net]
それはすでに使ってるシェイプの名前だろう
使ってない奴から選びたいんだろう

268 名前:デフォルトの名無しさん mailto:sage [2021/01/17(日) 21:25:06.25 ID:6FyugFd+d.net]
>>265
返信ありがとうございます
下記のオートシェイプに入力されたテキストを検索して置換するコードじゃなくてオートシェイプの名前を検索して置換したいのですがどこを直せばいいのでしょうか
Sub 置換() Dim tbox As Object Dim findStr As String Dim replaceStr As String Dim count As Long Dim i As Long Dim myDocument As Worksheet findStr = InputBox("置換対象文字列") replaceStr = InputBox("置換文字") Set myDocument = Worksheets(1) myDocument.Shapes.SelectAll
For i = 1 To myDocument.Shapes.count If myDocument.Shapes(i).Type = msoGroup Then Selection.ShapeRange.Ungroup.Select For Each tbox In Selection.ShapeRange tbox.TextFrame.Characters.Text = _ Replace(tbox.TextFrame.Characters.Text, findStr, replaceStr)
Next Selection.ShapeRange.Regroup.Select Else
Set tbox = myDocument.Shapes(i).TextFrame tbox.Characters.Text = _ Replace(tbox.Characters.Text, findStr, replaceStr)
End If
Next
End Sub

269 名前:デフォルトの名無しさん mailto:sage [2021/01/17(日) 21:32:27.18 ID:sTdEmPzt0.net]
聞く気ないだろw



270 名前:デフォルトの名無しさん mailto:sage [2021/01/17(日) 22:02:29.00 ID:Bpeq2DcA0.net]
そのようだなw

271 名前:デフォルトの名無しさん [2021/01/17(日) 22:10:02.50 ID:vD50J/Wf0.net]
適当にコードをコピペして聞きだそうとする手口

272 名前: mailto:sage [2021/01/17(日) 22:23:21.58 ID:gYjAP2D00.net]
質問です。よろしくお願いいたします。
VBA でスクレイピングを行っています

対象ページ:https://www.rakuten-sec.co.jp/web/market/data/rub.html ‥@
取得したい要素、 CSS セレクタで記載:document.querySelector("#cFx > table:nth-child(6) > tbody > tr:nth-child(1) > td.cell-02 > em").innerText  ‥‥A

しかし、Aは google chrome では取得できて、しかもコンソールでAを指定した場合も目的の値を取得できていますが、
Aを IE11 ->F12 で表示できるコンソールに食わせても、目的の値を取得できません。

質問1:google chrome におけるページ@のCSSセレクタAは、IE11 ではどのようになるのでしょうか?‥‥B
質問2:IE11 でBを取得する方法はどのようなものでしょうか?

以上よろしくお願いいたします。

273 名前:デフォルトの名無しさん [2021/01/17(日) 23:48:28.14 ID:7Jg8yd50M.net]
>>267
いろいろと修正箇所が多いので
https://qiita.com/Umaremin/items/b7726fa7340c7f175e77
このサイトのコードの
4行目の後に
Dim findStr As String, replaceStr As String
findStr = InputBox("置換対象文字列")
replaceStr = InputBox("置換文字")
'各Shapeに対する処理の2箇所に
shp.Name = Replace(shp.Name, findStr, replaceStr)
を追加すればうまく出来ると思う

ちなみに、理由は知らないけどリボンのページレイアウトの中のオブジェクトと選択と表示のシェイプの名前を変えずにデフォルトのままだとVBAが出す名前が英語表記になるので注意

274 名前:デフォルトの名無しさん mailto:sage [2021/01/18(月) 02:58:44.09 ID:pyrT8iNXH.net]
ちょっとソースを整理

Sub 置換()
  Dim tbox As Object
  Dim findStr As String
  Dim replaceStr As String
  Dim count As Long
  Dim i As Long
  Dim myDocument As Worksheet

  findStr = InputBox("置換対象文字列")
  replaceStr = InputBox("置換文字")
  Set myDocument = Worksheets(1)
  myDocument.Shapes.SelectAll

  For i = 1 To myDocument.Shapes.count
    If myDocument.Shapes(i).Type = msoGroup Then
      Selection.ShapeRange.Ungroup.Select
      For Each tbox In Selection.ShapeRange
        tbox.TextFrame.Characters.Text = Replace(tbox.TextFrame.Characters.Text, findStr, replaceStr)
      Next
      Selection.ShapeRange.Regroup.Select
    Else
      Set tbox = myDocument.Shapes(i).TextFrame
      tbox.Characters.Text = Replace(tbox.Characters.Text, findStr, replaceStr)
    End If
  Next
End Sub

275 名前:デフォルトの名無しさん mailto:sage [2021/01/18(月) 06:51:20.31 ID:hmFdo1dud.net]
>>272
言われた通りにやったら出来ましたありがとうございます。
自分がやりたかったことと同じでした。
>>273さんも整理してくれてありがとうございます。

276 名前:デフォルトの名無しさん mailto:sage [2021/01/18(月) 12:58:34.46 ID:JT9EgKXH0.net]
>>271
漏れが、Ruby, Selenium WebDriver, Chrome でアクセスしたら、空要素が返ってきた

CSS の :nth-child() 擬似クラスは、
兄弟要素のグループの中での位置に基づいて選択します

https://developer.mozilla.org/ja/docs/Web/API/Document/querySelectorAll
Document.querySelectorAll()

elementList = parentNode.querySelectorAll(selectors);
指定された selectors が CSS 擬似要素を含む場合、返されるリストは常に空になります

エラーログ

"jQuery.Deferred exception: Cannot read
property 'msie' of undefined TypeError: Cannot read property 'msie' of undefined

at HTMLDocument.<anonymous> (https://www.rakuten-sec.co.jp/web/shared/js/app/jquery.share-button.js?20160125:5:415)
at l (https://www.rakuten-sec.co.jp/web/shared/js/jquery.js:2:29375)
at c (https://www.rakuten-sec.co.jp/web/shared/js/jquery.js:2:29677) undefined",
source: https://www.rakuten-sec.co.jp/web/shared/js/jquery.js (2)

ひょっとして、そのサイトがバグっているのかも?
それかログインなど、特別な認証が必要なのかも?

277 名前:275 mailto:sage [2021/01/18(月) 13:03:01.53 ID:JT9EgKXH0.net]
それか、

jquery.share-button.js
と書いてあるから、

jQuery で作った画面か何かの、ボタンをクリックするなどの、
人間による操作が必要なのかも?

278 名前:デフォルトの名無しさん mailto:sage [2021/01/18(月) 13:14:48.80 ID:ipljQC5/a.net]
まあでもVBA関係ないな

279 名前:275 mailto:sage [2021/01/18(月) 13:39:24.37 ID:JT9EgKXH0.net]
そのサイト固有の問題かも。
それに、IE 11 はサポート切れで、多くのサイトで、まともに動かない

基本、Chrome しか動かない。
Chrome以外のブラウザは、まともに動かない



280 名前: mailto:sage [2021/01/18(月) 23:04:09.16 ID:lUOrFzyB0.net]
>>275,276,278
検証いただきありがとうございます
なにぶん、単に株価等をスクレイピングするためだけに年始から web スクレイピングを始めたばかりなので、難しいことはよくわかりません‥‥
やっぱり HTML5/CSS の基礎本からじっくりやるしかないでしょうか

引き続き、なにかコメントがありましたらよろしくお願いいたします‥‥

>>277
VBA で
Dim objIE As InternetExplorer
Set objIE = New InternetExplorer
objIE.navigate ur
時間待ちl
Dim htmlDoc As HTMLDocument
Set htmlDoc = objIE.document
Dim elementText As String
elementText = htmlDoc.querySelector("#cFx > table:nth-child(6) > tbody > tr:nth-child(1) > td.cell-02 > em").innerText
と書いていますが、それでもやっぱり VBA は関係ないのでしょうか?

281 名前:デフォルトの名無しさん mailto:sage [2021/01/18(月) 23:19:34.42 ID:froKP66m0.net]
スクレイピングが目的なら悪いことは言わないから大人しくpythonあたりにしとけ

282 名前:デフォルトの名無しさん [2021/01/19(火) 00:16:19.06 ID:9X7jktdiM.net]
今月からpythonを始めてサイトから文字を取ってきてエクセルにぶち込むくらいなら一週間で出来たな
その後のエクセルの処理はもちろんVBAだけどなw

283 名前:デフォルトの名無しさん mailto:sage [2021/01/19(火) 00:26:22.17 ID:i//ZhdNzH.net]
最近のホームページはブラウザごとに動作が違うから、本などを参考にするなら同じブラウザを使わないと、
本質と無関係なところではまって時間を無駄にすることになる

あと株価なんかスクレイピングしてもまったく意味ないぞ
どんだけ大量の数字を集めたところで、それで利益が出せると思ったら大間違いだからな

284 名前: mailto:sage [2021/01/19(火) 01:15:30.84 ID:LIV1Afk50.net]
>>282
>どんだけ大量の数字を集めたところで、それで利益が出せると思ったら大間違いだからな
そのとおりだと私も思います、ただし、さや取り(裁定取引)を米国株に適用するのなら商機あり、とみています
さや取り(裁定取引)とは:https://investars.jp/sayatori.php

285 名前:デフォルトの名無しさん mailto:sage [2021/01/19(火) 06:36:37.01 ID:6NIqY8sOM.net]
そもそも自動売買に使う頻度でスクレイピングって規約確認したのか?

286 名前:275 mailto:sage [2021/01/19(火) 07:21:09.11 ID:JrdPscbl0.net]
>>275
を修正

275は、ヘッドレスモードで動かしたので、エラーになったけど、
表示させて動かしたら、エラーにならなかった

でも、要素は取得できなかった

IE11 は、もうサポート切れじゃないの?
使わない方が良い

基本、Chrome を使うべき!

287 名前:275 mailto:sage [2021/01/19(火) 07:23:53.98 ID:JrdPscbl0.net]
勝手に頻繁にスクレイピングしたら、業務妨害で逮捕されるよ

基本、どの会社のサービスでも、
相手と契約して、API を使わないといけない

288 名前:275 mailto:sage [2021/01/19(火) 07:51:13.37 ID:JrdPscbl0.net]
そもそも、そのページ内に、id="cFx" が存在しない

var elems_1 = document.querySelectorAll( '#cFx' );
var elems_2 = document.querySelectorAll( '#cFx > table:nth-child(6) > tbody > tr:nth-child(1) > td.cell-02 > em' );
console.log( elems_1, elems_2 );

Chrome のF12 開発者ツールで実行しても、どちらも取得できない

289 名前:275 mailto:sage [2021/01/19(火) 08:28:20.74 ID:JrdPscbl0.net]
Chrome のF12 開発者ツールのコンソール画面を開くと、幾つかエラーが出てる

ログインしてるとか、営業時間内とか、
何かの条件が揃わないと、

そのページ内に、id="cFx" が現れないのかも



290 名前: mailto:sage [2021/01/19(火) 23:14:02.19 ID:LIV1Afk50.net]
>>286
IB証券との契約を検討中です
nyse と nasdaq 両市場の全上場株式を取得する必要はありますが、頻度は一社につき一日に一回だけでいいのが裁定取引のいいところだと思っています

291 名前:275 mailto:sage [2021/01/20(水) 06:54:28.87 ID:sOzWFlEJ0.net]
エンジニアチャンネル・粟島が、
2つの取引所の価格差を利用して、Ruby で鞘取りしてる

【検証】プログラミングでビットコインを自動売買すると一週間でいくら稼げるのか?
https://www.youtube.com/channel/UCMMjv61LfBy5J3AT8Ua0NGQ

292 名前:デフォルトの名無しさん mailto:sage [2021/01/20(水) 19:14:01.82 ID:WKaEu4ler.net]
初心者です。
質問をさせてください。
A列のデータをソートして、境目に改ページを適用するVBAを組みました。
その後にもう1つ動作を組み込みたいのですが、可能でしょうか?
組み込みたい動作は、
改ページの境目の1つ上のC列の内容をF1セルに都度反映させる。
イメージとしては、改ページで分けた内容ごとにタイトル行の一部を変えたい、といった感じです。
例:都道府県別に改ページをし、
東京の場合はタイトル行に東京と入れ込む。
そもそも無理なのかもしれませんが、お伺いしたく。。

長文失礼しました。
ご教示いただけますよう、お願いいたします。

293 名前:デフォルトの名無しさん mailto:sage [2021/01/20(水) 20:49:26.31 ID:j7C4dot+0.net]
まずその通りやってみればいいのに

294 名前: mailto:sage [2021/01/20(水) 20:58:51.72 ID:TIrvz66u0.net]
>>290
面白い動画を紹介いただきありがとうございました。
しかし裁定取引では、売りと買いの両方ができないと実現は困難かと考えています
BTC を売りから入ることは、たしか、まだできなかったのではないかと思います

295 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 21:48:26.77 ID:YIL/x+Jj0.net]
ソルバーが全然うまくいかないし会社の人も誰もソルバー自体知らんかった
マイナーか…

296 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 02:14:04.86 ID:JMbV/GNCa.net]
何て会社?

297 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 02:36:21.59 ID:hl68e8TDH.net]
ソルバーは基本原理がわかってないと、どんな計算でもできると思い込んでるとはまる

298 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 08:31:07.53 ID:2tHgWLf00.net]
上司と折りがあわずに部署異動になったのに
その職場の連中がlineでマクロが使えんくなったとか簡単に直せるかとか聞いてきて本当にうざい
自分も覚えてないの一点張りで返してるけど
Excelの数式すらまともに使えずに開発タブもチェックしてない連中に直せんわ
連絡してくんなよ

299 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 08:35:33.62 ID:+nZCsLp6M.net]
で、質問は何ですか?



300 名前:デフォルトの名無しさん [2021/01/22(金) 08:41:50.70 ID:hJPaHw/b0.net]
すいません、教えてください。
Excel VBAでIEを制御しています。IEからデータをもって来てExcelに書き込んだり、
逆にExcel上のデータをIEに書き込んだり。
で、そろそろIEも駆逐されるみたいなのでEdgeとかChromeに対応させなくてはなりません。
そのままでは無理で、Web Driverとか、Selenium Basicが必要。
ここまであってますか?
で、これでEdgeとかChromeに対応した.xlsmを作ったとして、配布するとしたら、配布された側のPCにも
Web Driverとか、Selenium Basicをいれないといけないですか?

301 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 10:48:34.97 ID:NBj8+FQEd.net]
エクセル VBA マクロで良い参考書はありますか?

302 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 10:54:17.14 ID:Ti3taKZXr.net]
まだブラウザ操作しようなんてとこあるのか

303 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 12:22:32.49 ID:I4Aue8uTa.net]
>>296
できると思ってんだけどなー、できないやつなのかもしれんな

304 名前:299 [2021/01/22(金) 14:11:09.33 ID:hJPaHw/b0.net]
>>301
Excel と IE というどのPCにでも入っているもので使えるので、5年前くらいからやってます・・
今回、PCに何かインストールしないとできなくなるみたいなので、どうしようかと・・

305 名前:デフォルトの名無しさん [2021/01/22(金) 14:15:47.27 ID:y6abuyBz0.net]
どうしようもないだろ
はい、次

306 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 14:41:53.73 ID:hl68e8TDH.net]
>>303
何も追加インストールせずにEdgeをコントロールする方法ならここに書いてある
サンプルは32bit版だけどPtrsafe追加だけで64bitでも動く
https://www.ka-net.org/blog/?p=7921

ただしこの方法はWindowsやEdgeのバージョンが上がると使えなくなる可能性があるので注意

307 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 15:06:57.75 ID:KA18g7jM0.net]
Ruby, Selenium WebDriver, Chrome が一般的

308 名前:299 [2021/01/22(金) 16:52:44.80 ID:hJPaHw/b0.net]
>>305
ありがとうございます。最新のChromeベースのEdgeでは使えないことが判明しました・・

>>306
rubyというのを使う場合、実際に動かすときはxlsmファイルと別に何かプログラムを記載した
ファイルを準備し、そのファイルを実行するというイメージになるのでしょうか?

309 名前:306 mailto:sage [2021/01/22(金) 17:48:37.37 ID:KA18g7jM0.net]
例えば、ヤフーに自動ログインするなら、
ユーザー名を入力して、ボタンをクリック、
パスワードを入力して、ボタンをクリック

以下のコードを、a.rb に書いて、ruby a.rb みたいに実行する。
パソコン内に、Ruby の実行環境を構築しないといけないけど

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 "https://login.yahoo.co.jp/config/login_verify2?.src=ym"

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 # ボタンをクリック



310 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 19:04:19.47 ID:fPx0q4lA0.net]
>>308
アホか?
WebDriver使って良いならVBAだって出来るだろwww

311 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 19:10:53.50 ID:AXkriLC/M.net]
seleniumでググるとPythonのほうが出てくると思うんだが本当にRubyのほうが一般的か?

312 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 19:14:00.08 ID:j9mQzeTK0.net]
狭い世界を一般的という人はどこにでもいる

313 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 19:26:14.35 ID:AXkriLC/M.net]
環境のこと考えるならGASかpowershellを検討してみては?

314 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 23:52:36.81 ID:hl68e8TDH.net]
>>307
最新のEdge (バージョン88.0.705.50 Chromium) で動いた

315 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 00:14:35.39 ID:tp3qQjJz0.net]
>>313
それEdge じゃねえだろ。
今のEdgeはInternet Explorer_Server無いぞ。

316 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 04:24:33.18 ID:W5gOUdwX0.net]
できる奴はネットも本も見ない、わからない事はF1押して調べるだけ

これ定説

317 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 04:56:15.16 ID:xJNbQORc0.net]
みんながそんな熟練者じゃないんだし
俺みたいなど初心者をここで助けてくれた人もいる
平和にいこう

318 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 09:29:09.37 ID:W5gOUdwX0.net]
そうですよねやっぱ
どこかの知恵袋と違って、ここはみんな優しく解説までしてくれる。器大きいぜ

319 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 11:21:37.02 ID:XQqwzCqOd.net]
どの方法だってバージョンアップで使えなくなる可能性はある
CSSやJavaScriptが必要なければXHRオブジェクトが無難

完全にデファクトスタンダードと言えるブラウザが今は存在しないから、VBAでスクレイピングは鬼門になりつつある
今はまだWindowsマシンには必ずIEが入ってるから、しばらくはIEでやってくのがいいんじゃないかなあ



320 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 12:55:12.09 ID:E44LngeNd.net]
俺が昨日、勉強したことを共有するぞ
VBAの記述の仕方は、オブジェクト.プロパティの順番だ
覚えておけよ

321 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 12:56:50.53 ID:E44LngeNd.net]
MsgBox でTESTと表示できたときの感動ったらなかったね!
これから、少しずつ勉強するぞ

322 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 18:45:02.47 ID:H5pOJUEN0.net]
>>305
それIEでも使うな。
よくわからんけど、F12で中が見られない子ウインドウが出るサイトとかある。

323 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 21:45:57.51 ID:AoWSUa07d.net]
>>321
それ単なる画像じゃね?

324 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 23:31:46.72 ID:H5pOJUEN0.net]
>>322
ObjectFromLresultとgetElementByで値取れるから画像じゃないと思う。
どういう仕組みのウインドウなのか知らんけど。

325 名前:デフォルトの名無しさん mailto:sage [2021/01/24(日) 05:01:50.09 ID:O96X//w/0.net]
田中君
広瀬君
桜井君
松岡君

326 名前:デフォルトの名無しさん mailto:sage [2021/01/24(日) 11:41:17.66 ID:NPfUvm+L0.net]
>>323
それで取れるならF12でも取れるんじゃね?
それかF12押してる対象が違うか。

327 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 00:06:00.16 ID:bvf1oedN0.net]
>>325
クリックして、アクティブ&最前面にしてF12押しても何も出てこないんだよね。

328 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 01:12:50.11 ID:YwFiLI6Vd.net]
>>326
エロサイトでも怒らないから、ちょっとそのサイト晒して

329 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 02:51:52.41 ID:jiG8/Aof0.net]
>>326
Fが12個表示されてないか?



330 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 08:04:15.56 ID:rs7ltanux.net]
F*ck F**k FFFFF**k

331 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 16:24:41.99 ID:q3mmuO0LH.net]
下記の4行で問題なくIEでURL開けたのですが、

Dim objIE As InternetExplorer
Set objIE = New InternetExplorer

objIE.Visible = True
objIE.Navigate "aaa.com/bbb.html"

保存する部分のプログラムがネット上で見つかりません。
hogehoge.htmlでc:\でもエクセルファイルパスでも。

開ききるまでの Do Loop とか、参照の追加とか、
他の必要な事項はわかったのですが、「保存」だけがわかりません。

お願いします。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<254KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef