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/01(日) 10:10:19.02ID:Pk0oKD+E0
2げろ
3デフォルトの名無しさん (スップ Sd7f-TUas)
垢版 |
2022/05/01(日) 14:46:30.73ID:q0kLnjNbd
Excel使い方すらわからない人はお断りです
Excel VBAが何かもわからない人もお断りです
4デフォルトの名無しさん (ブーイモ MMcb-LnX+)
垢版 |
2022/05/01(日) 16:08:24.73ID:CXxh8/QkM
我々の承認欲求を満たしてくれる質問お待ちしてます
5デフォルトの名無しさん (ワッチョイ df4f-bbcD)
垢版 |
2022/05/01(日) 17:04:11.22ID:PgWgEC/y0
向こうのスレ消化してから書き込めカス共
2022/05/01(日) 19:54:56.03ID:Om3L9uk+0
前スレ終わってないのに立てる >>1 が悪い
2022/05/01(日) 21:27:37.77ID:geOevaoi0
>>6
終わってから立てたらスレの連続性が途絶えるだろ
考えて物言え知恵足らずが
2022/05/01(日) 21:39:32.49ID:Rd1MW2220
レス古事記の相手すんなよ...
2022/05/02(月) 19:28:34.96ID:MoQSVCv50
過去にもしばらくスレ立て放置プレイされた事あったぜ
2022/05/02(月) 23:18:57.97ID:X95f3WhM0
よろしくお願いします。以下の日本語で書いた部分に相当するような
繰り返し文ってありますでしょうか。

イメージしているのはwhile read line do done < test.txt
みたいなものです。

テキストファイルの変わりに「とある列の値が尽きるまで(空欄が見つかるまで)」、
繰り返し文内の処理を繰り返すような文です。

Range("B1").Select

繰り返し A列の値 = 空欄のセルが見つかるまで

ActiveCell.Offset(0, -1).Range("A1").Select
Selection.Copy
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveSheet.Paste

ActiveCell.Offset(1, 0).Range("A1").Select

繰り返し完了
2022/05/02(月) 23:38:34.90ID:hdDLukhc0
>>10
すげーざっくりだけどやりたいことはこんな感じ?
やりたいことがあってるならもう少しちゃんとしたコードにはするけど
SelectとかCopy、Pasteは基本VBAで使わないので

Dim WS As WorkSheet
Set WS=ActiveSheet
Dim RngA1 As Range
Set RngA1=WS.Cells(1,1)

Dim i As Long
For i = 1 to 16384
 If WS.Cells(i,1).Value="" Then
  Exit For
 Else
  WS.Cells(i, 1).Value=WS.Cells(i, 2).Value
 End If
Next
12デフォルトの名無しさん (ワッチョイ a763-PwpY)
垢版 |
2022/05/03(火) 10:09:18.61ID:F3b8ltuB0
先生方教えて!
エクセルを1枚1枚開いてvbaによって加工したい場合、
マクロの表示からそのvbaを選ぶのが一般的なんでしょうか。

FileDialogをつかって複数エクセルを一気に加工するほうが
自分は楽なんですが契約社員にはわかりづらいそうで。。
13デフォルトの名無しさん (ワッチョイ df4f-bbcD)
垢版 |
2022/05/03(火) 10:15:31.86ID:MA4dMZuw0
一般的かどうかは分からんけど
ファイルダイアログを開いて
設定したパスをどこかのセルに設定しておいて
実行ボタンでそのセルを読みに行くほうが
複数のブックを読みに行く場合には親切
14デフォルトの名無しさん (ワッチョイ bf8c-pWxw)
垢版 |
2022/05/03(火) 13:25:25.46ID:xaGln49G0
理解が十分でない契約社員には直感的にわかりやすい上記の方法
そのうち慣れて面倒になってきたら下記の方法(バッチ)
2つのアプローチを用意するのがいいかもしれませんね

コンピュータになれていなかったり入れ替わりが多い契約社員というところがポイントですね
私もVBAを他人に提供することが多いから参考になるわー
2022/05/03(火) 13:57:26.99ID:nOtJseDM0
Nextじゃなくて、Next iって書かなきゃあかんと言われたよ
16デフォルトの名無しさん (アウアウウー Saab-wueb)
垢版 |
2022/05/03(火) 14:12:22.20ID:utR4VoxQa
iが足りなかったからか
2022/05/04(水) 14:54:21.99ID:Bmz10qTz0
前スレ987で質問した者です。
アドバイスありがとうございます。
2019に変わる際にPCがwin7からwin10に変わり性能もアップしたのでVBA処理も早くなるかと思っていたのですがそのようなバグが出るようになりました。

自分1人で使ってる範囲では良いのですが複数が利用しているため質問させて頂きました。

PC性能があがりEXCELがついてこれてない可能性もありますね。
2022/05/04(水) 16:13:00.23ID:waxP/JpN0
Excel板なら人間の性能を上げろって揶揄されるからな
2022/05/04(水) 19:42:48.21ID:3VW2nuLk0
win7がwin10になったのとPCの性能は別だからな
古いPCのOSだけ変えたのかもしれんし
2022/05/04(水) 20:57:36.39ID:Bmz10qTz0
説明不足で申し訳ないです。
win7からwin10でPC変わってます。
個人的に所有しているPCではないので具体的なスペックはわかりません。
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使うあたり処理を重くしたくないのでワークブックを開きたくないようにも見えますが
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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