Excel VBA 質問スレ P ..
[2ch|▼Menu]
145:デフォルトの名無しさん
19/04/30 19:10:51.36 S6hYz9760.net
よし、わかった。
ここをExcel VBAスレにするのは平成までにして、
令和からは、ドキッ!丸ごと水着女だらけの水泳大会スレにすれば、
すべて解決する。

146:デフォルトの名無しさん
19/04/30 19:18:15.59 R0S1ON6+M.net
ネーミングの昭和感

147:デフォルトの名無しさん
19/05/01 01:54:30.18 MPaYicsf0.net
なあもういい加減やめようぜ

148:デフォルトの名無しさん
19/05/01 08:45:56.07 R08QdVRL0.net
止めつつ上げるとかネタやん

149:デフォルトの名無しさん
19/05/01 13:34:20.87 XHmxZYyQ0.net
最初の質問者は問題解決したのかな?

150:デフォルトの名無しさん
19/05/01 19:19:03.05 xlz/SFXed.net
戯れ事を指摘したことの根拠は戯れ事を否定する根拠が無かったことなのにな。
何にも根拠が無かったら発言しなければ良かったのに。

151:デフォルトの名無しさん
19/05/03 19:41:21.80 o4X+Dt2l0.net
1 安倍晋三 アベシンゾウ
2 麻生太郎
3 小泉純一郎
4 白石麻衣



全員にフリガナをふりたい
今手動で名前をカット→貼り付けでフリガナをだしてます
それを自動でやる方法
または違うやり方があれば教えてください
ち、ちなみにjkです!

152:デフォルトの名無しさん
19/05/03 19:52:09.99 7e1y8fXo0.net
「あべ しんぞう」じゃなくて「あべ しん さん」で変換されてたら
ふりがなもそうなるし並べ替えでも読みで並べ替えされるし

153:デフォルトの名無しさん
19/05/03 19:54:51.80 gB5i9xO70.net
>>151
SEXしよう!
・関数
=PHONETIC(A1)
・vba
Sub foo()
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
Cells(i, 2).Value = Application.GetPhonetic(Cells(i, 1))
Next
End Sub
・その他
A1セルにカーソル併せてshit+alt+上でふりがなの設定が出来る

154:デフォルトの名無しさん
19/05/03 19:56:40.51 gB5i9xO70.net
書き忘れた
関数とvbaで挙動が変わる
関数は入力した時のふりがなデータを引っ張ってくる。漢字をコピペした場合、ふりがなデータが無い事がある
vbaはIMEのデータを引っ張ってくる。
どちらが良いかは無いが、基本的にはvbaの方が良い

155:デフォルトの名無しさん
19/05/03 20:52:09.59 o4X+Dt2l0.net
神様ありがとう!!
やっぱりここのおじさんたち凄い
>>152
それはあきらめてるw

156:デフォルトの名無しさん
19/05/04 06:46:34.61 TSubnBAw0.net
おばさんもいるよ!

157:デフォルトの名無しさん
19/05/04 10:24:42.71 4Z9Ig80ax.net
すげー加齢臭するなこのスレ

158:デフォルトの名無しさん
19/05/04 10:33:10.59 qNitGapX0.net
平均30-40ぐらいじゃないか。余裕で50代もいると思う

159:デフォルトの名無しさん
19/05/04 13:15:20.53 mcZWq4mnM.net
5chとしては普通でしょ

160:デフォルトの名無しさん
19/05/04 14:27:39.19 eVIwB2YR0.net
むしろ50代とかの方が多いんじゃね?

161:デフォルトの名無しさん
19/05/05 01:42:39.48 PgstIp0W0.net
windows3.1時代には既に有ったからね
dos版にもvbaって有ったの?
流石にそこまでは知らないんだけど

162:デフォルトの名無しさん
19/05/05 07:29:37.96 25zG6vKA0.net
>>161
> dos版にもvbaって有ったの?
ないでしょ
VBAはExcel 5.0からでそのバージョンにDOSはなかったはず

163:デフォルトの名無しさん
19/05/05 20:27:43.58 BF8MV8/50.net
指定する番号の行に
行を新規に追加するには
どう記載すれば、良いですか?

164:デフォルトの名無しさん
19/05/05 20:41:12.12 XON7SXZQr.net
row(n).insert
nは数値

165:デフォルトの名無しさん
19/05/05 20:42:27.10 AcwGW1cm0.net
>>163
Rows(123).Insert

166:デフォルトの名無しさん
19/05/05 20:45:05.57 XON7SXZQr.net
sが抜けてましたね
すまんかった

167:デフォルトの名無しさん
19/05/05 20:45:39.14 IK0uVtFC0.net
Dim i As Integer
i = InputBox("数字を入力してください")
Rows(i).Insert Shift:=xlDown

168:デフォルトの名無しさん
19/05/05 21:40:51.68 BF8MV8/50.net
皆さん、ありがとう
試して報告させていただきます。

169:デフォルトの名無しさん
19/05/05 21:45:41.48 BF8MV8/50.net
>>164
nをfor next
で指定しても、動きますか?
エラーとなり、理由がわからず2日ここで止まってます。

170:デフォルトの名無しさん
19/05/05 22:22:12.93 jSkSyCW+d.net
コードも無いしエラーメッセ−ジも無いからエラーはよく分からんが、気になる点を1つ。
n行目に挿入されると、その行は何行目になるのかな?

171:デフォルトの名無しさん
19/05/05 22:29:34.83 pOOjaEue0.net
>>169
具体的に何行目に追加したいか書いたほうが良いと思う
一行だけじゃないのか

172:デフォルトの名無しさん
19/05/05 22:52:12.35 AcwGW1cm0.net
>>169
たぶん For に Step - が必要な案件と見た

173:デフォルトの名無しさん
19/05/05 22:56:04.02 AcwGW1cm0.net
>>169
いっぺんに何行も挿入したいときは
Rows("6:15").Insert
この例では5行と6行の間に10行いっぺんに入れて、元の6行が16行に移動してる

174:デフォルトの名無しさん
19/05/05 22:59:30.01 oCrXkNbC0.net
>>172
初めて挿入やった時に上から順に挿入してってぐっちゃぐちゃになったわw

175:デフォルトの名無しさん
19/05/05 23:12:10.31 BF8MV8/50.net
ありがとう、皆さん。お言葉に甘えて
Sub 行の挿入()
dim k As Integer
dim i As Integer
dim j As Integer
dim h As Integer
Set obj基本データ = Thisworkbook.Worksheets("基本データ")
h = 7
Do while obj基本データ.Cells(4,h).Value〈〉""
For i = 1 To obj基本データ.Cells(5,
h).End(xlDown).Row
k = obj基本データ.Cells(4,h).Value
j = obj基本データ.Cells(i+4,h).Value
ThisWorkbook.Worksheets(k+2).Rows(j).Insert
next i
h = h + 1
Loop
End Sub
回すと、
ThisWorkbook.Worksheets(k+2).Rows(j).Insert
のところで、実行時エラー'1004'
となります。

176:デフォルトの名無しさん
19/05/05 23:52:28.10 pOOjaEue0.net
>>175
構文はあってるけど、存在しないセルを参照している
多分jに0か、kに-2が入ってるとかそんな感じ

177:デフォルトの名無しさん
19/05/05 23:53:17.22 pOOjaEue0.net
変数の中身を確認して
確認方法はウォッチ式、イミディエイトウィンドウなどいろいろあるけど
msgbox j
msgbox k
ThisWorkbook.Worksheets(k+2).Rows(j).Insert
でも良い

178:デフォルトの名無しさん
19/05/06 00:20:05.87 50ISOOVP0.net
>>176
遅くにありがとうございました。
ご指摘のとおり、iに0が入るため、エラーになっていることがわかりました。
後は、空白セルを0と読み取らせない方法を調べてみます。
丸二日、エラーの理由がわからずに悩んでいました。
見ず知らずの方に助けてもらえて感謝です。ありがとうございました。

179:デフォルトの名無しさん
19/05/06 00:33:06.01 50ISOOVP0.net
>>178
j
でした。訂正します。

180:デフォルトの名無しさん
19/05/06 00:51:29.40 50ISOOVP0.net
>>176
IF j=0 then GoTo L1
を追加して、
エラーになるところを飛ばして解決しました。
ありがとうございました。

181:デフォルトの名無しさん
19/05/06 10:29:14.43 ZwYgATzZd.net
>>178
初心者は、問題がどこにあるのかに勘所が無いからこういう悩んで時間を使う経験をたくさんすると良い。
慣れれば5秒で気付く。
あと、Do〜Loopはいらない気がする。
hの代わりにiを使ってどうにかできると思うね。

182:デフォルトの名無しさん
19/05/06 10:30:20.40 ZwYgATzZd.net
>>178
間違えた。
hは列方向か。

183:デフォルトの名無しさん
19/05/10 16:54:45.46 SsAAf7AE0.net
VBA勉強中の者です。
Setステートメントを勉強しているのですが、オブジェクト型についてお聞きしたいです。RangeオブジェクトとかWorksheetオブジェクトなど、いろんなサイトなど見ても使いどころがよくつかめてないです。
どんなときに使うのか、教えてもらえるとありがたいです。

184:デフォルトの名無しさん
19/05/10 16:57:57.46 /nmPTcfU0.net
>>183
数値と文字列以外は全部オブジェクト

185:デフォルトの名無しさん
19/05/10 17:04:22.66 /nmPTcfU0.net
どんなときに使うのか、は一言で言うのは難しいが、基本的には保守のため
・何の変数か分からない時に名前をつける
range("a1:b2")だと何の範囲かはワークシート見ないと分からない
set 転記元 = range("a1:b2")
とすることで、そのrangeが何か一発で分かるようになる
ちなみに「何をするか」ではなく「何が入ってるか」を基準に命名すると後で分かりやすい
「何をするか」はfunctionの名前がそうなっているはずだ
・ある変数が2回以上登場する場合、最初に変数に入れておけばそのコードを変更する時に一回で済む
まぁこれは説明せんでもええわな
・保守しないならめんどくさいだけじゃん
そう、合っている
ちゃんと保守できるように書いて置いた方が、長い目で見ると楽なんだ。プラマイプラス

186:デフォルトの名無しさん
19/05/10 19:25:57.30 ZL9lN1sfd.net
>>184、185
レスありがとうございます。
185さん
感覚ですが、すごく単純な感じがします。そんな認識でよいです?
ただ184さんのいう
数値と文字列以外は全部オブジェクト
これがひっかかるんです。
range("a1:b2")がオブジェクトという認識でよい?
そのなかに文字があった場合は?
文字列じゃない?と思ってしまうが、それは違うんですよね。
仮に
range("b2").valueだった場合は値で、range("a1:b2")はオブジェクトという事?
はなしがまとまってなくて、すみません。

187:デフォルトの名無しさん
19/05/10 19:27:02.31 ZL9lN1sfd.net
↑183が書き込みしました。

188:デフォルトの名無しさん
19/05/10 19:40:34.80 tGc5sWC60.net
Excelのシート内部の表位置とかカラム位置とかデータ末尾とか特定するベストプラクティスってどんなんですか!
何十年前からある言語でこんだけ普及してるのにいまだに決まった答えがないとか

189:デフォルトの名無しさん
19/05/10 19:44:21.41 tfYAY6pzM.net
>>188
あのね、A1から使うのがExcelの正しい使い方なの
枠やらタイトルやら付けるのはバカジャップの間違った使い方なの

190:デフォルトの名無しさん
19/05/10 19:52:43.30 tGc5sWC60.net
一瞬で理解した

191:デフォルトの名無しさん
19/05/10 20:14:31.04 /nmPTcfU0.net
>>186
range("a1:b2")はオブジェクト。この中にプロパティとしてvalueやwidth、heightなどがある
もちろんrange("a1:b2").valueは文字列。
range("a1")に1が入っていて
range("a1")+2が3になるのは、range("a1:b2").valueが自動的に呼び出されて
range("a1").value+2になっているため
MSDNじっくり読んだほうがいいかもな
URLリンク(docs.microsoft.com)(object)

192:デフォルトの名無しさん
19/05/10 20:16:01.36 /nmPTcfU0.net
>>188
最強はこのページの
<S6> 書式付きセルを除外する (UsedRange)
URLリンク(www.niji.or.jp)
ケツから検索して見つかった奴が最後

193:デフォルトの名無しさん
19/05/10 21:34:51.98 ZL9lN1sfd.net
>>191
レスありがとうございます
誘導もありがとう!
じっくり読んでみます。
わからない所があったらまた聞くかもです。
中途半端な理解は嫌だし。さっかりと理解したいし。

194:デフォルトの名無しさん
19/05/10 22:33:38.03 Mw5h8bh90.net
プログラミングを理解するには、読むだけでなくとにかく実際に動かしてみることが大事

195:デフォルトの名無しさん
19/05/11 03:15:11.68 04x+b6lna.net
さっかりなw

196:デフォルトの名無しさん
19/05/11 08:20:45.16 0TYDlcnk0.net
>>194
そうですよね
やらないとわからないがほとんどです(T-T)
>>195
脳内変換ヨロシクです

197:デフォルトの名無しさん
19/05/11 19:56:32.57 C94O1bx/0.net
ADO使うと突然落ちるようになった。
何が原因J?

198:デフォルトの名無しさん
19/05/11 20:45:20.04 Y1ZlGg0p0.net
>>197
プロバイダはなに?

199:デフォルトの名無しさん
19/05/11 21:32:42.45 C94O1bx/0.net
>>198
Microsoft.ACE.OLEDB.12.0
PCによっては普通に実行できるので、原因がわからん。

200:デフォルトの名無しさん
19/05/11 21:36:03.53 pbKNvvnGa.net
質問です。
NumberFormatLocal = “yyyy””年””m””月””d””日””(aaa)”で書式の定義を変更しています。
NumberFormatLocal = ●“yyyy””年””m””月””d””日””(aaa)”
●の箇所に文字列を入れたいのですが”●”を入れるとエラーになります。解決方法はありますでしょうか?

201:デフォルトの名無しさん
19/05/11 21:40:16.93 C94O1bx/0.net
>>200
わからんけど、自動記録でやったものをコピペするとか。

202:デフォルトの名無しさん
19/05/11 21:46:39.70 VQwnSTgG0.net
マクロの記録取ってみたわ
ダブルコーテーションで括った中で、更にダブルコーテーションがいるっぽい
具体てt機にはこう
Selection.NumberFormatLocal = """あ""yyyy""年""m""月"""

203:デフォルトの名無しさん
19/05/11 21:46:58.83 pbKNvvnGa.net
>>201
解決しました。ありがとうございました。

204:デフォルトの名無しさん
19/05/12 02:13:17.21 anQ1bE+S0.net
もしかして、Access2016が入ってると、
Excel2013ではADO接続使えない?
Excel2013からAccess2016の参照で落ちるケースはググって見つけたけど、
ウチのはExcel2013からExcel2013で落ちる。

205:デフォルトの名無しさん
19/05/12 02:35:46.96 0u/cIV/f0.net
>>190
データとしてExcelを使う場合と、ドキュメントとしてExcelを使う場合とで、考え方がかわる。

206:デフォルトの名無しさん
19/05/12 08:45:07.80 OK9Y1i2P0.net
>>204
win下をdll検索して、複数見つかったらそれぞれ直接参照設定してみるとか
(単体で動いてるわけじゃない気もするから、期待薄かもしれんけど)

207:デフォルトの名無しさん
19/05/12 12:05:15.73 anQ1bE+S0.net
>>206
それもダメだったから、諦めてExcel2019買ったわ。
それだと普通に動いたから、
やっぱりExcel2013とAccess2016の組み合わせがダメだったみたい。
ありがとう。

208:デフォルトの名無しさん
19/05/12 16:17:36.32 UM6bazI+0.net
32ビット版だったとか?

209:デフォルトの名無しさん
19/05/12 17:19:48.24 anQ1bE+S0.net
>>208
Excel2013 ・・・ ADO接続OK
   ↓
Excel2013 + Access2016 ・・・ ここで突然落ちるようになる
   ↓
Excel2019 + Access2016 ・・・ 直った!
全部32bit。
本当は64bitにしたかったけど、ListViewとか、
一部使えなくなる機能があるので諦めた。

210:デフォルトの名無しさん
19/05/12 17:21:42.38 anQ1bE+S0.net
あ、Excel2013 + Access2016って、インストールの組み合わせ。
別に、Excel2013からAccess2016に接続しに行ったわけじゃない。
落ちたのは、Excel2013からExcel2013へのADO接続。

211:デフォルトの名無しさん
19/05/12 17:23:44.21 0u/cIV/f0.net
なんの話をしているのか他人にはさっぱりわからないw

212:デフォルトの名無しさん
19/05/12 18:10:56.69 w16fcO4J0.net
時刻がマイナスの場合
とは、if文でどうやってつくりますか?

213:デフォルトの名無しさん
19/05/12 18:20:18.19 O1RPDIWFM.net
>>212
マイナスの時刻など存在しない
If 1 = 2

214:デフォルトの名無しさん
19/05/12 18:23:52.94 w16fcO4J0.net
A−B=C
時刻の差のCがマイナス表示されるセルを
if文で
00:00:00
に直したいです

215:デフォルトの名無しさん
19/05/12 18:30:53.16 O1RPDIWFM.net
>>214
=TEXT(MAX(0, C), "hh:mm:ss")
VBAは要らん

216:デフォルトの名無しさん
19/05/12 18:33:52.80 w16fcO4J0.net
セルの設定ですね。
ありがとうございます。

217:デフォルトの名無しさん
19/05/12 20:06:16.73 0u/cIV/f0.net
プログラミングの初歩は大事なんだと思ったよ。
ある値のときは00時00分00秒にするという分岐を思いつかないんだから。

218:デフォルトの名無しさん
19/05/12 20:51:34.11 JDMVXB4ua.net
まあMIN/MAXを使って値をキャップするのは正統なプログラミングでは非常によく使われる方法だけど、
事務屋さんには意外と思いつかないかもね

219:デフォルトの名無しさん
19/05/12 21:54:23.80 UM6bazI+0.net
普通に時刻どうしで比較できるから、3分前とかそういうことかと思ってた

220:デフォルトの名無しさん
19/05/12 22:49:25.28 0u/cIV/f0.net
>>210
Office製品は基本的にバージョン違いを混在させられるようにはできていない。

221:デフォルトの名無しさん
19/05/13 07:47:02.77 J0xiSM4lM.net
>>220
そんなことはなくて条件満たせば使えるよ
URLリンク(www.microsoft.com)

222:デフォルトの名無しさん
19/05/13 09:04:58.38 bJahx30bM.net
>>219
時間と時刻

223:デフォルトの名無しさん
19/05/13 09:19:29.85 OGTR1ISy0.net
その前にいきなり時刻とか言い出した辺りでダメダメ。
人間が時刻と思ってるだけの可能性がある。
セルの書式や変数の型を元に説明しないのは、人間の目線で時刻と言ってる証拠。

224:デフォルトの名無しさん
19/05/13 13:56:52.37 p6Zrf1zY0.net
シャープで囲んでる人はちょっと

225:デフォルトの名無しさん
19/05/13 14:34:08.69 /2MppI/1M.net
VBAでは時刻と時間を Timeでずっとやり繰りしてたのに、c#で TimeSpan発見したときは叫んだわ

226:デフォルトの名無しさん
19/05/13 16:36:40.35 N0Eopnbu0.net
え?エクセルをADOでデータベースみたいに扱うこともできるの?

227:デフォルトの名無しさん
19/05/13 17:03:08.67 P7TvqqIDM.net
>>226
ちゃんと形式を整えておけば単純なSELECTなら使える
WHEREが機能するだけでOKってことならまあまあかな
JOINとかは当てにならないような気がする
DELETE, INSERT, UPDATE はもっと当てにならない

228:デフォルトの名無しさん
19/05/13 19:21:33.24 t89inGVt0.net
あてにならないってなんやねん

229:デフォルトの名無しさん
19/05/13 20:44:43.21 /95lNMvTM.net
>>228
他人だけど、ExcelのSQL操作はおまけ機能だから、標準SQLに対応してないから、やってみないとわからない。

230:デフォルトの名無しさん
19/05/13 21:00:39.75 N0Eopnbu0.net
まぁできちゃったらアクセスの立場ないわな

231:デフォルトの名無しさん
19/05/13 21:02:14.05 icbU5YOt0.net
SQL自体もう色々派閥が分かれすぎて

232:デフォルトの名無しさん
19/05/13 21:06:25.95 adbFFiEz0.net
>>229
馬鹿は死ねや
Accessのエンジンと同じだろ

233:デフォルトの名無しさん
19/05/13 21:10:27.82 /95lNMvTM.net
>>232
バージョンを気にしてくださいw

234:デフォルトの名無しさん
19/05/13 22:16:41.75 ErXZ/V3c0.net
>>226
出来るよ。
普通はやらないだろうけど、会社のPCにAccessが入ってないとか、
Accessは入ってるけど、事務のおばちゃんがExcelにしがみついて、
意地でも離さないとか、そういう状況で使える。
>>227
JOINは普通に使える。

235:デフォルトの名無しさん
19/05/13 22:42:40.28 ATfYCMP60.net
>>234
そうか、JOINも普通にできるのか...
「Excelもデータベースとして有効に使えるよね」なんて方向に行って欲しくない、という願望が
俺の心の中にバイアスを生んだようだ

236:デフォルトの名無しさん
19/05/13 23:05:59.93 RqskJpspx.net
というかPowerQueryやDAXでデータベース的な使い方が出来てしまうからな今のExcelは

237:デフォルトの名無しさん
19/05/13 23:39:26.70 N0Eopnbu0.net
エクセルでできるってすごい!
そこで疑問に思ったんですが以下のVBA書いてみましたが
Dim adoCn As Object
Dim adoRs As Object
Dim strSQL As String
Dim DBpath As String
DBpath = ThisWorkbook.Path
Set adoCn = CreateObject("ADODB.Connection")
Set adoRs = CreateObject("ADODB.Recordset")
adoCn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & DBpath & "\SampleData.xlsx;"←@
strSQL = "select A,B,C from シート名 order by A desc" ←A
adoRs.Open strSQL, adoCn
*何か処理
adoRs.Close
adoCn.Close 'コネクションのクローズ
Set adoRs = Nothing 'オブジェクトの破棄
Set adoCn = Nothing
@について
プロバイダーとファイル指定の記述の仕方はあってますか?
Aについて
列の指定とfromの方法は?
教えてください<(_ _)>

238:デフォルトの名無しさん
19/05/13 23:43:46.08 4/CDP/BQ0.net
秀和システムでいいから、古本を買って読めよw
ちゃんとサンプルが書いてある。アマゾンの古本は激安だぞ。

239:デフォルトの名無しさん
19/05/13 23:45:48.17 N0Eopnbu0.net
エクセルをデータベースとして使う記述があるのがどの本なのかさっぱり・・・
できれば本教えてもらえませんか?

240:デフォルトの名無しさん
19/05/13 23:47:08.95 adbFFiEz0.net
>>233
馬鹿は死ね

241:デフォルトの名無しさん
19/05/13 23:49:20.76 4/CDP/BQ0.net
>>239
Google検索でもサンプルは山のようにあるぞ。

242:デフォルトの名無しさん
19/05/14 00:09:21.56 XEzOoRRL0.net
ちょっとググって見ます

243:デフォルトの名無しさん
19/05/14 00:15:14.20 a29jNOd40.net
>>237
何通りかあったと思うけど、
その書き方だと[Sheet1$]かな。
プロバイダーも、adoCn.Providerにも、adoCn.Openにも書ける。
ブック名をFromの後に書く方法もある。
組み合わせは忘れたけど、どこかで指定していれば、
別の部分では省略できる感じ。

244:デフォルトの名無しさん
19/05/14 05:07:41.34 XEzOoRRL0.net
>>243
なるほど、勉強になります

245:デフォルトの名無しさん
19/05/14 19:07:26.92 wEGsmpoqp.net
URLリンク(dotup.org)
東京・大阪・北海道の各出発時間・到着時間を黄色い部分に「sendkeysで」、「それぞれ東京・大阪・北海道の順序を守って」入力したいです
実際にsendkeysでキーを送るのはブラウザ上のフォームであり、東京の時刻入力→tabとenterをsendkeyしつつ次のページに移動→大阪を入力、という風に処理するため、順序等が変更できません
また入力するのが東京・大阪・北海道だけでないかもしれないので、記載がある行すべてというイメージでお願いします
excelスレでも質問してみてますが、vba専門スレがあることに気付かされたのでこちらでお世話になります

246:デフォルトの名無しさん
19/05/14 20:14:46.00 Bsz/IupB0.net
だから、Sendkeysはやめろって。
これはお手軽にその場だけデータを取りたい時なんかに使うけど、制御出来ないから普通は使うべきじゃない。

247:デフォルトの名無しさん
19/05/14 20:18:43.38 wEGsmpoqp.net
もちろんそうなんですが自分には IE操作は敷居が高くて、愚直も愚直にsendkeysしか手段が思いつかないもので・・何か代替案ございますか?

248:デフォルトの名無しさん
19/05/14 20:22:02.95 9TMbmfYm0.net
どう考えてもIE操作の方が敷居が低いんだが

249:デフォルトの名無しさん
19/05/14 20:23:00.65 9TMbmfYm0.net
inputに文字列入れるだけだろ?
ソース見てidだかclassだか取得してポイって入れるだけじゃん

250:デフォルトの名無しさん
19/05/14 20:25:50.88 wEGsmpoqp.net
それがよーわからんのです・・
とりあえずググってすぐ見つかるサイトで特に初心者にわかりやすい解説してるサイトでも教えていただけませんか?

251:デフォルトの名無しさん
19/05/14 21:33:16.75 wEGsmpoqp.net
IE操作で頑張ってみてるんですが、リンクオープンして開いた別窓を操作するにはまたhtmldocにobjIE.documentを代入して・・ってしないといけないんですか?

252:デフォルトの名無しさん
19/05/14 21:59:36.21 IyB4HHSk0.net
>>251
別窓にしちゃう(なっちゃう)とそのウィンドウを探して、html取ってくることが必要になるので、できるなら避ける。
IE VBA
でググれば、参考サイト出てくる。あとは応用しだい
IEでは F12で開くやつも有用
がんばれ

253:デフォルトの名無しさん
19/05/14 22:06:13.16 wEGsmpoqp.net
>>252
社内システムなので必ず別窓になっちゃう仕様です
htmlの取り方教えてもらえませんか?

254:デフォルトの名無しさん
19/05/14 22:31:09.98 a29jNOd40.net
>社内システムなので
多分、このスレ見てる全員ズコーだわ、そのオチ。
システム部門の人に聞いちゃダメなんかい。

255:デフォルトの名無しさん
19/05/14 22:36:33.89 s0Vi/y5R0.net
CreateObject("Shell.Application").Windows() から探す

256:デフォルトの名無しさん
19/05/16 11:39:56.68 a1IyAHl+r.net
excelマクロでのバージョン管理てどうすればいいん
言われるがままに集計マクロ作ったら担当者毎に持ってるマクロのバージョン違ってあの機能が無いとか特殊な状況でエラー出る→それ先月直しましたよ
が頻発してる

257:デフォルトの名無しさん
19/05/16 12:20:32.52 5BGNguvP0.net
>>256
サーバー上にマクロ専用のエクセルファイルを置いて、
個々に配っているファイルからはそのマクロを参照させる

258:デフォルトの名無しさん
19/05/16 12:51:40.47 YRbGgWK/M.net
>>257
基本それだが、ずっと掴んでるやつがいるとバグ修正や機能追加のときに困る

259:デフォルトの名無しさん
19/05/16 14:16:39.46 5BGNguvP0.net
>>258
読み取り専用にしてもダメか?

260:デフォルトの名無しさん
19/05/16 14:16:55.41 5BGNguvP0.net
もちろん自分が編集する時は読み取り専用解除ね

261:デフォルトの名無しさん
19/05/16 14:43:29.72 wWtnEH3A0.net
コード書く画面を
背景は黒に、文字は白に、する方法を教えれ

262:デフォルトの名無しさん
19/05/16 15:42:20.38 Z2BhGmok0.net
ツール -> オプション -> エディターの設定

263:デフォルトの名無しさん
19/05/16 16:12:18.52 BYfNVo3YM.net
>>256
OS起動したら、サーバからコピーしてくるバッチ等を走らせる
小さいならいちいちバージョン確認しなくてもよい

264:デフォルトの名無しさん
19/05/16 18:04:23.53 rNkkKl6PM.net
みんな一々シャットダウンするのか?
スケジュールでコピーだろ

265:デフォルトの名無しさん
19/05/16 18:58:39.63 5BGNguvP0.net
>>>261
これ
URLリンク(tonari-it.com)
ちなみに書くとこはVBEって言うから覚えておくと検索できて便利

266:デフォルトの名無しさん
19/05/16 19:18:23.52 UtWIeHx/p.net
マクロ終了時にマクロ開始から終了までにかかった時間が秒までメッセージボックスに表示するってできる?

267:デフォルトの名無しさん
19/05/16 19:18:36.52 rD+4K505M.net
>>264
個々人のローカルフォルダにxlam があってそれが定期的に書き換えられるって事?
他のブックがxlamを掴んでる最中でもできる?

268:デフォルトの名無しさん
19/05/16 19:23:31.84 UPwRXvuL0.net
>>266
できる

269:デフォルトの名無しさん
19/05/16 19:26:21.47 5BGNguvP0.net
>>266
楽勝
Sub foo()
開始 = Now
'処理
終了 = Now
MsgBox Format(終了 - 開始, "hh:mm:ss")
End Sub

270:デフォルトの名無しさん
19/05/16 19:26:44.10 5BGNguvP0.net
>>268
URL春だけでもいいから教えてあげたらw

271:デフォルトの名無しさん
19/05/16 19:31:25.53 UtWIeHx/p.net
>>268はなんとかookスレで最近流行りの流れだよw
>>269ありがとう!

272:デフォルトの名無しさん
19/05/16 20:10:17.30 rNkkKl6PM.net
>>267
掴んでたらスルー

273:デフォルトの名無しさん
19/05/16 22:17:19.76 aE3zz80C0.net
>>256
起動時に何らかのファイルを参照するようにしておいて、
参照出来たらそのままOK。
出来なかったら、新たにファイルをDLする仕組みにする。
で、更新させたい時は、わざと参照用ファイルを消しておく。

274:デフォルトの名無しさん
19/05/16 22:24:00.58 yzKWQsxd0.net
>>273
xlamを共有するならそこのWorkbook_Open にそういう処理を入れておけばいいでしょうね

275:デフォルトの名無しさん
19/05/16 23:04:51.54 kfbhC4dW0.net
>>256
最新バージョン書いたテキストかなんかを共有に置いといて、起動時に見に行ってそれより古かったら更新促す警告出すとか

276:デフォルトの名無しさん
19/05/17 02:52:09.97 gYF5enuVM.net
Excelの起動時、マクロを実行させる:Excel(エクセル)マクロ
URLリンク(www.excel.usefulhp.com)
で良いだろ

277:デフォルトの名無しさん
19/05/17 09:22:35.60 YDbG3YPmr.net
共有パス見て実行とか大変そう面倒そうて主観があったけども
Application.Run "共有のパス!マクロ名 "
の1行でいけちゃうもんなのか…?
とりあえず試してみる
すでに誰かが開いてる?とか参照できないときの対処も色々試してみるありがとう

278:デフォルトの名無しさん
19/05/17 09:26:03.52 PC2o5teB0.net
>>277
そっちは使わないかな
俺はボタンにマクロの場所を登録する

279:デフォルトの名無しさん
19/05/17 09:26:30.66 PC2o5teB0.net
なんか日本語変だ
まぁいいか

280:デフォルトの名無しさん
19/05/17 12:25:15.46 cM5KCNydp.net
ちょっと筋外れるかもしれないけどvbeに行間なく詰めて書いたコードの選択範囲に1行ずつ改行入れるいい方法ない?

281:デフォルトの名無しさん
19/05/17 12:28:45.29 gxvYGXpT0.net
そんなのできない。サクラエディタで置換して貼り付けろ

282:デフォルトの名無しさん
19/05/17 22:00:27.88 BHkVW2uG0.net
>>280
VBEを操作すればできると思う。面倒だけど
まあ>>281の方法が合理的だろうな

283:デフォルトの名無しさん
19/05/18 00:21:37.50 qrQ2t1Xp0.net
>>280
改行コードを改行コード+改行コードで置換

284:デフォルトの名無しさん
19/05/18 00:55:20.52 pDLl57eM0.net
コードウィンドウ内の改行はCRLFじゃなくてLFだった筈。
そんなに難しくない。
でもこれが動く設定はマクロウィルスも動くから危険だよ。
Sub test()
Dim strCode As String
Dim stRW As Long
Dim stCL As Long
Dim edRW As Long
Dim edCL As Long
With Application.VBE.ActiveCodePane
.GetSelection stRW, stCL, edRW, edCL
strCode = .CodeModule.Lines(stRW, edRW - stRW + 1)
.CodeModule.DeleteLines stRW, edRW - stRW + 1
.CodeModule.InsertLines stRW, Replace(strCode, vbLf, vbLf & vbLf)
End With
End Sub

285:デフォルトの名無しさん
19/05/18 19:27:39.15 4RzeW/b40.net
専用のメソッドがあるのが凄いわ。
何を想定して用意してあるんだろう?
プログラムがプログラムを書き直すAIにでも使うのか?

286:デフォルトの名無しさん
19/05/18 20:16:07.59 8gQadrhx0.net
Application.VBE.ActiveCodePane
こんなの合ったのか
PaneはPanelかと思ったら、ペインの事なのね

287:デフォルトの名無しさん
19/05/18 20:29:02.38 P5JmHxRDM.net
VBEを拡張するためのオブジェクト群が用意されてるんだよね

288:デフォルトの名無しさん
19/05/19 09:22:38.02 MCPGuHEx0.net
Excel4マクロは自己書き換え自由だったから
機能的に負けるわけにはいかなかったんじゃね?

289:デフォルトの名無しさん
19/05/19 11:43:42.11 1xMNIuy/x.net
配布済マクロの修正パッチとかで大量のファイルや行を一括修正したいときは便利

290:デフォルトの名無しさん
19/05/19 12:03:05.34 igxNvdy7a.net
単価の低そうな涙ぐましい仕事だな

291:デフォルトの名無しさん
19/05/19 12:39:30.70 gILK5dpZ0.net
マクロ4はできる人がいない+やりたくないから単価超高いぞ
で、単価高くしても足が出る・・・

292:デフォルトの名無しさん
19/05/21 19:13:05.44 7gg6L6p3p.net
実行から終了まで数分かかるマクロを途中で止める方法ないですか?f4押したら「処理を止めました」のメッセージボックスとともに停止するとか。

293:デフォルトの名無しさん
19/05/21 19:31:11.94 OX+uPiO40.net
Break
ESC

294:デフォルトの名無しさん
19/05/21 19:37:07.71 K+4dE9j10.net
ループが長いならDoEvent入れておいて
msgbox "終了します"とendだけ書いたのを起動できるボタンどっかに置いとけばいい

295:284
19/05/21 20:04:23.19 MD1oUmkY0.net
ESCやBreakで止まるなら良いけど、それで止まらない処理ならウィンドウESC押しながらタスクバー上でマウスでウィンドウの切り替えをすると止まる。
どっかのブログで見て知ったけど役に立ってる。

296:デフォルトの名無しさん
19/05/21 21:15:28.57 QvaiZxJv0.net
こうする
URLリンク(youtu.be)

297:デフォルトの名無しさん
19/05/21 21:30:20.69 7gg6L6p3p.net
ほー
明日試してみます

298:デフォルトの名無しさん
19/05/21 22:08:13.75 R92gi7e40.net
2009/12/16に公開って何だよ。
20年くらい前に見たぞそれ。

299:デフォルトの名無しさん
19/05/22 06:58:44.20 SD95iW5CM.net
>>298
映像はどうみても20年以上前だな
的確な対応で現在も使える

300:デフォルトの名無しさん
19/05/22 09:27:28.15 ztZYN21m0.net
セルの値を数式に代入って無理でしょうか?
たとえばA1セルに乱数が入ってた場合に
どっかのセルに =A2-乱数 という数式を代入したい感じです

301:デフォルトの名無しさん
19/05/22 09:41:17.90 5+y7OppMM.net
=A2-A1

302:デフォルトの名無しさん
19/05/22 09:43:43.65 ogyeLG/uM.net
演算あり値コピーの話?

303:デフォルトの名無しさん
19/05/22 09:52:11.18 AHnUJ8Jk0.net
いやセル番地じゃなくて値を数式に代入したい感じです
たとえばA1セルに2,134という数字が入ってた場合に
=A2-2,134 という数式をどっかのセルに代入
A1セルが387だとしたら
=A2-387
説明下手糞で申し訳ないです

304:デフォルトの名無しさん
19/05/22 09:54:20.78 hC9fKDDe0.net
>>300
書いている意味がよくわからんど
セルに式でも値でも代入できる
ただ、乱数は曲者で常に変わるから
もう少しやりたいことを具体的に書き込もう

305:デフォルトの名無しさん
19/05/22 10:00:56.85 hC9fKDDe0.net
>>303
乱数は曲者で
A1セルが387だとしたら
=A2-387
ほかのセルに「=A2-387」を入れた時点でA1セルは変わるから
もう少し何をしたいのか書くように

306:デフォルトの名無しさん
19/05/22 11:59:27.46 zi+TqRd2r.net
そもそも数式はスレ違いだろ
VBA関係ないならどっかエクセルの使い方の板かスレかさがせ

307:デフォルトの名無しさん
19/05/22 13:17:58.06 /GezpU1zp.net
>>305
A1セルの乱数結果が現時点で387だとしたら
変数(仮にrとする)に、387を格納して
ほかのセル(仮にB1とする)に"=A2-r(中身387)"を入力したいって事?
それなら確かに関数じゃできないよね

308:284
19/05/22 13:58:22.19 WDej9GuM0.net
>>303
Range("C3").Value="=A2-" & Range("A1").Value
じゃ駄目?

309:デフォルトの名無しさん
19/05/22 16:05:46.41 hC9fKDDe0.net
>>307
それに意味あると思えない、乱数なんてふつうは仕事に使わない
例えば、学校の先生あたりが、引き算足し算などの問題を自動的に作りたいとか
であれば、A列に乱数1の結果をB列に乱数2の結果を
C列に計算式を、D列に回答をで別シートなどで問題文を作る
このぐらいだな

310:デフォルトの名無しさん
19/05/22 18:12:45.70 j7jZt3jJM.net
説明下手糞ってレベルじゃねぇぞ…

311:デフォルトの名無しさん
19/05/22 18:48:51.39 RRuRLAJCM.net
>>309
ちょっとしたシミュレーションで使うかもしれない。(Excelでやるとは言ってない)
>>302じゃダメなの?

312:デフォルトの名無しさん
19/05/22 19:16:53.47 CZzIGWUTM.net
>>311
ちょっとしたシミュレーション・・無いだろ
この文書力だとセルに入れたい式って
計算式の文字列かもしれん

313:デフォルトの名無しさん
19/05/22 22:59:24.50 bxcYYOqD0.net
もうあれだ。
ここは、何の用途に使うのか当たられたやつが優勝スレにしよう。

314:デフォルトの名無しさん
19/05/22 23:13:17.16 K7mhmRd90.net
完全乱数を使って円周率の計算をする

315:デフォルトの名無しさん
19/05/23 07:43:57.81 mLR+BkfhM.net
別に用途は何でもいいさ
興味ゼロってわけじゃないけど

316:デフォルトの名無しさん
19/05/23 10:22:05.81 WDXUv9KM0.net
こっちで作って欲しいと言われたものをつくってると
そんなもの作られたら困る
楽になって人が減らされると困る、と古参がちくちく
この古参、自分の作業を楽にしたい時には
これがもう偉そうな態度で、「作らせてやる」とでも言わんばかりに頼んでくる
どうしたいんよもう
っていうことないっすか
もう面倒なんで職場で作るのやめようかな
すんません落書きしちゃって

317:デフォルトの名無しさん
19/05/23 10:56:07.55 cSCM+dO10.net
厚労省で配布されている
URLリンク(www.mhlw.go.jp)
にある
URLリンク(www.mhlw.go.jp)
なんだけど、内容は単純で
1件いくらの検査があって、件数を入力すれば請求書が作成されるというもの
1シート=1自治体なので、複数の自治体へ請求する場合は、ユーザーがシートコピーして作る
VBAで各シートを集計して総括表に転写する
なんだけど、VBAみて
変数が多すぎてコーディング中に間違えても気づかんだろってのと
引っ張ってくるセルをConstで決め打ちしてるけど
これ後のメンテナンスでセル一個挿入することになったら修正大変やん と思いました。
というか、エラーメッセージの所で間違えて
行を表示すべきところを列表示しているけど
これこそ変数多すぎて分かりにくくした事が原因だと思います。
じゃあどうする、と言われたらみなさんならどうしますか?
同じ形の複数の2次元の表を合計するだけなんだから
スタート地点とゴール地点決めてやって
後はずらしていけばいいやんと思うのですが
後、小数とか負の値ぶっこんでも動作するのはモヤモヤするんだけど
まぁこの辺やりだしたらキリがないので使わせる相手によってどうするかは変えますかね

318:デフォルトの名無しさん
19/05/23 11:43:15.47 mLR+BkfhM.net
>>316
義務教育でプログラミングを扱うようになって、自分の仕事くらい自分でプログラミングできないようでは大変な事になるよ、
と教えてやればいい。
もしかしたら「手下にプログラミングさせればいい」と勘違いするかも知れないが、
それでは通用しないよと言ってやろう。
こういう話もあるし
URLリンク(lite.blogos.com)

319:デフォルトの名無しさん
19/05/23 16:11:36.77 hFcQqqxb0.net
>>316
ただ単純に業務全体を見ずに作るから役に立たないんだよ
業務に対して目的と効果を文書ではっきり示せば古参の意見を聞かなくていい

320:デフォルトの名無しさん
19/05/23 16:13:59.49 X/3FpVKz0.net
>>316
その古参の上司に報告しろ


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

2370日前に更新/181 KB
担当:undef