Excel VBA 質問スレ Part76

■ このスレッドは過去ログ倉庫に格納されています
2022/05/01(日) 02:23:41.78ID:2t63WK/jM
!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
2022/05/04(水) 21:05:48.55ID:hxvZ+FeqM
>>20
所有権の問題ではなく馬鹿だからわからないだけでは?
2022/05/04(水) 21:14:48.05ID:Bmz10qTz0
申し訳ありません、具体的なスペックが提示できないようではアドバイスも難しいですもんね。
これまで頂いたアドバイスでもう少し試行錯誤してみたいと思います。ありがとうございました。
2022/05/04(水) 22:17:07.14ID:hNQ/TBre0
数秒待たせればエラーに成らないなら、原因判明するまでは待たせる方式で
或いは
最終的に鳥瞰図が欲しいなら、数値データをDXFとして出力してjw-cadとかで描画とか
  https://www.hakko.co.jp/javascript/soft011.htm  作者に問い合わせしながら検討とかも

https://www.apptec.co.jp/technical_report/pdf/vol24/treport_vol_24-06.pdf  
https://movies.woxikon.co.nz/excel-%E3%81%A7-cad-%E5%9B%B3%E9%9D%A2-%E4%BD%9C%E6%88%90
https://www.tipsfound.com/excel/05038
https://www.nichibun-g.co.jp/data/education/ict-education/archive/31/02.php
この辺は既にご承知かも ぜんぶちゃんと目を通した訳では無いから抜粋ということで
グラフ機能を応用して鳥瞰図(風)にしてるってことかな
2022/05/04(水) 23:12:41.36ID:Bmz10qTz0
>>23
ありがとうございます。勉強になります。
今のところはエラーが出た際バッファーの時間を調整して対応しています。

とりあえずは動いているので良いのですが書き方としてどうなのだろうと思いまして…
もっとスマートに解決方法があればと思い質問させて頂きました。
アドバイス頂きありがとうございます。アドバイスを元に検討してみたいと思います。
25デフォルトの名無しさん (ワッチョイ 2701-I+xZ)
垢版 |
2022/05/04(水) 23:54:17.61ID:4EN2kx2R0
>>24
むかしファイルメーカーから画像を取り出してExcelに貼り付けるマクロ書いたことあるわ。
クリップボードからExcelに貼るときにちょいちょいエラーが出て苦労した。
最終的にはエラーが出たところからリランできるようにして人力で最後まで走り切った。
継続的に長い期間使うマクロではなかったんでね。

クリップボードって入れ終わるタイミングが掴めないから処理が難しいね。
オレが調べた限りでは完全に技術的に解決する方法は見つけられなかった。
完全自動化は一旦棚に上げておいて、人間の補助も込みで運用を考えた方が現実的かも。
2022/05/05(木) 00:43:02.91ID:vV+xUHQR0
IEとセッション共有するにはどうすればいい?
2022/05/05(木) 08:37:44.29ID:GOdKeYkud
>>12
VBSでExcelファイルをドラッグドロップお薦め
Visible = False でExcel画面すら見ずに処理が終わる
28デフォルトの名無しさん (ワッチョイ df4f-bbcD)
垢版 |
2022/05/05(木) 09:37:07.07ID:yaYLZP+d0
>>26
まずIEはセッションなど持っていない。
そして今IE は使えないだろう?
強制的にEdgeにされるはずだ。
そしてそのEdge も当然セッションなど持っていない。
EdgeもIEもクライアントサイドのものだからだ。
セッションはサーバーサイドの概念だからな。

そしてサーバーサイドをEXCELのVBA で制御するとか意味分からん。
大人しくAsp.NetでもやっておくかせめてVBS で制御しとけ。
2022/05/05(木) 11:18:53.52ID:vV+xUHQR0
わざとだろうけど、EdgeでもCookieでもいいよ。
2022/05/05(木) 11:27:47.75ID:BSjK1PJD0
>>11
ありがとうございます。
2022/05/05(木) 16:06:00.40ID:FeY8iOM40
【ひろゆき】テレビ見る奴はバカ!?正論論破!
「テレビ見てる奴バカすぎだろ!!マジでバカしかいない!!」聞けば納得の正論!!

【ひろゆき】みなさん要注意です…テレビ見ると頭悪くなります
⇒テレビが馬鹿向けに作られてる衝撃の理由がヤバ過ぎる…

【ひろゆき】マジで「ざまあみろ」って思いましたね。
●●する奴にテレビ業界は破壊されました…ひろゆきがテレビがオワコン化した理由を話す

【ひろゆき】芸能界の闇!松本人志とか東野幸治はエクセルすら使えないんだよ?
ワイドナショーで言ってたw【教えて!ひろゆき先生/切り抜き】

【ひろゆき】なぜテレビは面白くなくなったのか?
その理由をひろゆきとひげおやじが分析する【切り抜き/論破/TV】
2022/05/07(土) 10:41:14.26ID:NJT6jW780
Sub test()

Dim high As Long
Dim str As String
Dim num As Integer

'a
str = "転"
str = Asc(str)
str = Hex(str)
a = str

'b
str = "転"
str = Hex(Asc(str))
b = str

'c
str = "転"
num = Asc(str)
str = Hex(num)
c = str

End Sub

a=FFFFFFFFFFFF935D  b =935D  c=935D

aとbで結果が異なる理由が分かりません。
cはぼんやりと型の違いなのかと思いテストしたところ、bと同じ結果になりました。
しかし、aもbもstring型のstrに納めているので、「どうして結果が違うのか」とより
謎を強めてしまいました。なぜ、aとbで結果が異なるのか教えてください。
33デフォルトの名無しさん (アウアウウー Sa1f-oKCf)
垢版 |
2022/05/07(土) 11:01:22.01ID:QtF4T6fHa
ascの結果をstringに変換しないで入れたからかな
出先なので試せないが
2022/05/07(土) 11:52:42.37ID:/qcwjpRWa
'a
str = "転"
str = Asc(str)
Debug.Print str
str = Hex(str)
Debug.Print str
a = str

ってやってみて自分の思った通りになってるか確認してみそ
2022/05/07(土) 11:59:35.71ID:WpJq4eDb0
>>32
Asc関数は戻り値が数値型なので、bとcはほぼ同等になる
aだけが途中経過が明らかに違う
2022/05/07(土) 12:05:46.33ID:WpJq4eDb0
公式ドキュメントには、Hex関数の返り値は8桁以下の文字列と書いてあるのに16桁返ってくるな
どういうことだ?
https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/hex-function
2022/05/07(土) 12:10:46.75ID:WpJq4eDb0
暗黙の型変換は必要最小限の型に変換されるってルールだったはずで、そのロジックに何か問題がある気がする
文字コード(-27811)はIntegerになるはずがLongLongに変換されてしまっていて、さらにHex関数がなぜかエラーを返さない
2022/05/07(土) 13:00:38.34ID:WpJq4eDb0
うーん、これはちょっと想定外の結果、かなあ
知らないでいるとハマりそうだわ

Sub test2()
  s = "&H8"
  For i = 1 To 15
    s = s & "0"
    Debug.Print Hex(s)
  Next
End Sub
2022/05/07(土) 15:18:31.97ID:QipuKWLV0
>>32
strは文字列型だからaの場合str = Asc("転")でやっていることは実質的にstr = cstr(Asc("転")).
だからa,b,cはそれぞれ,hex(cstr(Asc("転"))),hex(Asc("転")),hex(Asc"転"))となりaだけ途中で数字ではなくて文字列にかわっているので
対応するhexの値が異なるのは当然.
40デフォルトの名無しさん (スップ Sd2a-414f)
垢版 |
2022/05/07(土) 15:39:23.00ID:Be/sY8NCd
型を意識しないで作るVBAerによくある勘違いというだけ
41デフォルトの名無しさん (アウアウウー Sa1f-oKCf)
垢版 |
2022/05/07(土) 16:06:22.67ID:7L5Eu3N/a
>>38
型宣言しないタイプ?
2022/05/07(土) 17:29:10.04ID:stouWQDp0
VBAってマトモな会社は使用禁止でしょ
2022/05/07(土) 19:21:47.63ID:WpJq4eDb0
>>41
>>38のケースは宣言してもしなくても結果同じでは
2022/05/07(土) 19:23:32.20ID:WpJq4eDb0
>>39-40
公式ドキュメントに8文字以下と書いてあるのに、たまに16文字返ってくるのは単なる勘違いで済む問題じゃないと思うぞ
2022/05/07(土) 20:33:59.56ID:gH0nu0qIa
>>44
64bit 版のドキュメントが間に合ってないだけだろ
2022/05/07(土) 21:40:19.85ID:QipuKWLV0
>>44
実際の結果と説明が食い違ってたら説明の方が間違っている(修正が遅れている)だけだと思うが
2022/05/07(土) 21:55:14.08ID:WpJq4eDb0
Officeが完全64bit対応になったのは2010から
12年遅れか……
2022/05/07(土) 22:11:45.00ID:9QKKUGlra
>>46
まあ単なるバグの可能性は "0" ではないけど
2022/05/07(土) 22:14:36.93ID:T2FkQFbN0
>>38
これはバグでは
2022/05/07(土) 22:18:37.86ID:cppQitqZ0
>>47
64bitが標準になったのは2019からだけど
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

ありがとうございます。一旦は納得できました。
2022/05/08(日) 19:44:09.25ID:J4Oeet0G0
kou

'a
str = "転"
long_ = Asc(str)
2022/05/08(日) 22:42:32.67ID:CUGu1qGH0
high は何のため
2022/05/09(月) 03:05:49.72ID:1tzp5qwq0
>>37
>暗黙の型変換は必要最小限の型に変換されるってルール
そんなルール聞いたことないが、どこ情報なんだ?
2022/05/09(月) 14:49:08.99ID:Ww9cdHsy0
脳内思い込み
一番タチ悪い
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)ではダメなのでしょうか
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間)が均等になるだけで、
今回求めている結果にはなりませんでした。
2022/05/10(火) 10:19:04.03ID:ODIjuWluM
一生に一度しか使用しない機能は実装されません
2022/05/10(火) 10:49:36.48ID:G5I31YZG0
D A B C を左右均等に並べたいんじゃ無いのか?
D-A-B-C とか、スペースを-で表さないと、コッチからすれば説明文の上下は一緒に読めるんだが?
D---A-B-C とかか?
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
2022/05/10(火) 11:55:55.13ID:G5I31YZG0
Cを必要なだけ右に寄せてからその操作すれば?
ぴったり位置合わせしたいとかなら  https://www.moug.net/tech/exvba/0120023.html 辺り参考に
2022/05/10(火) 11:58:47.56ID:Q/OuvBXU0
>>56
どのチェックボックス?フォーム?activeX?
2022/05/10(火) 13:26:52.13ID:EvytVRjpd
>>57
Controls.Addでマクロにパーツを作らせて位置を指定するか自動計算させれば簡単
自分でイベント作る必要はあるかも
2022/05/10(火) 21:53:08.05ID:4FhYKkQU0
>>63
ありがとうございます。調べてやってみます!
2022/05/10(火) 21:54:52.33ID:4FhYKkQU0
>>61
ありがとうございます。参考にします。
2022/05/11(水) 07:58:45.59ID:VwZpfkps0
>>62
「チェックボックス」だけの情報だと二つあるんですね
すみません。
調べたところフォームのほうのチェックボックスでした。
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
2022/05/12(木) 02:12:42.08ID:y5qWaFnT0
>>67
常識
https://blog.apar.jp/program/8900/
2022/05/13(金) 15:49:14.84ID:m1gysKVC0
Dim a
a = Range("A1:B2")

これだけでaが2×2の配列になるとたった今知ったのですが
このことを手放しに使って良いのでしょうか、それとも邪道だから
Dim a(2, 2)なり要素数まで指定した方が良いのでしょうか。
2022/05/13(金) 15:56:46.69ID:Bn5ry0500
>>69
問題ない
VBA使えるやつならみんな知ってる
71デフォルトの名無しさん (ワッチョイ d35f-PvPk)
垢版 |
2022/05/13(金) 16:05:23.39ID:zF4dJdoD0
それ便利だけど誤読しやすいので静的メソッドにしてる
ArrayExt.FromRange(Me.Range("A1:B2"))
みたいな
2022/05/13(金) 19:41:50.80ID:q/KvZ9/90
officescript調べてみたけど意外と分かりやすかった
これならVBAがなくなっても大丈夫そう
2022/05/13(金) 19:50:05.37ID:q/KvZ9/90
>>69
型使わないとバリアント型だから二次元配列になるわけか
2022/05/13(金) 19:53:17.10ID:q/KvZ9/90
ちなみに参考にしてる人はこう書いてた
Dim a As Variant
a = Range("A1:B2").Value
2022/05/13(金) 22:54:29.72ID:BcFt2CuGD
aは要するにポインタだからな
2022/05/13(金) 22:58:14.08ID:JesbR9jP0
c以上ならポインた
2022/05/13(金) 23:28:52.57ID:94QyLQ1Xa
>>69
誰も書いていないので驚いたが、
その方法でもいい、のではなくて、
その方法しかない。
あとは Variant を明示するかしないかの違いだけ。
2022/05/14(土) 01:49:07.38ID:5NJ35cqH0
セルの値を取得して書き換えて…ってやるより二次元配列で処理する方が体感3倍くらい速いから、高速化したいなら配列使えばいいよね
ただ他の人もわかるようにとかメンテナンス性考えると避けた方が無難だったり、ケースバイケース
2022/05/14(土) 04:08:54.94ID:wh2tsa6Q0
他人の使い勝手なんか微塵も考えていないヤツが大半だろ現場じゃあ
2022/05/14(土) 04:13:11.38ID:JIfRBOPe0
Variantはポインタじゃなくて共用体
そもそもVariantオブジェクトはVBA固有の機能じゃなくてWindowsに組み込まれてて、別の言語からも自由に使える
どういう場面で役に立つのかわからんけど
2022/05/14(土) 04:32:51.17ID:bV9+cuz+M
ポインタ的な使い方するならVariant型ではなくてObject型
Dim a As Object (総称オブジェクト型)
Rangeオブジェクトに特定するなら
Dim a As Range (固有オブジェクト型)
82デフォルトの名無しさん (ワッチョイ 9b4f-aONe)
垢版 |
2022/05/14(土) 08:18:11.37ID:ddohEedh0
Variantってよく分からん型だよな
Objectもそうでないものも仕舞えるし
.Netで封印されたのも頷ける
2022/05/14(土) 10:07:30.24ID:BHEGSPOf0
>>78
配列の方が断然早いよね。
富○通がVBで作ったEXCEL名簿出力アプリが5時間以上かかってるのが、俺がEXCELVBAで組んだのは30分で終わる。
しかも富○通のはデータ1行ごとにコピペしてるので
動かしてる間コピーのバッファが奪われて他の作業が一切できない。
84デフォルトの名無しさん (ワッチョイ d710-aONe)
垢版 |
2022/05/14(土) 10:48:24.07ID:0kHlnQQT0
オレオレ自慢
2022/05/14(土) 10:57:42.22ID:jjfnS8MSd
VBのコードみてVBAにする際に少し手直しした程度なんだと思うが
どの程度のデータか不明だけど30分もかかるような処理も自分としてはNGだわ
まあどっちも夜流して朝みればいいなら5時間でも一緒程度
2022/05/14(土) 11:08:32.24ID:XMrr4JDhr
何分とかかかる時点でRDBとか外出ししてやれないかとか考えちゃう
Excelには荷が重いんじゃないかとね
2022/05/14(土) 11:27:37.36ID:x+cFGSU+a
どんだけ長い処理でも耐えられて2分までだわ
30分かかるとか論外
2022/05/14(土) 11:39:20.09ID:tj4PNqc2d
そんなに処理に時間がかかるってことは多分生データが数Gクラスだろうからaccessやexcelでは非効率だろう
ここに>83の間抜けさがよく現れてる
2022/05/14(土) 11:43:13.01ID:5E8BmIH10
そんな大規模なデータを扱ったことないからわからないけど
30分もかかったら途中で無限ループに入ってんだろなと思って止めてしまうわ
2022/05/14(土) 11:59:12.73ID:VTp6T5x/0
vbaを30分も動かすってどんな処理だよ
あとあまり長い時間動かしっぱなしにすると大体フリーズしてるぞ
2022/05/14(土) 12:14:29.94ID:jjfnS8MSd
どんな処理でも構わないけどExcelのプロセスが起動してるときに新規のExcel起動>ファイルを開くで開けばいいけど
無意識のうちにダブルクリックなんかで開こうとしたらVBA実行中のプロセスで開かないとも限らないから
30分の拘束ってのは日中ならなし
2022/05/14(土) 12:55:50.88ID:JIfRBOPe0
そんなに速くしたら、フリーズしてないか監視する仕事の人がクビになっちゃうだろ
ああいうのは、わざと1日かかるように作ってあるんだよ
2022/05/14(土) 13:31:33.15ID:wh2tsa6Q0
なんでExcelエキスパート集団の富○通がそんなクソ遅いマクロ書くのか不思議だ。
2022/05/14(土) 15:15:38.33ID:VTp6T5x/0
>Excelエキスパート集団
それはない
95デフォルトの名無しさん (スップ Sdcf-lPuq)
垢版 |
2022/05/14(土) 16:41:13.43ID:9uXA4NxPd
富士通が直接作っているのでないだろうし、たった一つの例で全部がわかったつもりになる幼稚なアホ
2022/05/14(土) 18:27:44.98ID:msymY1pp0
あんまり処理に時間かかるようなやつならプログレスバーやらひとまず動いてることがわかるようなものを入れとくわ
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とか使ってそんなに難しくなくやれるかと思いきやまるでうまくいかない…
2022/05/14(土) 18:58:29.62ID:lDPvxjtFD
>>94
方眼紙はじめとした使い方への皮肉だろ
99デフォルトの名無しさん (ワッチョイ 2d5f-yvGd)
垢版 |
2022/05/14(土) 19:14:09.21ID:yHnyJFGQ0
>>97
他に条件や例外がないなら自分で書いてる通り「そんなに難しくない」が、どこで詰まってるの?
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
2022/05/14(土) 19:26:19.82ID:msymY1pp0
内容あまり理解出来てないのかもしれないけど

B500の行取得してワークブックオープンで引数ファイルパス500で開いてデータ抜きたいところ抜けば良いのではないでしょうか。

4使うあたり処理を重くしたくないのでワークブックを開きたくないようにも見えますが
2022/05/14(土) 19:51:35.87ID:jjfnS8MSd
こんな感じになる文字列を作ればいけないか?(フォルダ名とファイル名を変更していく)
MsgBox ExecuteExcel4Macro("'フォルダ名\[1000.xlsx]ssss'!R2C4")
2022/05/15(日) 01:22:22.35ID:xmtudDvv0
MSHTML.HTMLDocumentのbody.outerHtmlに何か代入しようとすると、
あるPCでは問題なく出来るのに、
別のPCではアプリケーション定義のエラーがでる
何故?
ソースは同じなのに
2022/05/15(日) 08:18:10.46ID:Jt2O43PNd
参照設定は?
2022/05/15(日) 13:24:19.34ID:K6VbLnva0
>>68
即レスいただいてたのに遅くなりました。ありがとうございます。
常識なんですね。とてもためになりました。

少数が原因だろうと思いつつもローカルウィンドウの値は整数だし
Fixしても発生するので困ってました。ありがとうございます。
2022/05/15(日) 15:21:30.27ID:xmtudDvv0
>>104
してある
してないと違うエラーメッセージだったような
2022/05/15(日) 17:45:40.00ID:SLK6Xy6bp
>>106
参照不可はない?
2022/05/15(日) 17:49:03.93ID:i2BwfRJap
>>83
依頼元の情報提供不足。対象件数とか。
2022/05/15(日) 20:29:54.61ID:EFSZcQ6p0
VBAで作ったブックを指定するにはどうやるのがいいんでしょうか
VBAで複数ブックを作るとBook1、Book2、…となりますが、
どうやってそれぞれのブックを指定してやればいいのかが分かりません
2022/05/15(日) 20:48:22.92ID:xHyGsu5B0
ブックの作成の際にワークブック変数にセットする
set=workbooks.add
2022/05/15(日) 21:20:44.06ID:i/ziY72x0
変数に格納するってのは名前をつけてあげるみたいな意味合いがある気がする

変数作ってセットすれば呼び出しやすい
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していないことだと
今日、ようやく知ったアタシが通り過ぎますよ・・・
2022/05/15(日) 23:36:58.31ID:VONG1GsX0
>>101
おっしゃる通りワークブックを開きたくなかったんです

諦めて>>100さんの手法でいきました

ありがとうございました。
2022/05/15(日) 23:39:04.92ID:km049kvp0
>>112
VBAやっててSelect使うことなんてほぼ無いんだからその仕様を知らないことを気にしなくていい
2022/05/15(日) 23:53:26.84ID:sFHTlWBy0
>>113
http://officetanaka.net/excel/vba/tips/tips28.htm
フルパス指定すればいけるっぽいけどそーゆー話ではないのかな?
2022/05/16(月) 00:14:35.90ID:D08mu/WY0
セルとかSelectするのは最後くらいだもんなあ
2022/05/16(月) 01:37:32.91ID:PWfPx8Kl0
>>107
無いんだよね
代入が出来ないだけで表示は出来るんだけど、
""の空文字すら入れられないのは何なのか…
型が一致しないエラーでもないし
仕方がないからDocument.writeで代用したけど
2022/05/16(月) 07:25:27.55ID:x3MSJzWb0
>>114
気象庁の過去気象データ1時間値を
DLしようとしたら、
1日ごとにURLが違うので、
1日分を読んではコピペさせてるんだけど・・・
単体項目なら1年分一度に落とせるけど、
1観測地点の全項目は1日ごとの模様
2022/05/16(月) 09:05:21.75ID:gw7DnXAE0
>>118
データをコピペするだけならカーソル移動は必要ない
それと、1日ずつDLだと365回になるけど、項目ごとなら15項目、15回のDLで済むからずっと早く終わると思うんだけど
2022/05/16(月) 10:02:47.99ID:a802uHDS0
ワイなら大まかに
「データをURLでフェッチする」機能
「データをシートに表現する」機能
とかに分けてそれぞれの中でループする

どんなデータ取るんかとか知らんけど
過去の気象データなら変化ないんやろから(少しずつしか追加されないし)
あらかたDLしちゃって毎日追加する運用でよくね
Accessで動くか知らんがワイなら楽だし(R)DBにして、
Excelは表現に特化させる
まあDBとして考えるなら119の言うように特定のデータをカラムとして取り込むほうがいいけどね
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況