!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑2行に減ってるけど、同じ内容を3行に増やして貼り付けること
ExcelのVBAに関する質問スレ
コード書き込みや作成依頼もOK
次スレは>>980が立てること
無理なら細かく安価指定
※前スレ
Excel VBA 質問スレ Part75
https://mevius.5ch.net/test/read.cgi/tech/1644384272/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
Excel VBA 質問スレ Part76
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ブーイモ MMff-XZ6m)
2022/05/01(日) 02:23:41.78ID:2t63WK/jM42デフォルトの名無しさん (ワッチョイ 6a7d-4pAe)
2022/05/07(土) 17:29:10.04ID:stouWQDp0 VBAってマトモな会社は使用禁止でしょ
43デフォルトの名無しさん (ワッチョイ b7ce-PvPk)
2022/05/07(土) 19:21:47.63ID:WpJq4eDb044デフォルトの名無しさん (ワッチョイ b7ce-PvPk)
2022/05/07(土) 19:23:32.20ID:WpJq4eDb0 >>39-40
公式ドキュメントに8文字以下と書いてあるのに、たまに16文字返ってくるのは単なる勘違いで済む問題じゃないと思うぞ
公式ドキュメントに8文字以下と書いてあるのに、たまに16文字返ってくるのは単なる勘違いで済む問題じゃないと思うぞ
45デフォルトの名無しさん (アウアウウー Sa1f-cwrN)
2022/05/07(土) 20:33:59.56ID:gH0nu0qIa >>44
64bit 版のドキュメントが間に合ってないだけだろ
64bit 版のドキュメントが間に合ってないだけだろ
46デフォルトの名無しさん (ワッチョイ 17da-oDvp)
2022/05/07(土) 21:40:19.85ID:QipuKWLV0 >>44
実際の結果と説明が食い違ってたら説明の方が間違っている(修正が遅れている)だけだと思うが
実際の結果と説明が食い違ってたら説明の方が間違っている(修正が遅れている)だけだと思うが
47デフォルトの名無しさん (ワッチョイ b7ce-PvPk)
2022/05/07(土) 21:55:14.08ID:WpJq4eDb0 Officeが完全64bit対応になったのは2010から
12年遅れか……
12年遅れか……
48デフォルトの名無しさん (アウアウウー Sa1f-cwrN)
2022/05/07(土) 22:11:45.00ID:9QKKUGlra >>46
まあ単なるバグの可能性は "0" ではないけど
まあ単なるバグの可能性は "0" ではないけど
49デフォルトの名無しさん (ワッチョイ 8f68-e+q+)
2022/05/07(土) 22:14:36.93ID:T2FkQFbN0 >>38
これはバグでは
これはバグでは
50デフォルトの名無しさん (ワッチョイ 0b93-vVOv)
2022/05/07(土) 22:18:37.86ID:cppQitqZ0 >>47
64bitが標準になったのは2019からだけど
64bitが標準になったのは2019からだけど
5132 (ワッチョイ 9f02-PvPk)
2022/05/08(日) 08:41:56.79ID:mrWBx7yB0 Sub test()
Dim high As Long
Dim str As String
Dim num As Integer
'a
str = "転"
str = Asc(str)
str = Hex(str)
a = str
'a´
str = "転"
str = Asc(str)
str = Hex(CInt(str))
ad = str
'b
str = "転"
str = Hex(Asc(str))
str = str
b = str
'c
str = "転"
num = Asc(str)
str = Hex(num)
c = str
ありがとうございます。一旦は納得できました。
Dim high As Long
Dim str As String
Dim num As Integer
'a
str = "転"
str = Asc(str)
str = Hex(str)
a = str
'a´
str = "転"
str = Asc(str)
str = Hex(CInt(str))
ad = str
'b
str = "転"
str = Hex(Asc(str))
str = str
b = str
'c
str = "転"
num = Asc(str)
str = Hex(num)
c = str
ありがとうございます。一旦は納得できました。
52デフォルトの名無しさん (ワッチョイ 8f68-e+q+)
2022/05/08(日) 19:44:09.25ID:J4Oeet0G0 kou
'a
str = "転"
long_ = Asc(str)
'a
str = "転"
long_ = Asc(str)
53デフォルトの名無しさん (ワッチョイ 7eda-PvPk)
2022/05/08(日) 22:42:32.67ID:CUGu1qGH0 high は何のため
54デフォルトの名無しさん (ワッチョイ 2f2f-vjB4)
2022/05/09(月) 03:05:49.72ID:1tzp5qwq055デフォルトの名無しさん (ワッチョイ 43da-WAXe)
2022/05/09(月) 14:49:08.99ID:Ww9cdHsy0 脳内思い込み
一番タチ悪い
一番タチ悪い
56デフォルトの名無しさん (ワッチョイ 3ebb-HNGk)
2022/05/09(月) 18:18:14.33ID:7ATo4dDz0 コピー元のブックのシート上のチェックボックス(ON/OFF)を、
コピー先のブックのシート上のチェックボックス(すべてOFF)に
「チェックボックスのON/OFFの状態を」コピーしたいのですが
そういう命令はありますでしょうか?
[コピー元].Worksheets("シート名").Range("G3:AB5").Copy
[コピー先].Worksheets("シート名").Range("G3:AB5").PasteSpecial xlPasteAll
ではチェックボックスは空白のままなのですが、
「マウスでコピー元のG3:AB5を選ぶ→Ctrl+C→コピー先にCtrl+V」と手動で操作すると
G3:AB5内のチェックボックスのON/OFFもコピーされるので
なにか方法があるのではと思うのですが
すべてをペースト(PasteSpecial xlPasteAll)ではダメなのでしょうか
コピー先のブックのシート上のチェックボックス(すべてOFF)に
「チェックボックスのON/OFFの状態を」コピーしたいのですが
そういう命令はありますでしょうか?
[コピー元].Worksheets("シート名").Range("G3:AB5").Copy
[コピー先].Worksheets("シート名").Range("G3:AB5").PasteSpecial xlPasteAll
ではチェックボックスは空白のままなのですが、
「マウスでコピー元のG3:AB5を選ぶ→Ctrl+C→コピー先にCtrl+V」と手動で操作すると
G3:AB5内のチェックボックスのON/OFFもコピーされるので
なにか方法があるのではと思うのですが
すべてをペースト(PasteSpecial xlPasteAll)ではダメなのでしょうか
57デフォルトの名無しさん (ワッチョイ 6aad-HkNE)
2022/05/10(火) 10:07:55.18ID:4FhYKkQU0 ユーザーフォームのコントロールの位置調整について質問です。
テキストボックスA,B,Cが
A B C
と既に左右の間隔が均等に整列された状態になっており、
一番左にテキストボックスDを追加するとします。
D A B C
この時、A-B間(B-C間も同じ) と D-A間の間隔を同じにしたい場合、
手動計算する(それぞれのLeftプロパティを参照して、差分を手入力する)のではなく、お手軽に設定できる操作はありますか?
マウスのドラッグで D A B C を範囲選択して[書式]-[左右の間隔]-[間隔を均等にする]を選ぶと、
両端(DとC)の位置が固定された上で、その内側(D-A間、A-B間、B-C間)が均等になるだけで、
今回求めている結果にはなりませんでした。
テキストボックスA,B,Cが
A B C
と既に左右の間隔が均等に整列された状態になっており、
一番左にテキストボックスDを追加するとします。
D A B C
この時、A-B間(B-C間も同じ) と D-A間の間隔を同じにしたい場合、
手動計算する(それぞれのLeftプロパティを参照して、差分を手入力する)のではなく、お手軽に設定できる操作はありますか?
マウスのドラッグで D A B C を範囲選択して[書式]-[左右の間隔]-[間隔を均等にする]を選ぶと、
両端(DとC)の位置が固定された上で、その内側(D-A間、A-B間、B-C間)が均等になるだけで、
今回求めている結果にはなりませんでした。
58デフォルトの名無しさん (ラクッペペ MMe6-u2F+)
2022/05/10(火) 10:19:04.03ID:ODIjuWluM 一生に一度しか使用しない機能は実装されません
59デフォルトの名無しさん (ワッチョイ 6ada-PvPk)
2022/05/10(火) 10:49:36.48ID:G5I31YZG0 D A B C を左右均等に並べたいんじゃ無いのか?
D-A-B-C とか、スペースを-で表さないと、コッチからすれば説明文の上下は一緒に読めるんだが?
D---A-B-C とかか?
D-A-B-C とか、スペースを-で表さないと、コッチからすれば説明文の上下は一緒に読めるんだが?
D---A-B-C とかか?
6057 (ワッチョイ 6aad-HkNE)
2022/05/10(火) 11:44:31.14ID:4FhYKkQU0 >>59
スペースをハイフンで示します。
最初の状態
A----B----C
Aの左側にDを追加するとします。
D-A----B----C
マウスのドラッグで DABC を範囲選択して[書式]-[左右の間隔]-[間隔を均等にする]を選んだ場合は、
両端(DとC)の位置が固定された上で、その内側(D-A間、A-B間、B-C間)が均等になるだけ。
この場合は、最初の状態でのA-B間(B-C間)の間隔(スペース4個分)が保持されていません。
D---A---B---C
今回求めている結果
D----A----B----C
スペースをハイフンで示します。
最初の状態
A----B----C
Aの左側にDを追加するとします。
D-A----B----C
マウスのドラッグで DABC を範囲選択して[書式]-[左右の間隔]-[間隔を均等にする]を選んだ場合は、
両端(DとC)の位置が固定された上で、その内側(D-A間、A-B間、B-C間)が均等になるだけ。
この場合は、最初の状態でのA-B間(B-C間)の間隔(スペース4個分)が保持されていません。
D---A---B---C
今回求めている結果
D----A----B----C
61デフォルトの名無しさん (ワッチョイ 6ada-PvPk)
2022/05/10(火) 11:55:55.13ID:G5I31YZG0 Cを必要なだけ右に寄せてからその操作すれば?
ぴったり位置合わせしたいとかなら https://www.moug.net/tech/exvba/0120023.html 辺り参考に
ぴったり位置合わせしたいとかなら https://www.moug.net/tech/exvba/0120023.html 辺り参考に
62デフォルトの名無しさん (ワッチョイ 8f68-e+q+)
2022/05/10(火) 11:58:47.56ID:Q/OuvBXU0 >>56
どのチェックボックス?フォーム?activeX?
どのチェックボックス?フォーム?activeX?
63デフォルトの名無しさん (スププ Sd8a-y2gA)
2022/05/10(火) 13:26:52.13ID:EvytVRjpd65デフォルトの名無しさん (ワッチョイ 6aad-HkNE)
2022/05/10(火) 21:54:52.33ID:4FhYKkQU0 >>61
ありがとうございます。参考にします。
ありがとうございます。参考にします。
6656 (ワッチョイ 3ebb-uszm)
2022/05/11(水) 07:58:45.59ID:VwZpfkps067デフォルトの名無しさん (ワッチョイ 2301-PvPk)
2022/05/12(木) 01:22:53.69ID:UrRQ3K070 'これ実行するとどうなりますか?
'Q1 「 3.2to4.1(14)ng:4>=4 」と
' 「 3.2to4.1(25)ng:4>=4 」になりますか?
'Q2 「 3.7to4(9)ng:4>=4.9 a:3.9 」と
' 「 3.8to4(9)ng:4>=5 a:4 」になりますか?
Sub test()
For i = 1 To 4 Step 1
Select Case i
Case 1
a_from = 3.2: a_to = 4.1: a_max = 4# 'if[4 >= 4]でFalseになる
Case 2
a_from = 4.2: a_to = 5.1: a_max = 5# 'if[5 >= 5]でFalseになるか確認用
Case 3
a_from = 3.7: a_to = 4#: a_max = 4# 'aが3.9までしかいかない
Case 4
a_from = 3.8: a_to = 4#: a_max = 4# 'aが4までいく
End Select
c = 0
Debug.Print "***** from " & a_from & " to " & a_to & " max " & a_max, String(60, "*")
For a = a_from To a_to Step 0.1
For b = 0# To 0.2 Step 0.1
c = c + 1
ab = a / (1 - b)
okng = "ng"
If a_max >= ab Then okng = "OK"
Debug.Print a_from & "to" & a_to & "(" & c & ")" & okng & ":" & a_max & ">=" & Round(ab, 1) _
, "a:" & a, "b:" & b, "max:" & a_max, okng, "ab:" & ab
' Debug.Assert a_max >= a '[4 >= 4]でFalseになる
Next
Next
Next
End Sub
'Q1 「 3.2to4.1(14)ng:4>=4 」と
' 「 3.2to4.1(25)ng:4>=4 」になりますか?
'Q2 「 3.7to4(9)ng:4>=4.9 a:3.9 」と
' 「 3.8to4(9)ng:4>=5 a:4 」になりますか?
Sub test()
For i = 1 To 4 Step 1
Select Case i
Case 1
a_from = 3.2: a_to = 4.1: a_max = 4# 'if[4 >= 4]でFalseになる
Case 2
a_from = 4.2: a_to = 5.1: a_max = 5# 'if[5 >= 5]でFalseになるか確認用
Case 3
a_from = 3.7: a_to = 4#: a_max = 4# 'aが3.9までしかいかない
Case 4
a_from = 3.8: a_to = 4#: a_max = 4# 'aが4までいく
End Select
c = 0
Debug.Print "***** from " & a_from & " to " & a_to & " max " & a_max, String(60, "*")
For a = a_from To a_to Step 0.1
For b = 0# To 0.2 Step 0.1
c = c + 1
ab = a / (1 - b)
okng = "ng"
If a_max >= ab Then okng = "OK"
Debug.Print a_from & "to" & a_to & "(" & c & ")" & okng & ":" & a_max & ">=" & Round(ab, 1) _
, "a:" & a, "b:" & b, "max:" & a_max, okng, "ab:" & ab
' Debug.Assert a_max >= a '[4 >= 4]でFalseになる
Next
Next
Next
End Sub
68デフォルトの名無しさん (ワッチョイ b7ce-PvPk)
2022/05/12(木) 02:12:42.08ID:y5qWaFnT069デフォルトの名無しさん (ワッチョイ be01-S2Xa)
2022/05/13(金) 15:49:14.84ID:m1gysKVC0 Dim a
a = Range("A1:B2")
これだけでaが2×2の配列になるとたった今知ったのですが
このことを手放しに使って良いのでしょうか、それとも邪道だから
Dim a(2, 2)なり要素数まで指定した方が良いのでしょうか。
a = Range("A1:B2")
これだけでaが2×2の配列になるとたった今知ったのですが
このことを手放しに使って良いのでしょうか、それとも邪道だから
Dim a(2, 2)なり要素数まで指定した方が良いのでしょうか。
70デフォルトの名無しさん (ワッチョイ b7ce-PvPk)
2022/05/13(金) 15:56:46.69ID:Bn5ry050071デフォルトの名無しさん (ワッチョイ d35f-PvPk)
2022/05/13(金) 16:05:23.39ID:zF4dJdoD0 それ便利だけど誤読しやすいので静的メソッドにしてる
ArrayExt.FromRange(Me.Range("A1:B2"))
みたいな
ArrayExt.FromRange(Me.Range("A1:B2"))
みたいな
72デフォルトの名無しさん (ワッチョイ 9f5f-pnAN)
2022/05/13(金) 19:41:50.80ID:q/KvZ9/90 officescript調べてみたけど意外と分かりやすかった
これならVBAがなくなっても大丈夫そう
これならVBAがなくなっても大丈夫そう
73デフォルトの名無しさん (ワッチョイ 9f5f-pnAN)
2022/05/13(金) 19:50:05.37ID:q/KvZ9/90 >>69
型使わないとバリアント型だから二次元配列になるわけか
型使わないとバリアント型だから二次元配列になるわけか
74デフォルトの名無しさん (ワッチョイ 9f5f-pnAN)
2022/05/13(金) 19:53:17.10ID:q/KvZ9/90 ちなみに参考にしてる人はこう書いてた
Dim a As Variant
a = Range("A1:B2").Value
Dim a As Variant
a = Range("A1:B2").Value
75デフォルトの名無しさん (エアペラ SDd7-vVOv)
2022/05/13(金) 22:54:29.72ID:BcFt2CuGD aは要するにポインタだからな
76デフォルトの名無しさん (ワッチョイ 7eda-PvPk)
2022/05/13(金) 22:58:14.08ID:JesbR9jP0 c以上ならポインた
77デフォルトの名無しさん (アウアウウー Sa1f-PvPk)
2022/05/13(金) 23:28:52.57ID:94QyLQ1Xa78デフォルトの名無しさん (ワッチョイ ffbb-bUW4)
2022/05/14(土) 01:49:07.38ID:5NJ35cqH0 セルの値を取得して書き換えて…ってやるより二次元配列で処理する方が体感3倍くらい速いから、高速化したいなら配列使えばいいよね
ただ他の人もわかるようにとかメンテナンス性考えると避けた方が無難だったり、ケースバイケース
ただ他の人もわかるようにとかメンテナンス性考えると避けた方が無難だったり、ケースバイケース
79デフォルトの名無しさん (ワッチョイ 7dda-o6RS)
2022/05/14(土) 04:08:54.94ID:wh2tsa6Q0 他人の使い勝手なんか微塵も考えていないヤツが大半だろ現場じゃあ
80デフォルトの名無しさん (ワッチョイ bfce-yvGd)
2022/05/14(土) 04:13:11.38ID:JIfRBOPe0 Variantはポインタじゃなくて共用体
そもそもVariantオブジェクトはVBA固有の機能じゃなくてWindowsに組み込まれてて、別の言語からも自由に使える
どういう場面で役に立つのかわからんけど
そもそもVariantオブジェクトはVBA固有の機能じゃなくてWindowsに組み込まれてて、別の言語からも自由に使える
どういう場面で役に立つのかわからんけど
81デフォルトの名無しさん (ラクッペペ MM17-3Kew)
2022/05/14(土) 04:32:51.17ID:bV9+cuz+M ポインタ的な使い方するならVariant型ではなくてObject型
Dim a As Object (総称オブジェクト型)
Rangeオブジェクトに特定するなら
Dim a As Range (固有オブジェクト型)
Dim a As Object (総称オブジェクト型)
Rangeオブジェクトに特定するなら
Dim a As Range (固有オブジェクト型)
82デフォルトの名無しさん (ワッチョイ 9b4f-aONe)
2022/05/14(土) 08:18:11.37ID:ddohEedh0 Variantってよく分からん型だよな
Objectもそうでないものも仕舞えるし
.Netで封印されたのも頷ける
Objectもそうでないものも仕舞えるし
.Netで封印されたのも頷ける
83デフォルトの名無しさん (ワッチョイ 637c-Lk/W)
2022/05/14(土) 10:07:30.24ID:BHEGSPOf0 >>78
配列の方が断然早いよね。
富○通がVBで作ったEXCEL名簿出力アプリが5時間以上かかってるのが、俺がEXCELVBAで組んだのは30分で終わる。
しかも富○通のはデータ1行ごとにコピペしてるので
動かしてる間コピーのバッファが奪われて他の作業が一切できない。
配列の方が断然早いよね。
富○通がVBで作ったEXCEL名簿出力アプリが5時間以上かかってるのが、俺がEXCELVBAで組んだのは30分で終わる。
しかも富○通のはデータ1行ごとにコピペしてるので
動かしてる間コピーのバッファが奪われて他の作業が一切できない。
84デフォルトの名無しさん (ワッチョイ d710-aONe)
2022/05/14(土) 10:48:24.07ID:0kHlnQQT0 オレオレ自慢
85デフォルトの名無しさん (スップ Sd03-lIli)
2022/05/14(土) 10:57:42.22ID:jjfnS8MSd VBのコードみてVBAにする際に少し手直しした程度なんだと思うが
どの程度のデータか不明だけど30分もかかるような処理も自分としてはNGだわ
まあどっちも夜流して朝みればいいなら5時間でも一緒程度
どの程度のデータか不明だけど30分もかかるような処理も自分としてはNGだわ
まあどっちも夜流して朝みればいいなら5時間でも一緒程度
86デフォルトの名無しさん (オッペケ Sr99-YYQQ)
2022/05/14(土) 11:08:32.24ID:XMrr4JDhr 何分とかかかる時点でRDBとか外出ししてやれないかとか考えちゃう
Excelには荷が重いんじゃないかとね
Excelには荷が重いんじゃないかとね
87デフォルトの名無しさん (アウアウウー Sa31-bUW4)
2022/05/14(土) 11:27:37.36ID:x+cFGSU+a どんだけ長い処理でも耐えられて2分までだわ
30分かかるとか論外
30分かかるとか論外
88デフォルトの名無しさん (スププ Sd2f-xGWD)
2022/05/14(土) 11:39:20.09ID:tj4PNqc2d そんなに処理に時間がかかるってことは多分生データが数Gクラスだろうからaccessやexcelでは非効率だろう
ここに>83の間抜けさがよく現れてる
ここに>83の間抜けさがよく現れてる
89デフォルトの名無しさん (ワッチョイ 7b42-Suzn)
2022/05/14(土) 11:43:13.01ID:5E8BmIH10 そんな大規模なデータを扱ったことないからわからないけど
30分もかかったら途中で無限ループに入ってんだろなと思って止めてしまうわ
30分もかかったら途中で無限ループに入ってんだろなと思って止めてしまうわ
90デフォルトの名無しさん (ワッチョイ 6768-mOD9)
2022/05/14(土) 11:59:12.73ID:VTp6T5x/0 vbaを30分も動かすってどんな処理だよ
あとあまり長い時間動かしっぱなしにすると大体フリーズしてるぞ
あとあまり長い時間動かしっぱなしにすると大体フリーズしてるぞ
91デフォルトの名無しさん (スップ Sd03-lIli)
2022/05/14(土) 12:14:29.94ID:jjfnS8MSd どんな処理でも構わないけどExcelのプロセスが起動してるときに新規のExcel起動>ファイルを開くで開けばいいけど
無意識のうちにダブルクリックなんかで開こうとしたらVBA実行中のプロセスで開かないとも限らないから
30分の拘束ってのは日中ならなし
無意識のうちにダブルクリックなんかで開こうとしたらVBA実行中のプロセスで開かないとも限らないから
30分の拘束ってのは日中ならなし
92デフォルトの名無しさん (ワッチョイ bfce-yvGd)
2022/05/14(土) 12:55:50.88ID:JIfRBOPe0 そんなに速くしたら、フリーズしてないか監視する仕事の人がクビになっちゃうだろ
ああいうのは、わざと1日かかるように作ってあるんだよ
ああいうのは、わざと1日かかるように作ってあるんだよ
93デフォルトの名無しさん (ワッチョイ 7dda-o6RS)
2022/05/14(土) 13:31:33.15ID:wh2tsa6Q0 なんでExcelエキスパート集団の富○通がそんなクソ遅いマクロ書くのか不思議だ。
94デフォルトの名無しさん (ワッチョイ 6768-mOD9)
2022/05/14(土) 15:15:38.33ID:VTp6T5x/0 >Excelエキスパート集団
それはない
それはない
95デフォルトの名無しさん (スップ Sdcf-lPuq)
2022/05/14(土) 16:41:13.43ID:9uXA4NxPd 富士通が直接作っているのでないだろうし、たった一つの例で全部がわかったつもりになる幼稚なアホ
96デフォルトの名無しさん (ワッチョイ f101-5bcZ)
2022/05/14(土) 18:27:44.98ID:msymY1pp0 あんまり処理に時間かかるようなやつならプログレスバーやらひとまず動いてることがわかるようなものを入れとくわ
97デフォルトの名無しさん (ワッチョイ 17ff-0svr)
2022/05/14(土) 18:32:44.86ID:qaSd7ep40 1.xlsx、2.xlsx、3.xlsx、・・・、1000.xlsxという連番のブックがあって
そのすべてにssssというシートがあって
そのすべてのD2(R2C4)セルにデータがあるとして
あるブックのA1~A1000に1~1000が入力してあって、
それぞれの隣(B1~B1000)に対応するブック(B500には500.xlsx)の
シートssssのD2セルの中身を持ってくるのってどうすればいいですか?
ExecuteExcel4Macroとか使ってそんなに難しくなくやれるかと思いきやまるでうまくいかない…
そのすべてにssssというシートがあって
そのすべてのD2(R2C4)セルにデータがあるとして
あるブックのA1~A1000に1~1000が入力してあって、
それぞれの隣(B1~B1000)に対応するブック(B500には500.xlsx)の
シートssssのD2セルの中身を持ってくるのってどうすればいいですか?
ExecuteExcel4Macroとか使ってそんなに難しくなくやれるかと思いきやまるでうまくいかない…
98デフォルトの名無しさん (エアペラ SD1d-I8Wv)
2022/05/14(土) 18:58:29.62ID:lDPvxjtFD >>94
方眼紙はじめとした使い方への皮肉だろ
方眼紙はじめとした使い方への皮肉だろ
99デフォルトの名無しさん (ワッチョイ 2d5f-yvGd)
2022/05/14(土) 19:14:09.21ID:yHnyJFGQ0 >>97
他に条件や例外がないなら自分で書いてる通り「そんなに難しくない」が、どこで詰まってるの?
他に条件や例外がないなら自分で書いてる通り「そんなに難しくない」が、どこで詰まってるの?
100デフォルトの名無しさん (ワッチョイ 6768-mOD9)
2022/05/14(土) 19:20:25.44ID:VTp6T5x/0 >>97
ExecuteExcel4Macroはデフォで無効にされた
なんか知らんが俺も動かせなかったからもうベタ書きで
https://forest.watch.impress.co.jp/docs/serial/yajiuma/1357642.html
Sub Sample1()
Set t = ThisWorkbook
For i = 1 To 3
Set databook = Workbooks.Open(Filename:="C:\Users\81909\Downloads\" & i & ".xlsx")
t.Sheets("ssss").Cells(i, 2) = databook.Sheets("ssss").Cells(2, 4)
databook.Close
Next
End Sub
>>98
それならok
ExecuteExcel4Macroはデフォで無効にされた
なんか知らんが俺も動かせなかったからもうベタ書きで
https://forest.watch.impress.co.jp/docs/serial/yajiuma/1357642.html
Sub Sample1()
Set t = ThisWorkbook
For i = 1 To 3
Set databook = Workbooks.Open(Filename:="C:\Users\81909\Downloads\" & i & ".xlsx")
t.Sheets("ssss").Cells(i, 2) = databook.Sheets("ssss").Cells(2, 4)
databook.Close
Next
End Sub
>>98
それならok
101デフォルトの名無しさん (ワッチョイ f101-5bcZ)
2022/05/14(土) 19:26:19.82ID:msymY1pp0 内容あまり理解出来てないのかもしれないけど
B500の行取得してワークブックオープンで引数ファイルパス500で開いてデータ抜きたいところ抜けば良いのではないでしょうか。
4使うあたり処理を重くしたくないのでワークブックを開きたくないようにも見えますが
B500の行取得してワークブックオープンで引数ファイルパス500で開いてデータ抜きたいところ抜けば良いのではないでしょうか。
4使うあたり処理を重くしたくないのでワークブックを開きたくないようにも見えますが
102デフォルトの名無しさん (スップ Sd03-lIli)
2022/05/14(土) 19:51:35.87ID:jjfnS8MSd こんな感じになる文字列を作ればいけないか?(フォルダ名とファイル名を変更していく)
MsgBox ExecuteExcel4Macro("'フォルダ名\[1000.xlsx]ssss'!R2C4")
MsgBox ExecuteExcel4Macro("'フォルダ名\[1000.xlsx]ssss'!R2C4")
103デフォルトの名無しさん (ワッチョイ 91da-Hs+l)
2022/05/15(日) 01:22:22.35ID:xmtudDvv0 MSHTML.HTMLDocumentのbody.outerHtmlに何か代入しようとすると、
あるPCでは問題なく出来るのに、
別のPCではアプリケーション定義のエラーがでる
何故?
ソースは同じなのに
あるPCでは問題なく出来るのに、
別のPCではアプリケーション定義のエラーがでる
何故?
ソースは同じなのに
104デフォルトの名無しさん (スフッ Sd2f-xGWD)
2022/05/15(日) 08:18:10.46ID:Jt2O43PNd 参照設定は?
105デフォルトの名無しさん (ワッチョイ 3d01-yvGd)
2022/05/15(日) 13:24:19.34ID:K6VbLnva0 >>68
即レスいただいてたのに遅くなりました。ありがとうございます。
常識なんですね。とてもためになりました。
少数が原因だろうと思いつつもローカルウィンドウの値は整数だし
Fixしても発生するので困ってました。ありがとうございます。
即レスいただいてたのに遅くなりました。ありがとうございます。
常識なんですね。とてもためになりました。
少数が原因だろうと思いつつもローカルウィンドウの値は整数だし
Fixしても発生するので困ってました。ありがとうございます。
106デフォルトの名無しさん (ワッチョイ 91da-Hs+l)
2022/05/15(日) 15:21:30.27ID:xmtudDvv0107デフォルトの名無しさん (ササクッテロ Spa5-nyNy)
2022/05/15(日) 17:45:40.00ID:SLK6Xy6bp >>106
参照不可はない?
参照不可はない?
108デフォルトの名無しさん (ササクッテロ Spa5-nyNy)
2022/05/15(日) 17:49:03.93ID:i2BwfRJap >>83
依頼元の情報提供不足。対象件数とか。
依頼元の情報提供不足。対象件数とか。
109デフォルトの名無しさん (ワッチョイ 2b7c-I8Wv)
2022/05/15(日) 20:29:54.61ID:EFSZcQ6p0 VBAで作ったブックを指定するにはどうやるのがいいんでしょうか
VBAで複数ブックを作るとBook1、Book2、…となりますが、
どうやってそれぞれのブックを指定してやればいいのかが分かりません
VBAで複数ブックを作るとBook1、Book2、…となりますが、
どうやってそれぞれのブックを指定してやればいいのかが分かりません
110デフォルトの名無しさん (ワッチョイ 1f17-5bcZ)
2022/05/15(日) 20:48:22.92ID:xHyGsu5B0 ブックの作成の際にワークブック変数にセットする
set=workbooks.add
set=workbooks.add
111デフォルトの名無しさん (ワッチョイ f101-5bcZ)
2022/05/15(日) 21:20:44.06ID:i/ziY72x0 変数に格納するってのは名前をつけてあげるみたいな意味合いがある気がする
変数作ってセットすれば呼び出しやすい
変数作ってセットすれば呼び出しやすい
112デフォルトの名無しさん (ワッチョイ ebda-yvGd)
2022/05/15(日) 22:58:08.71ID:e0cA7YQF0 Set wb = ThisWorkbook
Set ws = wb.Worksheets("sheet名")
とやっといて、
カーソル移動したいだけなのに、
ws.Range("B3").Select
とやったら、
「RangeクラスのSelectメソッドが失敗しました」
と出て動かなくなって・・・???
原因はRange.Selectやる前に
当該sheetをActivateしていないことだと
今日、ようやく知ったアタシが通り過ぎますよ・・・
Set ws = wb.Worksheets("sheet名")
とやっといて、
カーソル移動したいだけなのに、
ws.Range("B3").Select
とやったら、
「RangeクラスのSelectメソッドが失敗しました」
と出て動かなくなって・・・???
原因はRange.Selectやる前に
当該sheetをActivateしていないことだと
今日、ようやく知ったアタシが通り過ぎますよ・・・
11397 (ワッチョイ 17ff-0svr)
2022/05/15(日) 23:36:58.31ID:VONG1GsX0114デフォルトの名無しさん (ワッチョイ ffbb-bUW4)
2022/05/15(日) 23:39:04.92ID:km049kvp0 >>112
VBAやっててSelect使うことなんてほぼ無いんだからその仕様を知らないことを気にしなくていい
VBAやっててSelect使うことなんてほぼ無いんだからその仕様を知らないことを気にしなくていい
115デフォルトの名無しさん (ワッチョイ cba5-fImR)
2022/05/15(日) 23:53:26.84ID:sFHTlWBy0116デフォルトの名無しさん (ワッチョイ 3fac-YYQQ)
2022/05/16(月) 00:14:35.90ID:D08mu/WY0 セルとかSelectするのは最後くらいだもんなあ
117デフォルトの名無しさん (ワッチョイ 91da-Hs+l)
2022/05/16(月) 01:37:32.91ID:PWfPx8Kl0 >>107
無いんだよね
代入が出来ないだけで表示は出来るんだけど、
""の空文字すら入れられないのは何なのか…
型が一致しないエラーでもないし
仕方がないからDocument.writeで代用したけど
無いんだよね
代入が出来ないだけで表示は出来るんだけど、
""の空文字すら入れられないのは何なのか…
型が一致しないエラーでもないし
仕方がないからDocument.writeで代用したけど
118デフォルトの名無しさん (ワッチョイ ebda-Lh2i)
2022/05/16(月) 07:25:27.55ID:x3MSJzWb0 >>114
気象庁の過去気象データ1時間値を
DLしようとしたら、
1日ごとにURLが違うので、
1日分を読んではコピペさせてるんだけど・・・
単体項目なら1年分一度に落とせるけど、
1観測地点の全項目は1日ごとの模様
気象庁の過去気象データ1時間値を
DLしようとしたら、
1日ごとにURLが違うので、
1日分を読んではコピペさせてるんだけど・・・
単体項目なら1年分一度に落とせるけど、
1観測地点の全項目は1日ごとの模様
119デフォルトの名無しさん (ワッチョイ bfce-yvGd)
2022/05/16(月) 09:05:21.75ID:gw7DnXAE0120デフォルトの名無しさん (ワッチョイ 1949-yvGd)
2022/05/16(月) 10:02:47.99ID:a802uHDS0 ワイなら大まかに
「データをURLでフェッチする」機能
「データをシートに表現する」機能
とかに分けてそれぞれの中でループする
どんなデータ取るんかとか知らんけど
過去の気象データなら変化ないんやろから(少しずつしか追加されないし)
あらかたDLしちゃって毎日追加する運用でよくね
Accessで動くか知らんがワイなら楽だし(R)DBにして、
Excelは表現に特化させる
まあDBとして考えるなら119の言うように特定のデータをカラムとして取り込むほうがいいけどね
「データをURLでフェッチする」機能
「データをシートに表現する」機能
とかに分けてそれぞれの中でループする
どんなデータ取るんかとか知らんけど
過去の気象データなら変化ないんやろから(少しずつしか追加されないし)
あらかたDLしちゃって毎日追加する運用でよくね
Accessで動くか知らんがワイなら楽だし(R)DBにして、
Excelは表現に特化させる
まあDBとして考えるなら119の言うように特定のデータをカラムとして取り込むほうがいいけどね
121デフォルトの名無しさん (ワッチョイ 7dda-o6RS)
2022/05/16(月) 11:38:04.10ID:DOkjRxjB0 >>115
この人の書くコードは読みやすいよね
この人の書くコードは読みやすいよね
122デフォルトの名無しさん (ワントンキン MM9f-Lh2i)
2022/05/16(月) 13:47:28.98ID:CQNp6U12M >>119
>>118
> データをコピペするだけならカーソル移動は必要ない
そうなんだ・・・
あたしゃ、
単ページのDLとその後の整形は
PowerQuelyがやりやすかったので、
勢い、1日分ごと切って貼ってをVBAで・・・
って発想でやってた。
クエリー更新もVBAの中に入れて。
ネットの事例かき集めて
自己流で作ったのはこんな感じ。
' DBテーブルの最終行の次行を計算
k = Range("R_Row_DB_Title").Value
l = tbl3.ListRows.Count + k + 1
' 単位読取りテーブルのデータ行をコピーして、
' DBテーブル最終行の次行から貼り付ける
Sheets("DL単位").Select ' この記述を入れないと次を認識しなかった
tbl2.DataBodyRange.Select
Selection.Copy
Sheets("DB").Select
Range("A" & l).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
ActiveCell.SpecialCells(xlLastCell).Select
>>118
> データをコピペするだけならカーソル移動は必要ない
そうなんだ・・・
あたしゃ、
単ページのDLとその後の整形は
PowerQuelyがやりやすかったので、
勢い、1日分ごと切って貼ってをVBAで・・・
って発想でやってた。
クエリー更新もVBAの中に入れて。
ネットの事例かき集めて
自己流で作ったのはこんな感じ。
' DBテーブルの最終行の次行を計算
k = Range("R_Row_DB_Title").Value
l = tbl3.ListRows.Count + k + 1
' 単位読取りテーブルのデータ行をコピーして、
' DBテーブル最終行の次行から貼り付ける
Sheets("DL単位").Select ' この記述を入れないと次を認識しなかった
tbl2.DataBodyRange.Select
Selection.Copy
Sheets("DB").Select
Range("A" & l).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
ActiveCell.SpecialCells(xlLastCell).Select
123デフォルトの名無しさん (スプッッ Sddb-lC0j)
2022/05/16(月) 22:38:43.92ID:zF5DsILOd 0 b
1 a
3 a
7 a
9 b
13 a
18 a
17 b
aがbに入れ替わったら、上に隣接するa群の一番上(1 a)の数字を参照し、9-1=8を入力
bがaに入れ替わったら、上に隣接するb群の一番上(9 b)の数字を参照し、9-13=-4を入力
これを終わりまで自動入力したいのですが、どう書けばいいでしょうか。
いまいち説明がうまくできなくてすみません。
1 a
3 a
7 a
9 b
13 a
18 a
17 b
aがbに入れ替わったら、上に隣接するa群の一番上(1 a)の数字を参照し、9-1=8を入力
bがaに入れ替わったら、上に隣接するb群の一番上(9 b)の数字を参照し、9-13=-4を入力
これを終わりまで自動入力したいのですが、どう書けばいいでしょうか。
いまいち説明がうまくできなくてすみません。
124デフォルトの名無しさん (ワッチョイ bf93-I8Wv)
2022/05/17(火) 06:57:27.10ID:OSHWxoLA0125デフォルトの名無しさん (ワッチョイ 6768-mOD9)
2022/05/17(火) 14:46:10.58ID:le3TeRDS0126デフォルトの名無しさん (ブーイモ MMe1-mtI6)
2022/05/17(火) 19:15:44.32ID:ZA1GChKVM127デフォルトの名無しさん (スプッッ Sddb-lC0j)
2022/05/17(火) 22:53:48.79ID:bIs4gfyOd128デフォルトの名無しさん (ワッチョイ 6768-mOD9)
2022/05/17(火) 23:08:31.99ID:le3TeRDS0 >>127
>上に隣接するa群の一番上(1 a)の数字を参照
この部分
E,F列は切り替わった部分を取得している。row()にすることで、切り替わった部分を取得できる
maxで、切り替わった直近を取得
あとはindexmatchでA列を取得
>上に隣接するa群の一番上(1 a)の数字を参照
この部分
E,F列は切り替わった部分を取得している。row()にすることで、切り替わった部分を取得できる
maxで、切り替わった直近を取得
あとはindexmatchでA列を取得
129デフォルトの名無しさん (ワッチョイ 5510-cTT+)
2022/05/18(水) 00:40:35.16ID:54FLML710 >>127
人様に迷惑掛けるだけの人?
人様に迷惑掛けるだけの人?
130デフォルトの名無しさん (ワッチョイ 9b4f-aONe)
2022/05/18(水) 23:00:11.54ID:08bF+6I50 質問です
EXCELのアプリケーションを別途立ち上げて
それをVBAを実行しているブック側から制御することは可能でしょうか?
可能だとすればどのようにすれば実現できますか?
EXCELのアプリケーションを別途立ち上げて
それをVBAを実行しているブック側から制御することは可能でしょうか?
可能だとすればどのようにすれば実現できますか?
131デフォルトの名無しさん (スフッ Sd2f-xGWD)
2022/05/18(水) 23:31:31.92ID:yWpeDHxGd Application.RUN
132デフォルトの名無しさん (ワッチョイ f101-5bcZ)
2022/05/19(木) 06:39:30.30ID:3ImK9i5g0 VBAエキスパートの本見てみたけどこの範囲なら取得するのは楽勝だな
133デフォルトの名無しさん (ワッチョイ 7dda-o6RS)
2022/05/19(木) 12:33:14.63ID:uClc3Hkf0 VBAの資格、人気度高いね。
ただ企業によっては何それ??的な見方されるのがちょっと。。
ただ企業によっては何それ??的な見方されるのがちょっと。。
134デフォルトの名無しさん (ワッチョイ 6f3d-fy+1)
2022/05/19(木) 15:57:56.76ID:ednyHaa30 VBAでWinアプリ制御するマクロの動画作ったんだが誰も見てくれないや。
そういう需要てないのか?
そういう需要てないのか?
135デフォルトの名無しさん (ワッチョイ b310-ukg8)
2022/05/19(木) 16:56:56.93ID:OfQgMZCZ0 >>134
API使ってバックグラウンドで制御してるなら見る
API使ってバックグラウンドで制御してるなら見る
136デフォルトの名無しさん (ワッチョイ 6f3d-fy+1)
2022/05/19(木) 17:15:23.09ID:ednyHaa30137デフォルトの名無しさん (ラクッペペ MM17-xfi2)
2022/05/19(木) 18:18:22.53ID:H0TVdlz+M ゆっくり茶番劇® か
138デフォルトの名無しさん (ワッチョイ b310-ukg8)
2022/05/19(木) 18:19:37.44ID:OfQgMZCZ0 >>136
面白そう、家帰ったら見よう
面白そう、家帰ったら見よう
139デフォルトの名無しさん (ワッチョイ f101-5bcZ)
2022/05/19(木) 21:37:06.79ID:3ImK9i5g0 RPA使わなくてもVBAでも結構出来るんだよね
キーボード、マウス操作出来るしなんなら読み上げも出来るし
アプリ立ち上げと組み合わせれば色々出来る
キーボード、マウス操作出来るしなんなら読み上げも出来るし
アプリ立ち上げと組み合わせれば色々出来る
140デフォルトの名無しさん (ワッチョイ 6768-mOD9)
2022/05/19(木) 22:26:16.70ID:JItdutDu0 RPAは自動化そのものだから、
VBAでRPAを実現してるだけだぞ
VBAでRPAを実現してるだけだぞ
141デフォルトの名無しさん (ワッチョイ c38c-i+mZ)
2022/05/19(木) 23:19:27.75ID:5QG/OJCT0■ このスレッドは過去ログ倉庫に格納されています
