Excel VBA 質問スレ Part69at TECH
Excel VBA 質問スレ Part69 - 暇つぶし2ch99:デフォルトの名無しさん
20/12/23 11:46:56.79 o2ScoeZIM.net
>>98
RangeをCellsに変えてみ

100:デフォルトの名無しさん
20/12/23 15:07:17.52 Xl4mgk4Md.net
いつものあいつ確定

101:デフォルトの名無しさん
20/12/23 15:43:35.91 FcIaoKlm0.net
いつものあいつが好きな奴確定

102:デフォルトの名無しさん
20/12/23 15:51:50.15 Xth9/5BD0.net
いつものあいつは人気者
URLリンク(store.line.me)

103:デフォルトの名無しさん
20/12/23 18:16:20.38 j3OsNt/k0.net
>>99
ありがとうございます

104:デフォルトの名無しさん
20/12/23 18:19:10.98 j3OsNt/k0.net
>>98
早速変更したらできました!!
本当に感謝します
自分の初心者じみた凡ミスですね
ありがとうございます
こころの優しい御仁

105:デフォルトの名無しさん
20/12/23 20:48:51.52 ZakT/bFP0.net
初心者じみた…?

106:デフォルトの名無しさん
20/12/23 21:42:26.23 +z0aXtBh0.net
ネタかと思って傍観していたが、久しぶりに質問スレっぽくてホッコリしたわ

107:デフォルトの名無しさん
20/12/23 23:00:34.90 igbw91HoM.net
完全にいつものあいつじゃん

108:デフォルトの名無しさん
20/12/23 23:04:58.03 ZakT/bFP0.net
一見相手を持ち上げてるようで馬鹿にしてるいつもの感じ

109:デフォルトの名無しさん
20/12/24 18:03:54.48 ib8ApZa60.net
xlsで共用管理してた物品リストを
現場に飛ばされて激怒した仕事できないおばちゃんが
シートの保護にパスワードをかけてそのまま年末休みに入った
ネットで拾ったプロージャで
パスワードを解除した俺が神扱い

110:デフォルトの名無しさん
20/12/24 19:35:35.16 i3RIeYBl0.net
ならこんなところで虚しいアピールしなくていいよ

111:デフォルトの名無しさん
20/12/24 20:31:22.57 OvKwRG9WM.net
首案件か…

112:デフォルトの名無しさん
20/12/24 21:20:52.76 6nJjzXUX0.net
保護かけただけなら実害ないじゃないか

113:デフォルトの名無しさん
20/12/24 23:15:25.57 ViSodmdc0.net
許可なく改竄するのってどうかな

114:デフォルトの名無しさん
20/12/25 00:16:09.85 OfYljKJA0.net
ユーザーフォーム1のボタンを押すと開始する処理をユーザーフォーム2から起動する方法ってない?
クラスに書いとかんとだめなのかな

115:デフォルトの名無しさん
20/12/25 02:22:11.64 Zgx05nqca.net
書く場所かえればいいのに、いつもの人か?

116:デフォルトの名無しさん
20/12/25 02:34:13.17 oy51KHzs0.net
標準モジュールに書いてCallではダメか?

117:デフォルトの名無しさん
20/12/25 04:03:39.34 OfYljKJA0.net
>>116
そっか、たしかに標準モジュールに移植すれば良かったか

118:デフォルトの名無しさん
20/12/25 19:42:46.45 M+L+LuRT0.net
>>117
Privateを取っ払ってただのSubにすれば、
UserForm1.ボタン_Clickで実行できる。

119:デフォルトの名無しさん
20/12/26 11:08:58.12 xVJ70HL70.net
どなたかお教えください。
e-Gov法令検索
URLリンク(elaws.e-gov.go.jp)
というサイトでエクセルにリスト化されている法令を検索し,
ダウンロードすることを試みたいと考えております。
.Navigate でサイトを開き,
.document.getElementById("searchTextBox").Value = "法令名"
.document.getElementById("searchBtn").Click
で,該当の法令を検索させるまではできました。
その後,検索結果を見つけてURLを取得するところでつまずいております。
.document.getElementsByTagName
とかをどのように指定したらよいのでしょうか?
どうぞよろしくお願いいたします。

120:デフォルトの名無しさん
20/12/26 13:00:08.72 JDXDJsEV0.net
>>119
そよのサイトでリスト化されているもののダウンロードはエクセルには向いてないので
手作業でやったほうがいいだろう

121:デフォルトの名無しさん
20/12/26 14:44:21.47 1Jq10AwVM.net
Javaを覚えろってことか

122:デフォルトの名無しさん
20/12/26 14:52:02.96 CuJQon1q0.net
Javaを覚えろってことよ

123:>>119
20/12/26 15:35:46.04 xVJ70HL70.net
>>120
アドバイスありがとうございます。
しかしながら100件くらいあって,定期的にチェックして(法令が更新されることがあるので)ダウンロードするとなると
つらいです。
なんとかどうぞお願いします。

124:デフォルトの名無しさん
20/12/26 16:34:12.06 AsvwShK0H.net
>>123
ちょっとやってみるから、何か一つ検索キーワード教えて
あと検索条件はデフォルトのままでいいの?

125:>>119
20/12/26 18:32:04.58 xVJ70HL70.net
>>124さん
どうもありがとうございます。
キーワードは
予防接種法
検索条件はデフォルトのままでいいです。
お願いします。

126:デフォルトの名無しさん
20/12/26 21:38:03.20 AsvwShK0H.net
>>125
ざっくり見たところ、そのサイトはスタイルシートで検索結果を渡してWebAPIでダウンロードする方式だからGetElementsなどは使えないしURLもどこにも書いてない
WebAPIを呼び出すフォーマットは、例えばこんな感じになってる
URLリンク(elaws.e-gov.go.jp)
このURLをブラウザのアドレスバーに入れるとPDFのダウンロードが始まる
VBAでできないことはないけど難易度はけっこう高い
素人にはおすすめしない

127:デフォルトの名無しさん
20/12/27 00:06:28.37 V6kYHqJF0.net
Ruby なら、curl コマンドとか、open-uri でダウンロードできる
require 'open-uri'
html = `curl https://何々`
url = "https://何々"
html = open( url )
puts html.read

128:デフォルトの名無しさん
20/12/27 01:58:09.26 s6cy7Ti00.net
なぜVBAスレでrubyが

129:127
20/12/27 05:17:11.18 V6kYHqJF0.net
Windows 10 にも、curl が入った
コマンドプロンプトで、
where curl
と入力すると、
C:\Windows\System32\curl.exe

130:デフォルトの名無しさん
20/12/27 08:26:34.69 CaXXLtf40.net
なら、
コマンドプロンプト
require
この3つをNGワードに追加。捗る。

131:デフォルトの名無しさん
20/12/27 08:54:36.12 73ofl+2yH.net
URLを指定してダウンロードする方法の質問なんか誰もしてないのに、いきなり独り言
ルビー使いはあたおかだとよくわかる

132:デフォルトの名無しさん
20/12/27 09:21:25.61 iG00duHM0.net
名門校で球拾いより弱小校でエースのほうが楽しいから
まあ関係のない部活に来てたらウザがられるだけだが

133:デフォルトの名無しさん
20/12/27 09:39:02.91 DRufeyQV0.net
初心者がもの凄いものをいきなり作ろうとしてここに質問すればできると思っているいつもの人

134:デフォルトの名無しさん
20/12/27 10:57:38.42 Km9iTMMx0.net
>>118
おおおお、そういうことかー
これなら標準モジュールに移植しなくても別のユーザーフォームから起動できるね
ありがとうございます!こういう豆知識待ってました

135:デフォルトの名無しさん
20/12/27 18:38:53.38 kvcCvRIC0.net
privateの意味は豆知識ではなく一般常識ては?

136:デフォルトの名無しさん
20/12/28 00:09:12.39 eYw4/aNg0.net
ユーザーフォーム2からユーザーフォーム1
ボタンを押したようにできることが豆知識だったのよ
自分にとってはね

137:デフォルトの名無しさん
20/12/28 02:13:46.08 zq2Mh9UF0.net
>>133
初心者ではなく初心者から脱却する気の無い人間が

138:デフォルトの名無しさん
20/12/28 11:52:39.77 D2Ae0vPz0.net
>>136
分かりにくくなるだろうな
そのフォーム1の処理の中にフォーム2の処理が混ざっていて・・・みたいな

139:デフォルトの名無しさん
20/12/28 12:18:01.21 tqv11FjK0.net
単体で使いたい時もあるけど
ある処理の部品としても使いたいとかかな

140:デフォルトの名無しさん
20/12/28 12:46:17.64 2cxQATNW0.net
それなら共通部品として切り出して
フォーム1から呼ぶ、2から呼ぶってしないと後々メンテで死ぬパターン

141:デフォルトの名無しさん
20/12/28 20:20:11.64 VGvj7ZmYa.net
今FTPするのに諸事情あってwininetを利用してるんだけど
これってファイルのディレクトリ移動は無理?
ちなみにLINUXサーバ
例えば
/work/testdir/test.log

/work/movetodir/test.log
って感じで移動したい
コピーした後deleteすればいいのでコピーでもオッケー
今はスマホからならなので詳細ソースは勘弁して
試したのはFtpPutFileやFtpGetFileで
fromとtoをそれぞれファイル名やフルパスで入れ替えたりしてみたんだけど
まぁだめだった
FtpMoveFile的なものはないですか?

142:デフォルトの名無しさん
20/12/28 20:23:27.00 VGvj7ZmYa.net
ちなみにBASPやWINSCPとかは規約上使用できないです
ない場合はローカルに一時的にgetした後別のディレクトリにPutすると言う力技も考え中

143:デフォルトの名無しさん
20/12/28 20:51:35.01 VGvj7ZmYa.net
なんとなく自己解決
やはりFTPの仕様上Moveはダメっぽい
力技しか無いかなぁ

144:デフォルトの名無しさん
20/12/29 04:24:04.54 r4ksfnFx0.net
シートを開いたときにシート上のコンボボックスにリストを読み込ませたいんですけど、
シート上にある文字列を読み込むのではなくマクロのみで特定の文字列を読み込ませることって出来ますか?

145:144
20/12/29 04:50:38.55 r4ksfnFx0.net
DirectXのコンボボックス使えば一発でした……すみません……

146:144
20/12/29 06:16:00.81 r4ksfnFx0.net
ActiveXのコンボボックス2つを設置し、以下のようにシートのところに記述後、ComboBox1のプルダウンボタンをクリックすると、
実行時エラー "380":
Valueプロパティを設定できません。プロパティの値が無効です
と表示され、「ComboBox2.Value = "G6"」がハイライト表示になるのですが、対処法が分かりません。ご教授お願い致します。
---------------------------------------------------
Option Explicit
Private Sub ComboBox1_Change()
ComboBox2.Value = "G6"
End Sub
Private Sub ComboBox1_DropButtonClick()
ComboBox1.List = Array("A", "B", "C", "D")
End Sub
Private Sub ComboBox2_DropButtonClick()
If ComboBox1.Value = "A" Then
ComboBox2.ListFillRange = "G6:G9"
Else
ComboBox2.ListFillRange = "G6:G8"
End If
End Sub

147:144
20/12/29 06:25:34.42 r4ksfnFx0.net
すみません、Stylesプロパティが2 - fmStyleDropDownListだったからValueに代入できなかったんですね……
ComboBox2.ListIndex = 0 にしたら直りました。お目汚しすみません。

148:デフォルトの名無しさん
20/12/29 15:15:22.81 eRbfzaAa0.net
コンボ1→鈴木一郎
コンボ3→鈴木専務
      鈴木部長
      須藤係長
      杉村課長
コンボ3には先頭一致で「す」を検索し絞り込みで表示したいのですがむずかしいでしょうか?あるいは漢字一文字で検索でもいいのですがMatchFound関数を使用するのではないかと思うのですが検討もつきません
Option Explicit
Private Sub ComboBox2_Change()
End Sub
Private Sub UserForm_Initialize()
Dim r As Long
ComboBox1.ColumnCount = 2
For r = 1 To Sheet3.Range("A" & Rows.Count).End(xlUp).Row
ComboBox1.AddItem Range("DB!A" & r).Value
ComboBox1.List(r - 1, 1) = r 'リストの2列目にシートの何行目かを記憶
Next
End Sub
Private Sub ComboBox1_Change()
Dim r As Long
Dim c As Integer
r = ComboBox1.List(ComboBox1.ListIndex, 1) '選択したリストの2列目(シートの何行目か)
ComboBox2.Clear
For c = 2 To Sheet3.Cells(r, Columns.Count).End(xlToLeft).Column
ComboBox2.AddItem Sheet3.Cells(r, c).Value
Next
End Sub

149:デフォルトの名無しさん
20/12/29 15:20:48.46 xvN7YPpo0.net
インデントしてない時点で(キリ

150:デフォルトの名無しさん
20/12/29 15:24:36.38 1ep2xIo7M.net
>(キリ
ウザっ

151:デフォルトの名無しさん
20/12/29 16:02:20.40 NKmqU0kK0.net
>>148
リスト全部チェックして一致したものを追加するなりシート上でフィルタした結果を追加するなりしたらいいんでないの

152:デフォルトの名無しさん
20/12/29 16:26:47.99 NKmqU0kK0.net
思ったんだが、そのコード自分で読み込んだり動き確認したりしてないだろう…

153:デフォルトの名無しさん
20/12/29 16:30:16.32 9/T630Lp0.net
質問するのが趣味なんだろ

154:デフォルトの名無しさん
20/12/29 16:53:27.47 dODwImwo0.net
読み仮名でソートすればいいんでないの
エクセルの並び替えもこうなるし

大学(おおきいで変換)


大学(だいで変換)


155:デフォルトの名無しさん
20/12/29 18:16:49.35 eRbfzaAa0.net
すいません!
質問するレベルにも到達してなくて
シート上で一致させるなら簡単ですね
質問が趣味ではないのですが
業務で必要なもので初心者ながら悪戦苦闘しています
質問のしかたが悪かったと思います
ちょっと考えて質問したいと思います

156:デフォルトの名無しさん
20/12/29 18:20:31.42 U6Tn+IN30.net
いつものあいつだろ

157:デフォルトの名無しさん
20/12/29 18:24:55.74 NKmqU0kK0.net
いつものやつだった・・・

158:デフォルトの名無しさん
20/12/29 18:26:09.51 eRbfzaAa0.net
前に質問した時も
誰かと勘違いされたような・・・
誰ですか?
VBAスレには
4回ぐらいしか書き込んだりしてないのですが?
どういった人と勘違いしてるんですか?
荒らしみたいな人いるんですか?

159:デフォルトの名無しさん
20/12/29 18:57:29.26 lS8hY7UX0.net
話題に上ると嬉しそうに反応すんなよw

160:デフォルトの名無しさん
20/12/29 20:40:10.06 eRbfzaAa0.net
>>159
だからここには4回ぐらいしか来たことない
どういったら信じてくれるのかな
初めてだわ
荒らしと間違えられたの
どんな荒らしなの?
普通に書き込んでるつもりなんだけど?
何か気に入らなかった?
3日前ぐらいに書き込んだ時も勘違いされたけど
ホント勘弁して

161:デフォルトの名無しさん
20/12/29 22:12:23.41 DC9TsoaB0.net
荒らしと同じようなことを書くから間違われるのでは?

162:デフォルトの名無しさん
20/12/29 22:16:06.03 mchvBN/f0.net
真っ赤な帽子にキラリとヒカル

163:デフォルトの名無しさん
20/12/29 22:16:31.70 eRbfzaAa0.net
>>161
どこがどう悪かったのか教えてください

164:デフォルトの名無しさん
20/12/29 22:29:26.63 dODwImwo0.net
おかしな事言う人がいるな
でスルーしてたらいいと思うよ
今のままだと思うツボ

165:デフォルトの名無しさん
20/12/29 23:51:56.35 xvN7YPpo0.net
>>78
わからぬ。ホムペとかに時々セミナーの写真とか載ってるからそれを見て判断
性格まで瓜二つだからすぐわかるぜw

166:デフォルトの名無しさん
20/12/30 01:27:15.02 RXqudRq00.net
俺も前になんかの質問したときにいつものアイツって言われた事があったから逆になんでもかんでもいつものアイツって言いたがる荒らしが常駐してるもんだと思ってた

167:144
20/12/30 01:52:55.19 Oh92F1JH0.net
シートを開くと「オブジェクトが必要です。」だの「メソッドまたはデータメンバが見つかりません。」だのと表示されるんですけど、特に修正することもなく動作している(ように見える)んですけど、これ何が悪いんですかね?

168:デフォルトの名無しさん
20/12/30 03:31:25.87 AqLm+Pp2M.net
PERSONALに余計な書き込みしちまっつてるんじゃね。
再表示させて全部消すんだ。

169:144
20/12/30 03:53:07.20 Oh92F1JH0.net
Personal.xlsですかね?



170:しましたがそもそもファイル自体存在しないみたいです……



171:144
20/12/30 03:58:33.29 Oh92F1JH0.net
なんかよく分かんないんですけどエラー行で指定してたコンボボックスを消して再設置したら直りました
助言ありがとうございました

172:デフォルトの名無しさん
20/12/30 05:38:22.32 AqLm+Pp2M.net
毎回コンボボックス言ってるなあんた

173:144
20/12/30 05:47:42.87 Oh92F1JH0.net
なんかコンボボックスってクセ強くないですか?
すごく弄りにくくてややこしいです

174:デフォルトの名無しさん
20/12/30 08:41:09.68 mfFqR3/N0.net
クセ強いって言うか、1クリックで2回イベント発動するのがなぁ・・
いちいちIf Flag Then Exit Sub とかいれて、
無理矢理1回しか動かないようにしてるけど、
他にいい方法ないもんかね

175:デフォルトの名無しさん
20/12/30 08:43:56.99 mfFqR3/N0.net
あ、直前に Flag = Not Flag な

176:デフォルトの名無しさん
20/12/30 11:23:33.25 hFnpG/QKH.net
>>173
イベントハンドラは必ず先頭でEnableEvents=Falseするんだよ
そして時間のかかる処理はハンドラの中へ書かずに別プロシージャに飛ばす

177:デフォルトの名無しさん
20/12/30 13:02:57.82 mfFqR3/N0.net
>>175
ごめん、1クリックで2回じゃなくて、
選択肢の表示で1回、選択で1回で計2回の間違い
なのでイベントOFFで逃げられない

178:デフォルトの名無しさん
20/12/30 16:14:15.56 8iwO+LiN0.net
状態管理用のフラグ作って管理している

179:144
20/12/30 23:59:22.86 Oh92F1JH0.net
>>173
マジすか
もしかしてDropButtonClickイベントに.Clearと.AddItemを入れたら選択してもボックス内に表示されなかったりするのって原因それですかね

180:デフォルトの名無しさん
20/12/31 08:04:03.76 qAEGulJg0.net
>>178
そういうの作りながら動作確認しないの?

181:デフォルトの名無しさん
20/12/31 08:17:09.79 sAh4R5unH.net
ネットにサンプルがいくらでも転がってんだから、素直にコピペしとけばいいのに

182:デフォルトの名無しさん
20/12/31 08:39:17.53 5hauEQny0.net
直ぐにネットの野良コードを見て何も考えずにコピペコピペする人は決して【上級者】ではありません!(キリ

183:デフォルトの名無しさん
20/12/31 10:43:23.83 yfYCC+Dx0.net
>>178
多分そう
>>179
最初はそんな罠があると思わないからな
俺は、間にMsgBox入れたら2回出たのでやっと気づいたわ

184:デフォルトの名無しさん
20/12/31 10:53:25.38 8vAoqqdn0.net
罠なんてのは理解してる人間が陥るものであってただの知識不足には何の関係もない
想定の動きしなかったら一つ一つ確認するのは最低限のことだ

185:デフォルトの名無しさん
20/12/31 11:11:12.57 sAh4R5unH.net
プログラムは決して思った通りには動かず、書いた通りにしか動かない
思った通りに動かない時、それは思った通りに書けてない時

186:デフォルトの名無しさん
20/12/31 11:33:07.51 yfYCC+Dx0.net
いや、Windows Update直後に動かなくなるとか普通にあるから
あとVBSだが、最近InputBoxで第1引数の文字が出ないことがある
どこかのファイルから文字を読み込んでるとかじゃなく、
引数に直接指定してるのに
起動しなおすと出るから間違ってはいない

187:デフォルトの名無しさん
21/01/01 09:42:29.21 Sutdgdij0.net
間違っているのではなく見落としているんじゃね

188:デフォルトの名無しさん
21/01/01 17:08:38.32 PXRj0cmP0.net
そりゃPGの動作ってのは環境含めてだからな

189:デフォルトの名無しさん
21/01/02 20:54:06.70 gYfsTimq0.net
不具合がわかっていて放置できるとかうらやましいな

190:デフォルトの名無しさん
21/01/04 03:24:12.12 SOcZuJtz0.net
>>125
検索結果はARTICLEタグの1番目から3番目迄(0番目は検索結果とは違うものに使用されてる。)。
その下のクラス名LawDownloadの下にクラス名pdfFileが幾つか見つかるが、その直ぐ下にAタグにhref=で始まるURLが見つかる。
どれもGetElements系で取得出来る。
最後はURLDownloadToFile使えば良いんじゃね?

191:デフォルトの名無しさん
21/01/04 16:03:39.37 P/FS/eNz0.net
バッチでデスクトップを再起動する人もあまりいないと思うが
デスクトップを再起動するプロシージャ内でExcelをQuitすると、Excelが勝手に再起動する
という現象が起きるので一応報告しとくね
環境によるかも
最初からWin10のPCで、Excel2019
(Win8からのアプデPCで、Excel2013では起きなかったかも)
デスクトップを再起動するコマンドを実行してるのはShell関数
Shell関数は非同期のはずだが、その同一プロシージャ内では、APIのSleepで5秒待っても駄目
DoEventsも駄目
そのプロシージャを一旦抜けて、タイマーで5秒後にQuitを実行すればExcelが再起動しない
デスクトップを再起動するのは、とあるツールの強制終了で残るタスクバーアイコンをクリアするためで
そんな用事のある人も滅多にいないだろうけど(クリアしなくても問題があるわけでもないし)

192:デフォルトの名無しさん
21/01/04 16:52:13.02 P/FS/eNz0.net
Access VBAに比べるとExcel VBAは随分安定してるが
それでもゴリゴリ開発を繰り返すと、謎の実行エラーは起きるよね
ソースを全部エクスポートしてインポートし直すと直るやつ
結構有名なはずだが
謎は実在するのにないと言い張るのは、経験不足なだけ
話題の動作を確認したわけじゃないがね

193:デフォルトの名無しさん
21/01/04 18:20:52.45 WAisD+UGM.net
あまり何もかもをまとめて処理するのはリスキー過ぎる
小分けにして段階を踏め

194:デフォルトの名無しさん
21/01/04 21:23:02.41 XJuzf2wY0.net
VDI環境でメモリ4ギガしか振られてないんだけど、グローバル変数を4つくらい作るとメモリ不足エラーが出て不安定になります。
割り当てるメモリを増やせばエラー収まりますか?

195:デフォルトの名無しさん
21/01/07 11:25:47.54 vMxmEGnU0.net
質問というか相談です
フォーム上のテキストボックスを右クリックした時、元の背景色が通常色の場合は黄色に、黄色の場合は通常色にと切替を行い、塗り潰しチェックの様な事が出来るようにした物を作りたいです
なのでMouseDown若しくはMouseUpで拾ってButton=2の場合に、テキストボックスの背景色を切り替える方向で行こうと考えました
MouseDownは1度のクリックで2度処理を行ってしまう為、MouseUPを使用しようと思いましたが、
正直押した瞬間ではなく離した時点なのが至極個人的に違和感バリバリなのでMouseDownでどうにか処理できないかと考えています
その場合、静的変数を用いて2回目かどうかの判定を行うのが良いのでしょうか

196:デフォルトの名無しさん
21/01/07 12:14:22.04 lqyAMCWOM.net
Timerで1秒以内の2回目は止めたら

197:デフォルトの名無しさん
21/01/07 13:06:20.76 LEN4uLCLd.net
for eachでフィルターがかけられた列をコレクションし、現在のセルと一つ下のセルの値を比較しようと思ったのですが、offsetだと隠れた行の数値が参照されてしまいます。
フィルタリングして可視状態の一つ下のセルを参照するには、どうすればよいのでしょうか。

198:デフォルトの名無しさん
21/01/07 15:55:15.71 JVCs6nJOM.net
無理だな
一つ上のを覚えといて比較しな

199:デフォルトの名無しさん
21/01/07 17:04:40.85 lqyAMCWOM.net
該当セルから下方向に、
VidibleがTrueなセルに当たるまで探せば

200:デフォルトの名無しさん
21/01/07 20:16:51.59 GNpPPMMj0.net
>>194
マウス離した時に実行するのがExcelに限らず一般的な動作だと思うが

201:デフォルトの名無しさん
21/01/07 23:26:20.22 q8h4Rq+X0.net
確かに
↓\→ 弱ボタン離す、でも波動拳出るな

202:デフォルトの名無しさん
21/01/07 23:51:53.97 CAJlIzxl0.net
はどうけんてなんですか

203:デフォルトの名無しさん
21/01/07 23:59:30.52 GNpPPMMj0.net
イギリスのロックバンドのことです

204:デフォルトの名無しさん
21/01/08 07:36:54.65 /1SPkI99a.net
行とか列のデータのある範囲を選択するメソッドありますか?
currentregionの1行だけみたいなイメージで
今思いつくのは無理くり
Range("C5").CurrentRegion.Offset(略).Resize(略~
ないしは
Endとかで割り出してから選択する
とかなんですが
なんかもう少しスマートな書き方があれば知りたいです

205:デフォルトの名無しさん
21/01/08 07:38:15.90 /1SPkI99a.net
説明捕捉
>>203
の表の列はAからD以上まである感じです

206:デフォルトの名無しさん
21/01/08 08:45:53.52 F7dsXzNTM.net
columnsとかrowsプロパティで範囲から希望の列や行を取り出すじゃ駄目なの?

207:デフォルトの名無しさん
21/01/08 09:53:03.11 /1SPkI99a.net
>>205
いや、rowsだと行全体が選ばれてしまうので
例えば
1行目は4列
2行目は5列
とデータの入っている列数がバラバラな場合
(値は全て入っているものとして)
それぞれ4列とか5列分ぴったりに選ぶメソッドは無いものかと
C列基準とかで選べたら一番いいけど
A1選んで「ctrl+shift+→」と同じ結果でもいいです

208:デフォルトの名無しさん
21/01/08 10:06:49.06 /1SPkI99a.net
すみません
>>205
のヒントで自己解決しました
Range("C5").EntireRow.SpecialCells(引数)
でいけました
失礼しました

209:デフォルトの名無しさん
21/01/08 10:12:04.47 0GZaxWieH.net
>>206
一発で求めるメソッドやプロパティはない
たとえば3行目だけ選択だと、たぶんこれが最短
Range([A3], [A3].End(xlToRight)).Select

210:デフォルトの名無しさん
21/01/08 10:18:16.84 /1SPkI99a.net
>>208
ありがとうございます
やっぱり1発ではないんですね
自分が書いたspecialcellも定数と数式とが混在してると
やはりUnionで繋ぐなどしかないので
煩雑になるなあと思っていたので
その書き方の方が良さそうですね

211:デフォルトの名無しさん
21/01/09 19:33:14.89 tpxthpMW0.net
Dirコマンド、
コマンドプロンプトに直書きだとローカルもネットワークも取れるのに、
VBAからWSHで取ると、ローカルしか取れないのは何故?

212:デフォルトの名無しさん
21/01/09 22:38:35.27 sDO7vtGda.net
理由は知らないけど、コマンドプロンプトのDIRコマンドと、VBAのDir関数は別物です

213:デフォルトの名無しさん
21/01/09 22:40:13.80 sDO7vtGda.net
あ、失礼いたしました
VBAのDirでなく、スクリプト経由なのか
1つ前のレスは撤回します

214:デフォルトの名無しさん
21/01/10 01:05:09.81 kg6XuktW0.net
>>210
まあユーザ認証回りだとおもうけど
ちょっとコード晒してみて

215:デフォルトの名無しさん
21/01/10 01:13:14.86 4Xu9louP0.net
>>213
これそのまま
URLリンク(officetanaka.net)
sCmd = "dir [ローカル]" だとOKで、
sCmd = "dir [ネットワーク]" だと取れない
Len(Result)で調べると0文字になってる
コマンドプロンプトでやると取れるから、打ち間違いじゃないと思うんだけど

216:デフォルトの名無しさん
21/01/10 01:40:53.81 bwHYpHvWH.net
>>214
手動でコマンドプロンプトからネットが見えるか再確認した?
Windows Updateするとファイル共有が勝手にoffにされることがけっこうあるよ

217:デフォルトの名無しさん
21/01/10 02:36:39.33 CEBDD+E50.net
>>215
そんなことねーよ
死ね

218:デフォルトの名無しさん
21/01/10 08:23:59.20 4Xu9louP0.net
>>215
確認した
\\ネットワークにChr(34)入れて"\\ネットワーク"にしてもダメ
         (↑半角だと書き込めない)

219:デフォルトの名無しさん
21/01/10 08:51:06.81 kg6XuktW0.net
>>214
[ネットワーク]の指定方法正しいか?
\\サーバ\共有名 でないと、\\サーバ だけではだめだぞ
手元で試したけど、うちではUNCパスでもネットワークドライブでもちゃんと動いた
ただし、パスワードは事前に保存済み
パスワード保存してないリソースはテストしてない

220:デフォルトの名無しさん
21/01/10 09:02:01.60 qJ1NhQml0.net
ネットワークパス使ってファイルアクセス可能かまず調べる

221:デフォルトの名無しさん
21/01/10 09:03:56.67 4Xu9louP0.net
>>218
\\サーバ\共有名って、\\サーバ\共有されてるフォルダ名?
それなら合ってる
ちなみに\\アドレスの数字\共有されてるフォルダ名ってのも試した
パスワードは、エクスプローラーから開くときにパスワード入れなくていい状態になってるから、
保存済だと思う

222:デフォルトの名無しさん
21/01/10 11:56:30.27 bwHYpHvWH.net
うちではサンプルのままで問題なく共有フォルダのファイル一覧が出るからWSHのせいではないと思う
エラーコードやエラーメッセージは何も出てない?
Windowsのシェルを置き換えるとか、何かマニアックなカスタマイズしてる?

223:デフォルトの名無しさん
21/01/10 12:45:12.99 4Xu9louP0.net
>>221
いや、サンプルのC:\"を\\~に変えただけ
エラーも何もなく0文字で返ってくる
強いて言えば、試したのがVPN環境
後でVPNなしでどうなるか試してみるけど

224:デフォルトの名無しさん
21/01/10 14:01:53.42 bwHYpHvWH.net
>>222
ホスト側のOSはWindows?双方にSMBは間違いなくフルセットで入れてある?

225:デフォルトの名無しさん
21/01/10 16:37:15.38 4Xu9louP0.net
>>223
Windows
SMBがどうとかは、IT部門じゃないからわからない(会社の)

226:デフォルトの名無しさん
21/01/10 17:55:38.15 kg6XuktW0.net
エラー(メッセージ)が出てないのはたぶん標準出力しかひらってないから
標準エラー出力になんか出てると思われ

227:デフォルトの名無しさん
21/01/10 18:05:33.95 kg6XuktW0.net
つかここまでしてわざわざDirコマンド使う必要あるのか
何がやりたいんだ

228:デフォルトの名無しさん
21/01/10 20:17:18.14 4Xu9louP0.net
>>226
サーバーの空き容量調べたいだけなんだけどね
方法は他にもあるけど、いちいちドライブ文字設定しなきゃいけないとか、
何かアドインみたいなの入れなきゃいけないとかあるし
Dirコマンドが一番シンプルだし、
batでテキスト出力するのは問題なくできるから、
それを直接変数に入れられないかなと思ったんだけど

229:デフォルトの名無しさん
21/01/10 20:39:03.57 kg6XuktW0.net
>>227
WSHつかうならDriveオブジェクトがUNCパスいけるっぽいけど
URLリンク(docs.microsoft.com)

230:デフォルトの名無しさん
21/01/10 23:21:47.74 CEBDD+E50.net
馬鹿が聞いて馬鹿が答えるスレ

231:デフォルトの名無しさん
21/01/10 23:32:18.31 LL6dwzdY0.net
>>229
お前は馬鹿馬鹿いうだけの馬鹿だな

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

233:デフォルトの名無しさん
21/01/11 23:57:28.02 pfNMzUxK0.net
生産管理でまた使うことになったりして・・・

234:デフォルトの名無しさん
21/01/12 01:59:02.62 OTa0Zw/f0.net
VBAに触らなくて良くなるだけで羨ましいわ

235:デフォルトの名無しさん
21/01/12 19:01:11.25 dCVmoeOp0.net
>>231
製造現場になじめないで会社辞めるに1ガバチョ

236:210
21/01/13 19:37:02.44 lspxZscb0.net
Dirコマンドの件で回答くれた皆さん
パスにUTF-8で文字化けする文字を含んでいたのが原因だったわ
しょうもないオチでごめんなさい&ありがとう

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

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

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

240:デフォルトの名無しさん
21/01/14 07:59:40.60 gDZI6jyWr.net
=TEXT(ROUNDDOWN(a1,1-INT(LOG(a1))),IF(1-LOG(a1)>0,"0."&REPT(0,1-INT(LOG(a1))),"0"))
をVBAで記述するとどうなるのか教えて欲しいです。よろしくお願いします。

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

242:デフォルトの名無しさん
21/01/14 12:56:03.99 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:デフォルトの名無しさん
21/01/14 18:59:26.33 +2NwXrek0.net
>>240
マジか・・
普通に書くか、いちいちWorksheetfunctionとか書いてたわ

244:デフォルトの名無しさん
21/01/14 20:01:26.65 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:デフォルトの名無しさん
21/01/14 20:33:06.60 gxjpIPZs0.net
シートを指定する
名前の適用範囲を確認する

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

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

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

249:デフォルトの名無しさん
21/01/15 07:45:14.16 fl9fRXksr.net
>>240
>>241
ありがとうございます。

250:デフォルトの名無しさん
21/01/16 04:08:04.09 wM/4uvwh0.net
①Set DB As CurrentDb
②Set DB As CurrentDb()
この二つに使い分ける意味はありますか?

251:デフォルトの名無しさん
21/01/16 10:41:53.52 MRodpgDG0.net
ないと思う

252:デフォルトの名無しさん
21/01/16 16:36:07.57 SaJeHrUX0.net
①はカッコつけたい時
②はキーボード打つのめんどくさい時

253:249
21/01/16 19:03:22.47 wM/4uvwh0.net
>>251
ありがとう。教本読んだら2種類出てきたので、
何か違いはあるのかと思いまして。
同じだったのか…。

254:デフォルトの名無しさん
21/01/16 19:33:57.85 MRodpgDG0.net
同じではない
必要性を感じないというだけ

255:デフォルトの名無しさん
21/01/16 20:50:02.04 wM/4uvwh0.net
必要ないのを同じと表現したの

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

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

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

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

260:デフォルトの名無しさん
21/01/16 21:59:42.58 BbkPLu/V0.net
Accessで試したけどどっちも通って同じ結果だな
俺の予想では2はデフォルトプロパティの呼び出しになると思ったんだが
引数省略したら、かっこそのものも除去されて評価されてるのかもしれん
つかその教本ってなんだ?

261:デフォルトの名無しさん
21/01/16 22:14:43.61 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:デフォルトの名無しさん
21/01/16 22:21:15.40 wM/4uvwh0.net
CurrentDb自体を変数にするとか、それはもう別の話では

263:デフォルトの名無しさん
21/01/16 23:00:55.60 BbkPLu/V0.net
前提を絞らなければ、動作に違いが出るかどうかの話だから別の話じゃない
変数名の良し悪しに関してはまあ別だが
つかその教本とやらを曝せ
俺的にはデータベースのインスタンスを取得する目的で後者の書き方とかなら、そっちのほうが問題だわ

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

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

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

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

268:デフォルトの名無しさん
21/01/17 21:25:06.25 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:デフォルトの名無しさん
21/01/17 21:32:27.18 sTdEmPzt0.net
聞く気ないだろw

270:デフォルトの名無しさん
21/01/17 22:02:29.00 Bpeq2DcA0.net
そのようだなw

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

272:
21/01/17 22:23:21.58 gYjAP2D00.net
質問です。よろしくお願いいたします。
VBA でスクレイピングを行っています
対象ページ:URLリンク(www.rakuten-sec.co.jp) ‥①
取得したい要素、 CSS セレクタで記載:document.querySelector("#cFx > table:nth-child(6) > tbody > tr:nth-child(1) > td.cell-02 > em").innerText  ‥‥②
しかし、②は google chrome では取得できて、しかもコンソールで②を指定した場合も目的の値を取得できていますが、
②を IE11 ->F12 で表示できるコンソールに食わせても、目的の値を取得できません。
質問1:google chrome におけるページ①のCSSセレクタ②は、IE11 ではどのようになるのでしょうか?‥‥③
質問2:IE11 で③を取得する方法はどのようなものでしょうか?
以上よろしくお願いいたします。

273:デフォルトの名無しさん
21/01/17 23:48:28.14 7Jg8yd50M.net
>>267
いろいろと修正箇所が多いので
URLリンク(qiita.com)
このサイトのコードの
4行目の後に
Dim findStr As String, replaceStr As String
findStr = InputBox("置換対象文字列")
replaceStr = InputBox("置換文字")
'各Shapeに対する処理の2箇所に
shp.Name = Replace(shp.Name, findStr, replaceStr)
を追加すればうまく出来ると思う
ちなみに、理由は知らないけどリボンのページレイアウトの中のオブジェクトと選択と表示のシェイプの名前を変えずにデフォルトのままだとVBAが出す名前が英語表記になるので注意

274:デフォルトの名無しさん
21/01/18 02:58:44.09 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:デフォルトの名無しさん
21/01/18 06:51:20.31 hmFdo1dud.net
>>272
言われた通りにやったら出来ましたありがとうございます。
自分がやりたかったことと同じでした。
>>273さんも整理してくれてありがとうございます。

276:デフォルトの名無しさん
21/01/18 12:58:34.46 JT9EgKXH0.net
>>271
漏れが、Ruby, Selenium WebDriver, Chrome でアクセスしたら、空要素が返ってきた
CSS の :nth-child() 擬似クラスは、
兄弟要素のグループの中での位置に基づいて選択します
URLリンク(developer.mozilla.org)
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> (URLリンク(www.rakuten-sec.co.jp))
at l (URLリンク(www.rakuten-sec.co.jp))
at c (URLリンク(www.rakuten-sec.co.jp)) undefined",
source: URLリンク(www.rakuten-sec.co.jp) (2)
ひょっとして、そのサイトがバグっているのかも?
それかログインなど、特別な認証が必要なのかも?

277:275
21/01/18 13:03:01.53 JT9EgKXH0.net
それか、
jquery.share-button.js
と書いてあるから、
jQuery で作った画面か何かの、ボタンをクリックするなどの、
人間による操作が必要なのかも?

278:デフォルトの名無しさん
21/01/18 13:14:48.80 ipljQC5/a.net
まあでもVBA関係ないな

279:275
21/01/18 13:39:24.37 JT9EgKXH0.net
そのサイト固有の問題かも。
それに、IE 11 はサポート切れで、多くのサイトで、まともに動かない
基本、Chrome しか動かない。
Chrome以外のブラウザは、まともに動かない

280:
21/01/18 23:04:09.16 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:デフォルトの名無しさん
21/01/18 23:19:34.42 froKP66m0.net
スクレイピングが目的なら悪いことは言わないから大人しくpythonあたりにしとけ

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

283:デフォルトの名無しさん
21/01/19 00:26:22.17 i//ZhdNzH.net
最近のホームページはブラウザごとに動作が違うから、本などを参考にするなら同じブラウザを使わないと、
本質と無関係なところではまって時間を無駄にすることになる
あと株価なんかスクレイピングしてもまったく意味ないぞ
どんだけ大量の数字を集めたところで、それで利益が出せると思ったら大間違いだからな

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

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

286:275
21/01/19 07:21:09.11 JrdPscbl0.net
>>275
を修正
275は、ヘッドレスモードで動かしたので、エラーになったけど、
表示させて動かしたら、エラーにならなかった
でも、要素は取得できなかった
IE11 は、もうサポート切れじゃないの?
使わない方が良い
基本、Chrome を使うべき!

287:275
21/01/19 07:23:53.98 JrdPscbl0.net
勝手に頻繁にスクレイピングしたら、業務妨害で逮捕されるよ
基本、どの会社のサービスでも、
相手と契約して、API を使わないといけない

288:275
21/01/19 07:51:13.37 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
21/01/19 08:28:20.74 JrdPscbl0.net
Chrome のF12 開発者ツールのコンソール画面を開くと、幾つかエラーが出てる
ログインしてるとか、営業時間内とか、
何かの条件が揃わないと、
そのページ内に、id="cFx" が現れないのかも

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

291:275
21/01/20 06:54:28.87 sOzWFlEJ0.net
エンジニアチャンネル・粟島が、
2つの取引所の価格差を利用して、Ruby で鞘取りしてる
【検証】プログラミングでビットコインを自動売買すると一週間でいくら稼げるのか?
URLリンク(www.youtube.com)

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

293:デフォルトの名無しさん
21/01/20 20:49:26.31 j7C4dot+0.net
まずその通りやってみればいいのに

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

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

296:デフォルトの名無しさん
21/01/22 02:14:04.86 JMbV/GNCa.net
何て会社?

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

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

299:デフォルトの名無しさん
21/01/22 08:35:33.62 +nZCsLp6M.net
で、質問は何ですか?

300:デフォルトの名無しさん
21/01/22 08:41:50.70 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:デフォルトの名無しさん
21/01/22 10:48:34.97 NBj8+FQEd.net
エクセル VBA マクロで良い参考書はありますか?

302:デフォルトの名無しさん
21/01/22 10:54:17.14 Ti3taKZXr.net
まだブラウザ操作しようなんてとこあるのか

303:デフォルトの名無しさん
21/01/22 12:22:32.49 I4Aue8uTa.net
>>296
できると思ってんだけどなー、できないやつなのかもしれんな

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

305:デフォルトの名無しさん
21/01/22 14:15:47.27 y6abuyBz0.net
どうしようもないだろ
はい、次

306:デフォルトの名無しさん
21/01/22 14:41:53.73 hl68e8TDH.net
>>303
何も追加インストールせずにEdgeをコントロールする方法ならここに書いてある
サンプルは32bit版だけどPtrsafe追加だけで64bitでも動く
URLリンク(www.ka-net.org)
ただしこの方法はWindowsやEdgeのバージョンが上がると使えなくなる可能性があるので注意

307:デフォルトの名無しさん
21/01/22 15:06:57.75 KA18g7jM0.net
Ruby, Selenium WebDriver, Chrome が一般的

308:299
21/01/22 16:52:44.80 hJPaHw/b0.net
>>305
ありがとうございます。最新のChromeベースのEdgeでは使えないことが判明しました・・
>>306
rubyというのを使う場合、実際に動かすときはxlsmファイルと別に何かプログラムを記載した
ファイルを準備し、そのファイルを実行するというイメージになるのでしょうか?

309:306
21/01/22 17:48:37.37 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 "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 # ボタンをクリック

310:デフォルトの名無しさん
21/01/22 19:04:19.47 fPx0q4lA0.net
>>308
アホか?
WebDriver使って良いならVBAだって出来るだろwww

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

312:デフォルトの名無しさん
21/01/22 19:14:00.08 j9mQzeTK0.net
狭い世界を一般的という人はどこにでもいる

313:デフォルトの名無しさん
21/01/22 19:26:14.35 AXkriLC/M.net
環境のこと考えるならGASかpowershellを検討してみては?

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

315:デフォルトの名無しさん
21/01/23 00:14:35.39 tp3qQjJz0.net
>>313
それEdge じゃねえだろ。
今のEdgeはInternet Explorer_Server無いぞ。

316:デフォルトの名無しさん
21/01/23 04:24:33.18 W5gOUdwX0.net
できる奴はネットも本も見ない、わからない事はF1押して調べるだけ
これ定説

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

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

319:デフォルトの名無しさん
21/01/23 11:21:37.02 XQqwzCqOd.net
どの方法だってバージョンアップで使えなくなる可能性はある
CSSやJavaScriptが必要なければXHRオブジェクトが無難
完全にデファクトスタンダードと言えるブラウザが今は存在しないから、VBAでスクレイピングは鬼門になりつつある
今はまだWindowsマシンには必ずIEが入ってるから、しばらくはIEでやってくのがいいんじゃないかなあ

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

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

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

323:デフォルトの名無しさん
21/01/23 21:45:57.51 AoWSUa07d.net
>>321
それ単なる画像じゃね?

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

325:デフォルトの名無しさん
21/01/24 05:01:50.09 O96X//w/0.net
田中君
広瀬君
桜井君
松岡君

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

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

328:デフォルトの名無しさん
21/01/25 01:12:50.11 YwFiLI6Vd.net
>>326
エロサイトでも怒らないから、ちょっとそのサイト晒して

329:デフォルトの名無しさん
21/01/27 02:51:52.41 jiG8/Aof0.net
>>326
Fが12個表示されてないか?

330:デフォルトの名無しさん
21/01/27 08:04:15.56 rs7ltanux.net
F*ck F**k FFFFF**k

331:デフォルトの名無しさん
21/01/27 16:24:41.99 q3mmuO0LH.net
下記の4行で問題なくIEでURL開けたのですが、
Dim objIE As InternetExplorer
Set objIE = New InternetExplorer
objIE.Visible = True
objIE.Navigate "URLリンク(aaa.com)
保存する部分のプログラムがネット上で見つかりません。
hogehoge.htmlでc:\でもエクセルファイルパスでも。
開ききるまでの Do Loop とか、参照の追加とか、
他の必要な事項はわかったのですが、「保存」だけがわかりません。
お願いします。

332:デフォルトの名無しさん
21/01/27 16:48:32.96 PEXoVVseH.net
>>330
URLDownloadToFile
URLリンク(tonari-it.com)

333:デフォルトの名無しさん
21/01/27 19:08:59.20 SKP56GPf0.net
コレクション便利すぎワロタ

334:299
21/01/27 23:35:24.32 L0AdvpAm0.net
とりあえず個人のPCでSelenium BasicとChrome Driverをダウンロードして、VBAでChromeを操作してみました。
構文の違いを理解するのにちょっと時間がかかりましたが、VBAでIE操作と同じようなことができました。
しかし、IEに比べてかなり遅いですね。。
とくにFor-nextとかFor eachとかで複数個あるClassを一個ずつ取得してくのがかなり遅い・・。

335:デフォルトの名無しさん
21/01/28 05:46:17.68 u8tdLuFb0.net
>>330
最近のWindows には、curl コマンドも入った
コマンドプロンプトで、where curl
と入力すると、
C:\Windows\System32\curl.exe
これとは別に、PowerShell にも、curl コマンドがあるけど、
これは別のコマンドのエイリアスだけど

336:デフォルトの名無しさん
21/01/28 10:11:50.01 ecmWwtyQH.net
>>331
ありがとうございます。無事目的は果たせました。
ただし、2点、罠が潜んでました。解消しましたので謎解きは不要です。
1 コピペで張り付けたとき、URLを指定してる行が赤くなって、VBAに否定されました。
  URL"のあとのセミコロンがお気に召さなかったようです。削ったら赤い表示は消えました。
  コピペしたときに改行コードがかわった?
2 取りに行く相手が社内サーバのドメイン持ちだったのでドメイン指定したら、なんかダメで、
  MACも以前そんな反応したことを思い出して、IPアドレス(192.168.*.*)で指定したら動きました。
>>334
curl について調べましたが、数か所で見た説明自体がわかりませんでした。(泣)
お手数かけました。

337:デフォルトの名無しさん
21/01/28 10:21:40.83 8thmnp2a0.net
>>315
熟練者はそれだけ分かるのかー
そもそもvbaのマニュアルというものがないしやりたいことのプロパティやメソッドは皆どうやって調べてるのか気になる
まあ今はネットあるけどネット普及してなかった90年代はF1で調べてた?

338:デフォルトの名無しさん
21/01/28 10:58:39.20 3f25njR4H.net
>>336
90年代はみんなマニュアル本を買ってた
中身は英語のオンラインヘルプを翻訳して印刷しただけの物なんだけど、誤植と誤訳だらけ
VBAに限らず、1冊3000円~8000円ぐらいのぶ厚い本が大きい本屋のパソコンコーナーに並んでた

339:デフォルトの名無しさん
21/01/28 11:18:10.18 3f25njR4H.net
こういう辞書みたいなやつ、みんな持ってた
URLリンク(i.imgur.com)

340:デフォルトの名無しさん
21/01/28 11:56:54.04 RkzGmpaJd.net
あ、そうなのか
こうゆう辞書みたいな本はマイクロソフトから情報もらって作ってたのかなね
英語ヘルプで試行錯誤で作ってたのかね

341:デフォルトの名無しさん
21/01/28 11:58:15.69 8m13k+420.net
これじゃないけど分厚いの1冊持ってるわ

342:デフォルトの名無しさん
21/01/28 15:38:23.08 jA4rpiExM.net
今のExcel VBAって日本語ヘルプ付いてないの?

343:デフォルトの名無しさん
21/01/28 15:51:32.46 zfNxSqnZd.net
>>339
発売前に英語版のヘルプが入ったCDをMSから送って貰って、それを手分けして翻訳した
Officeじゃないけど翻訳のバイトしてた
>>341
あるけど、今はオンラインヘルプに飛ばされるからネット環境がないと見れない
昔のバージョンはローカル化できたけど今は無理だと思う

344:デフォルトの名無しさん
21/01/28 15:53:40.51 8m13k+420.net
F1ヘルプはあんま役に立たない

345:デフォルトの名無しさん
21/01/28 15:55:46.33 8thmnp2a0.net
>>342
バイトすごいですね
今は何の職業?

346:デフォルトの名無しさん
21/01/28 19:35:23.37 1VXsvNu50.net
Excelのハイパーリンクをクリックするたびに
MSのサイトにアクセス先の情報を送って
そこからリダイレクトしていたという
衝撃の事実を今日知った。
10年以上つかってて気が付かなかったよ
死ねこいつら

347:デフォルトの名無しさん
21/01/28 20:13:31.96 RkzGmpaJd.net
>>345
え、これマ?

348:デフォルトの名無しさん
21/01/28 20:18:19.29 cYs3zIiO0.net
ソースを

349:デフォルトの名無しさん
21/01/28 20:26:06.12 1+p+qv3s0.net
これ買っとけばいいみたいなど定番の本はある?
ネットでやりたいことをちょこちょこパクって繋げてるけど限界だわ
汎用性の高い一つの大掛かりなVBAを組もうとしたら圧倒的に知恵がない

350:デフォルトの名無しさん
21/01/28 20:34:03.81 8m13k+420.net
ネットで調べても書き方が人それぞれだったりちゃんと整理されれなかったり
肝心の自分の目的を書いてなかったりそんなんばっかだからな。
それらの無駄とストレスを減らすために、辞書は1冊あった方がいいな。
書き方と順序が統一されてるだけでも有用。

351:デフォルトの名無しさん
21/01/28 20:35:31.88 8m13k+420.net
できる大辞典は定番ではある
他の本はいらん
これにないなら諦めて他で調べればいい

352:デフォルトの名無しさん
21/01/28 20:54:55.16 8thmnp2a0.net
vbaでIEとかChromeとか操作できるのは最近分かったけど(やったことはない)、他に操作できるアプリってどのくらいあるの??

353:デフォルトの名無しさん
21/01/28 20:55:48.34 8m13k+420.net
エッジもできる

354:デフォルトの名無しさん
21/01/28 21:05:03.93 8thmnp2a0.net
あ、ブラウザー以外でおねがいしゃす

355:デフォルトの名無しさん
21/01/28 21:09:54.36 eBfsAdOM0.net
>>345
それExselとか書いてないかい?w

356:デフォルトの名無しさん
21/01/28 21:27:46.20 1VXsvNu50.net
URLリンク(superuser.com)

This is a known Microsoft bug where hyperlinks are redirected to another page if:
You are using Microsoft Internet Explorer:
with a proxy server
while using a firewall that does not allow HTTP requests on your local network
Internet Explorer is not your default browser.
The ForceShellExecute registry key is not present or is not set to 1
You can apply the fix from here:
URLリンク(support.microsoft.com)
バグなんてもんじゃねえ

357:デフォルトの名無しさん
21/01/28 21:31:23.39 ABoKcn6c0.net
>>351
参照設定の中に入ってるのは普通に動かせるし、
WindowsAPIとUIAutomationとSendKeysがあるから、
マウスとキーボードで動かせるようなものなら大抵。
極端な例を言うと、VBAで仮想のファミコン(エミュ)を作ってマリオ動かす人もいる。

358:デフォルトの名無しさん
21/01/28 21:34:15.56 46r/uxOM0.net
>>348
「一度死んでみた」

359:デフォルトの名無しさん
21/01/28 21:37:00.50 ABoKcn6c0.net
って書いてて思ったんだけど、
IRモジュール使ってVBAでテレビとかエアコン動かせる人いる?

360:デフォルトの名無しさん
21/01/28 21:50:11.88 O9WqV6fA0.net
俺さ、VBAのソース書いてて
インテリセンスが糞だと思ってたけど
上には上があるんだなぁ
今ClassicAspとかいう昔の組んでるんだけど
HTMLとJavaScriptとVBScriptで出来てて
テキスト編集ツール使って
テキストファイルで作ってる
もちろんインテリセンスなんて全く効かない
そうなると一番怖いのが文法エラー
VBAなんかだと一発で分かるけど
最初っからコンパイル自体されないので
どこでエラーになっているか
全く分からない

361:デフォルトの名無しさん
21/01/28 21:57:01.68 SI9VK8hs0.net
ブラウザの開発ツールの使い方を知らないだけでは

362:デフォルトの名無しさん
21/01/28 21:58:09.32 8thmnp2a0.net
>>356
vbaでエミュってエミュをvbaで起動してるってことではなく?
何をどうやったら作れるのか不思議
vbaでIoTの組み込みや操作も可能なのだろうかー

363:デフォルトの名無しさん
21/01/28 22:02:50.14 TxA55uF+M.net
元々仕事でなんとなしに触らざるを得なくなってコピペやらその場限りのググりで生きながらえてきたんだけどちゃんと筋道立てて1から勉強したいというときに適した本やサイトはありますか?

364:デフォルトの名無しさん
21/01/28 22:04:15.85 8m13k+420.net
本はある
サイトはない

365:デフォルトの名無しさん
21/01/28 22:04:36.53 8m13k+420.net
本も当然、1冊では終わらん
入門編から順に買うことになる

366:デフォルトの名無しさん
21/01/28 22:05:55.11 46r/uxOM0.net
>>359
馬鹿は黙っていればいいのに

367:デフォルトの名無しさん
21/01/28 22:49:59.34 TfrdJEz20.net
>>362
慣れてきて半人前くらいになってきたな、と思うならこの本
入門レベルでは決して足りない実務に必須のスキルとは ExcelVBA 実戦のための技術

368:デフォルトの名無しさん
21/01/28 23:07:43.56 ABoKcn6c0.net
>>361
VBAでエミュ。
今は消えてるけど、以前ここにワードで動かしてる動画があった。
URLリンク(www.nicogame.info)
UPされた当時は実機並みのスピードは出てなかったけど、
今のハイスペックPCで動かしたらどうだったか・・。

369:デフォルトの名無しさん
21/01/28 23:11:02.95 8thmnp2a0.net
>>367
謎技術

370:デフォルトの名無しさん
21/01/29 00:41:18.26 R2RLQXG+0.net
VBAって当たり前だろうけどエクセルの基本的な知識がないと使えないよね?
エクセル全然知らないから大変だな…

371:デフォルトの名無しさん
21/01/29 00:42:02.94 SG5MocSx0.net
それじゃ役に立てる場所がないじゃん
実践で使わないと上達しないぞ

372:デフォルトの名無しさん
21/01/29 00:49:19.50 SG5MocSx0.net
未来の開拓のため!つっても普通
「よし、エクセルを覚えるぞ」からだろそれは…
PCにエクセルをインストールしてエクセル入門の本を買うところからだな
書式とか関数とかピボットとかスイスイできるほどに覚えてからだなVBAは
でないとプログラムの意味も理解できない

373:デフォルトの名無しさん
21/01/29 01:35:07.55 R2RLQXG+0.net
>>371
助かります!

374:デフォルトの名無しさん
21/01/29 02:08:08.30 R2RLQXG+0.net
エクセル初歩から覚えるなら絶対買っとけ!って書籍やサイトはありますか?

375:デフォルトの名無しさん
21/01/29 02:35:09.20 SG5MocSx0.net
「絶対」は無い。
まあ「絶対ではないがまったり普通に」、
FOM出版のよくわかるシリーズでいいのでは。
当然最初は基礎編ね。
スレ違いだからこれ以上は然るべきところで聞くのがいいと思う。

376:デフォルトの名無しさん
21/01/29 03:41:44.14 IWwHfNXwH.net
>>373
入門サイト
URLリンク(excel-ubara.com)

377:デフォルトの名無しさん
21/01/29 03:58:52.37 R2RLQXG+0.net
>>374
>>375
ありがとう!!
とりあえず神髄を参考にしていきます

378:デフォルトの名無しさん
21/01/29 08:15:50.80 Xkyf+iIu0.net
>>369
いや、Excelの知識無くてもVBだけでExcelを動かしてる人いますぜ
その人当然ワークシート関数をろくに知らない

379:デフォルトの名無しさん
21/01/29 09:35:52.52 Llo2P1qs0.net
昭和の頃は、Excel講座に通うサラリーマンはバカにされてたけど、同時にvi使える人が達人として尊敬されてた。
どう考えてもテキストエディタより表計算のほうが技能必要だけど。

380:デフォルトの名無しさん
21/01/29 09:38:10.99 Llo2P1qs0.net
日本の成長に脅威したCIAが、たいていの問題に対して使える優秀な製品を貶し、使いどころの限られる古いテキストエディタユーザーを神扱いしたのではないか?

381:デフォルトの名無しさん
21/01/29 09:40:46.74 higCsMc/M.net
そもそもVBAは最後の手段であって、それを活用することは決して褒められたものじゃない
ワークシートの機能で簡単にできることを知らずにシコシコ馬鹿みたいにVBA書いてるアホは多い

382:デフォルトの名無しさん
21/01/29 09:44:43.17 Llo2P1qs0.net
結果、CIAの思惑通り、標準的な日本人はviを使いこなせるが、Excelを使いこなす日本人は少ない。
Excelを使いこなせた方が絶対便利なのに。

383:デフォルトの名無しさん
21/01/29 09:55:51.98 eIG6sa+UM.net
テキストエディタはC++やJava などでプログラム開発するためのただの道具だけどな
むしろ本格的なプログラム組むならVBAは汎用性に欠ける

384:デフォルトの名無しさん
21/01/29 10:15:15.81 9nrwkhnr0.net
>>378
昭和にExcelあったっけ?

385:デフォルトの名無しさん
21/01/29 10:17:07.73 9nrwkhnr0.net
最近はSheetというかExcelの外でのExcelVBAの活用方法を知りたい

386:デフォルトの名無しさん
21/01/29 10:28:32.08 Hw3psapAM.net
Excelと他のアプリを連携するにしてもある程度の規模になるとVBAではなくてOffice add-ins(JavaScriptまたはTypeScript)やVSTO(C#)の利用をMicrosoftは推進してる
あくまでVBAはMS Officeのシステムの枠内で処理の自動化を実施するための道具

387:デフォルトの名無しさん
21/01/29 11:18:05.10 smfBIAno0.net
>>383
Excel 自体は存在したけど日本語版じゃないしMac用だからリーマンが講座に通うとかはありえんだろうな
アメリカのリーマンかも知れんがw

388:デフォルトの名無しさん
21/01/29 11:33:25.67 IWwHfNXwH.net
一番最初にMac版が発売されたのは昭和60年9月、ただしこの時点ではマクロは使えなかった
Windows版は昭和62年10月発売で、ここからマクロ機能が搭載された
この時代だと、viが使える人は別に尊敬されてない
そもそもほとんど知られてなかったんだから、使える人がすごいとか判断すらできなかった

389:デフォルトの名無しさん
21/01/29 13:42:22.04 Xkyf+iIu0.net
知人がYouTubeで表計算なりVBを勉強したいと言っているが、同志達からみてどのチャンネルがおつつめ?
金子?ユースフル?たてばやし??
自分、YouTubeであまりExcelの参考にはしないから誰が優秀か全然わからん

390:デフォルトの名無しさん
21/01/29 13:44:47.29 IzzhGfbbM.net
つべを見ないのが1番参考になる説

391:デフォルトの名無しさん
21/01/29 13:46:17.88 Xkyf+iIu0.net
知人いわく、金子ていうあんちゃんがやたら人気あると聞いてさ
でもプロではないと思うから自分なら観ない

392:デフォルトの名無しさん
21/01/29 15:03:44.68 XKqQMMzPd.net
お前ら化石みたい頭してそうだもんな、youtuberとか頑なに受け入れられないんだろうな
俺は金子見て勉強してるよ

393:デフォルトの名無しさん
21/01/29 15:07:49.71 hZ93xN6Od.net
Exportasfixedformatメソッドでpdfを出力するとき、そのファイル名にセルの値を参照してるのですが
セルの値が改行されているとエラーが出ます。
エラーを出さず改行を無視してファイル名をつけたいのですが、どうすればよいでしょうか?

394:デフォルトの名無しさん
21/01/29 16:22:00.18 SG5MocSx0.net
コード見せてよ

395:デフォルトの名無しさん
21/01/29 16:32:12.51 wsDc5NzC0.net
改行の記号忘れたけど
あれをReplaceで消せばいいだけじゃね

396:デフォルトの名無しさん
21/01/29 16:36:09.23 SG5MocSx0.net
vbCrとvbLfとvbNewLineを空文字化すればいけるかな?

397:デフォルトの名無しさん
21/01/29 16:52:50.17 ur5sUiDWd.net
s = Replace(Replace(Replace(Replace(s, vbCr, ""), vbLf, ""), vbCrLf, ""), vbNewLine, "")

398:デフォルトの名無しさん
21/01/29 17:07:40.77 8cihH0fua.net
vbNewLine は vbCr と vbLf の組み合わせか、いずれか一方だから、vbCr と vbLf だけでもいいかも

399:397
21/01/29 17:08:58.02 8cihH0fua.net
そんな定義はないか…

400:デフォルトの名無しさん
21/01/29 17:32:34.00 wsDc5NzC0.net
396を関数に
Private Function Getファイル名(byval s as string) As String
Getファイル名 = Replace(Replace(Replace(Replace(s, vbCr, ""), vbLf, ""), vbCrLf, ""), vbNewLine, "")
End Function

401:デフォルトの名無しさん
21/01/29 19:31:25.44 Xkyf+iIu0.net
田中派と金子派がハッキリ別れてるわ自分の界隈は

402:デフォルトの名無しさん
21/01/29 20:44:38.50 Wez0GYRkM.net
他のダメ文字は来ないことをお祈りか

403:デフォルトの名無しさん
21/01/29 21:10:33.96 IWwHfNXwH.net
youtubeができる前に基本は覚えたから今さら見る気になれないなあ
だからどっちがどうとかも興味ない

404:デフォルトの名無しさん
21/01/29 21:43:57.23 MBltpUk80.net
>>399
全部空文字にするなら、置換する元のリストをArrayでくくって、lbound(配列)~ubound(配列)でその配列の中身ループさせればいいだけじゃん
それ可読性悪すぎ

405:デフォルトの名無しさん
21/01/29 21:55:58.53 IWwHfNXwH.net
要素がもっと多いと配列にした方がメンテ性は良くなりそうだけど、4つだと微妙だなあ
個人の好みで片付けたくなる
For Each x In Array(vbCr, vbLf, vbCrLf, vbNewLine)
  s = Replace(s, x, "")
Next

406:デフォルトの名無しさん
21/01/29 21:59:33.79 IWwHfNXwH.net
あとForで回すと微妙に遅くなるんで、関数化(ブラックボックス化)して大量のデータを処理するなら1本の式にまとめた方がいいかもしれない

407:デフォルトの名無しさん
21/01/29 22:14:22.45 SG5MocSx0.net
つまり403は考え足らずだったと

408:デフォルトの名無しさん
21/01/29 23:07:49.79 GBOzgJJf0.net
CreateObject("VBScript.RegExp")で探すのも大差ない?

409:デフォルトの名無しさん
21/01/30 00:02:38.07 U1XssVyb0.net
w、Wsは不用です。
あるシートの
w.Cells(1, "B")には000001234や000001234-1などの文字列が入っています。
ハイフンなしの場合は下7桁を。
ハイフンありの場合は-より左の下7桁と-以降を抜き出して
別のシート.同じ行のA列に入れたいです。
下記の処理でelse節を通る場合、
Rightしたときに前ゼロが消えちゃう(1234だけになる)んだけど
消えないようにするにはどう書けばいいですか。
(If節を通る場合は消えません)
If InStr(1, w.Cells(1, "B"), "-", vbTextCompare) >= 1 Then
Dim sNo() As String
sNo = Split(w.Cells(1, "B"), "-", , vbTextCompare)
sNo(0) = Right(sNo(0), 7)
Ws.Cells(gyo, "A") = Join(sNo, "-")
Else
Ws.Cells(gyo, "A") = Right(w.Cells(1, "B"), 7)
End If

410:デフォルトの名無しさん
21/01/30 00:03:27.01 U1XssVyb0.net
間違えました
w、Wsは不用です。

w、Wsはシートです。

411:デフォルトの名無しさん
21/01/30 01:01:10.51 5ChT/CTU0.net
>>403
>>404
なるほど勉強になるわ
いろんな書き方があるからプログラムは面白いな
スマホで打つの面倒くさいからコピペしたけど自分ならReplaceを4行に分けて


412:一個ずつ処理してたわ



413:デフォルトの名無しさん
21/01/30 01:07:22.27 6QDP6TPLH.net
>>408
Else
  Ws.Cells(gyo, "A").NumberFormatLocal = "@"
  Ws.Cells(gyo, "A") = Right(w.Cells(1, "B"), 7)
End If

414:デフォルトの名無しさん
21/01/30 02:17:52.72 O2YJs/tfd.net
>>336
言っとくが、本気にするなよw
熟練者はネットも本も見るぞ。
ま、本に関してはVBAの本は見ないかも。

415:デフォルトの名無しさん
21/01/30 02:23:06.62 O2YJs/tfd.net
>>385
???
そうか?
VSTO廃れてるように見えるが。
情報少ないし。

416:デフォルトの名無しさん
21/01/30 02:42:40.27 fm9PSZiO0.net
>>408
単にWsのA列の表示形式が文字列じゃないだけじゃね

417:デフォルトの名無しさん
21/01/30 02:48:37.26 qXiZMF+3d.net
>>392
これ面白そうだったから調べてみた。
s = worksheetfunction.clean(s)
でいけるっぽい

418:デフォルトの名無しさん
21/01/30 07:14:33.38 1M+OYc940.net
VBAがそのうち廃止されると噂聞くけど無くなったらExcelじゃなくて良いね
キングとかジャストの安い互換ソフトで十分
それとPython

419:デフォルトの名無しさん
21/01/30 07:28:22.98 O0XirISQ0.net
そんなのきいたこともない

420:デフォルトの名無しさん
21/01/30 07:31:09.77 inFBwlEk0.net
上にExcel使いこなしてる奴少ないとあるが、事務歴長いおばちゃんとか操作長けてるイメージあるけどどうなの??

421:デフォルトの名無しさん
21/01/30 07:45:37.30 JU3c6HAP0.net
>>397-398
> vbNewLine は vbCr と vbLf の組み合わせか、いずれか一方だから、vbCr と vbLf だけでもいいかも
それでいいと思う
URLリンク(docs.microsoft.com)

422:デフォルトの名無しさん
21/01/30 08:19:24.57 5ChT/CTU0.net
>>415
MS様の関数を使うのが一番きれいか

423:デフォルトの名無しさん
21/01/30 08:27:30.21 jJ/MoYJX0.net
>>418
テンキーだけ速い。

424:デフォルトの名無しさん
21/01/30 08:28:40.37 fCdLLOZj0.net
ワークシートの関数とか基本的なものしか知らないな
知ってると便利そうね

425:デフォルトの名無しさん
21/01/30 08:43:21.65 BrDW2qLKd.net
>>418
小企業で事務が2人ぐらいのとこだと、速いけどたいがい変な自己流
いわゆるExcel方眼紙を素早く作って定型文書を作ってしまうとかそんなイメージ
もちろんよく勉強してる人もいるが

426:デフォルトの名無しさん
21/01/30 08:54:12.58 BrDW2qLKd.net
[A2] = [Clean(A1)]

427:デフォルトの名無しさん
21/01/30 09:29:14.83 inFBwlEk0.net
テンキー速いのは良いね
電卓も得意そうだし
方眼紙はアカンど、あれ考えた人天才かファホどちらかだな
そういうおば様が引き継ぎにくいシートを大量生産しとるんだねうちみたいに

428:デフォルトの名無しさん
21/01/30 10:10:18.97 1M+OYc940.net
VBAはいつまで使えるんだろう?
あと15年は大丈夫かね

429:397
21/01/30 10:35:24.24 rbovmPt/a.net
おー、ありがとございまーす‼︎

430:397
21/01/30 10:37:11.90 rbovmPt/a.net
>>419
おー、ありがとうございます‼︎

431:デフォルトの名無しさん
21/01/30 10:41:58.65 b7Gs8Wa80.net
>>408
です
>>411
>>414
ありがとうございます、おっしゃる通り数字扱いになっているのだと思います。
>>411さんの方法でやってみます

432:デフォルトの名無しさん
21/01/30 11:30:40.53 1M+OYc940.net
最近、Excel + Pythonとか耳にするけどVBAより何が良いんだろー?

433:デフォルトの名無しさん
21/01/30 11:46:57.12 O0XirISQ0.net
ExcelVBAのひどさは文法よりライブラリのひどさにある
言語だけ変えてもあんまり解決しない
丸々置き換えた外部ライブラリならもっと楽にプログラムできるかもしれない

434:デフォルトの名無しさん
21/01/30 12:27:45.49 1M+OYc940.net
そうなのかー

435:デフォルトの名無しさん
21/01/30 13:08:59.54 Jfm3X56+M.net
Pythonみたいな外部環境使う時は、エクセルを操作って言うより作成する時が多そう
入出力ともにエクセルならVBAの方が手っ取り早いでしょ

436:デフォルトの名無しさん
21/01/30 13:24:52.13 Au3KeWLZM.net
というかVBA使ってるのは他に開発ツールが無いからなんだよ
Pythonインストールできる環境ならそもそもVBAなんか使ってない

437:デフォルトの名無しさん
21/01/30 13:37:40.94 fCdLLOZj0.net
最近VBA描けるようになって嬉しいけどここ見てると終わってる言語みたいだな...

438:デフォルトの名無しさん
21/01/30 13:44:55.44 inFBwlEk0.net
古い言語だからでは?
昭和の定年ジジババがどや顔で昔からプログラミングやっていたと若者にマウント取ってくるのは大抵VBAが大半

439:デフォルトの名無しさん
21/01/30 13:51:30.45 Jfm3X56+M.net
終わってる言語だけど、代わりに仕様変更がない安心感はある
諸悪の根源は仕事の効率化って名目でVBA押し売りするサイトやら講師やらだな
はよくたばれ

440:デフォルトの名無しさん
21/01/30 14:05:31.86 xS3gwMFJ0.net
今VBA押してるか?
Pythonばかりステマされてる気がする

441:デフォルトの名無しさん
21/01/30 14:46:55.21 Au3KeWLZM.net
>>435
今でも使われてるしVBAしか開発環境のない職場も多いし、
いつも手作業で気合いで乗り切るって人より遥かにマシだから引き続き学習進めていいと思うよ
ただ余裕があれば自宅でPythonとかHTML+JavaScript辺り触っとくといいかも

442:デフォルトの名無しさん
21/01/30 16:29:08.79 Jfm3X56+M.net
Vbaしかないってどんな状況だよ

443:デフォルトの名無しさん
21/01/30 16:33:11.52 rDRgl3OZ0.net
よくあるだろ。
オフィス系を主体に普通に手作業メインで事務やってるとこは。

444:デフォルトの名無しさん
21/01/30 16:33:53.70 c0t4Oketd.net
>>434
Pythonインストールできる会社って少ないの?
なにか引っかかるの?

445:デフォルトの名無しさん
21/01/30 16:36:47.91 rDRgl3OZ0.net
余計なものはインストールしちゃいけないことになってる

446:デフォルトの名無しさん
21/01/30 16:59:35.87 SAK/nUhP0.net
良かれと思って勝手にやって怒られても嫌だしな

447:デフォルトの名無しさん
21/01/30 17:00:42.77 KmRaLG0X0.net
規約で使っていいツールが決まってる

448:デフォルトの名無しさん
21/01/30 17:06:41.65 Jfm3X56+M.net
何で勝手にインストールするのが前提なんだよ
上に相談すればいいじゃん
それすら出来ない融通の効かない会社なら、そもそもマクロなんか絶対許さないだろ

449:デフォルトの名無しさん
21/01/30 17:13:45.33 Rr8OfpXod.net
ウチの会社は全く融通きかない
Alt+F11で上司の上司から呼び出し食らったの思い出しましたわ

450:デフォルトの名無しさん
21/01/30 17:17:25.24 rDRgl3OZ0.net
>>446
上に相談で通るって、どんだけ小さい企業を想定してるんだよと


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