!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付けるナリ
ExcelのVBAに関する質問スレナリ
コード書き込みや作成依頼もOKナリ
※前スレ
Excel VBA 質問スレ Part73
https://mevius.5ch.net/test/read.cgi/tech/1631485799/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
Excel VBA 質問スレ Part74
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ d3fd-v8OD)
2021/12/20(月) 01:40:59.22ID:jnlr9GaR0421デフォルトの名無しさん (ワッチョイ cd2f-Nrkm)
2022/01/16(日) 15:44:15.55ID:y1CvsdF30422デフォルトの名無しさん (ワッチョイ c5da-JBal)
2022/01/16(日) 16:10:07.63ID:9svQYmXf0 >>421
そういう意味の質問じゃなくって、「Windows日本語版のANSIでは半角ポンド記号は定義されていない」と書いていたので、StrConv(serchChar, 10)では半角ポンド記号に変換できないのじゃないかと思ったわけです。でも正しく処理しているんで、VBA 上では表示はできないけど計算処理はできるということですかね。
そういう意味の質問じゃなくって、「Windows日本語版のANSIでは半角ポンド記号は定義されていない」と書いていたので、StrConv(serchChar, 10)では半角ポンド記号に変換できないのじゃないかと思ったわけです。でも正しく処理しているんで、VBA 上では表示はできないけど計算処理はできるということですかね。
423デフォルトの名無しさん (ワッチョイ cd2f-Nrkm)
2022/01/16(日) 16:12:28.73ID:y1CvsdF30 >>419
クラスもモジュールの一つなんだが
まず処理の内容とモジュールの役割分担を考え直せ
インテリセンスに出したいからとか、本末転倒だ
インテリセンスに出したいだけなら、>>405の例ならクラス三つつくって
ClassWsクラスに
Public Property Get 入力用Ws() As 入力用Ws
Public Property Get 一時計算用Ws() As 一時計算用Ws
入力用Wsクラスに
Public Property Get Ws1_入力用() As Worksheet
Public Property Get Ws2_入力用() As Worksheet
一時計算用Wsクラスに
Public Property Get Ws1_一時計算用() As Worksheet
Public Property Get Ws2_一時計算用() As Worksheet
をそれぞれ定義すればできる
中身は自分で考えろ
クラスもモジュールの一つなんだが
まず処理の内容とモジュールの役割分担を考え直せ
インテリセンスに出したいからとか、本末転倒だ
インテリセンスに出したいだけなら、>>405の例ならクラス三つつくって
ClassWsクラスに
Public Property Get 入力用Ws() As 入力用Ws
Public Property Get 一時計算用Ws() As 一時計算用Ws
入力用Wsクラスに
Public Property Get Ws1_入力用() As Worksheet
Public Property Get Ws2_入力用() As Worksheet
一時計算用Wsクラスに
Public Property Get Ws1_一時計算用() As Worksheet
Public Property Get Ws2_一時計算用() As Worksheet
をそれぞれ定義すればできる
中身は自分で考えろ
424デフォルトの名無しさん (ワッチョイ cd2f-Nrkm)
2022/01/16(日) 16:19:51.33ID:y1CvsdF30425デフォルトの名無しさん (ワッチョイ c5da-JBal)
2022/01/16(日) 16:33:04.70ID:9svQYmXf0 >>424
よくわかりました。ありがとうございました。
よくわかりました。ありがとうございました。
426デフォルトの名無しさん (ワッチョイ c5da-JZ3p)
2022/01/16(日) 19:01:50.46ID:EoUder1l0427デフォルトの名無しさん (ワッチョイ bd5f-CIJN)
2022/01/16(日) 19:41:57.72ID:rwDbh7Xz0 まあたしかにインテリセンス出したいだけならオブジェクト名を変更するだけでもいいかもしれんな
428デフォルトの名無しさん (アウアウウー Sa05-wAYo)
2022/01/16(日) 20:05:03.64ID:xYtP7RFCa 次の担当になる人がかわいそうだな
429デフォルトの名無しさん (ワッチョイ 02e6-kVMF)
2022/01/16(日) 20:18:31.11ID:RSDKT1580 >>362
コードは他のシートと同じだったので省きます。
画像は消しても変わりませんでした。コードを消してもセルをクリックしたときにたまに読み込みが入るので何かが動いてそうなのですがどこ見ればいいでしょうか…。
コードは他のシートと同じだったので省きます。
画像は消しても変わりませんでした。コードを消してもセルをクリックしたときにたまに読み込みが入るので何かが動いてそうなのですがどこ見ればいいでしょうか…。
430デフォルトの名無しさん (ワッチョイ d168-e0vW)
2022/01/16(日) 20:31:17.59ID:JxOh46GE0431デフォルトの名無しさん (ワッチョイ d168-e0vW)
2022/01/16(日) 20:31:53.39ID:JxOh46GE0432デフォルトの名無しさん (ワッチョイ d168-e0vW)
2022/01/16(日) 20:35:43.37ID:JxOh46GE0433デフォルトの名無しさん (ワッチョイ 02e6-kVMF)
2022/01/16(日) 20:53:15.31ID:RSDKT1580436デフォルトの名無しさん (ワッチョイ d168-e0vW)
2022/01/16(日) 21:14:52.42ID:JxOh46GE0 っって思ったけどせめてデータで出せ
メモ帳にコピペしてdotupとかそのへん
メモ帳にコピペしてdotupとかそのへん
437デフォルトの名無しさん (ワンミングク MM52-/2yr)
2022/01/16(日) 21:22:18.03ID:lhZQvquHM 馬鹿を相手にすんな
438デフォルトの名無しさん (ワッチョイ d168-e0vW)
2022/01/16(日) 21:26:17.91ID:JxOh46GE0439デフォルトの名無しさん (ワッチョイ 82da-gAlZ)
2022/01/16(日) 22:33:39.20ID:uTGjF8kU0 >中身は自分で考えろ
おー!!カッコいいねー!!
熱血トレーナーみたいだね〜
おー!!カッコいいねー!!
熱血トレーナーみたいだね〜
440デフォルトの名無しさん (スッップ Sd22-r56g)
2022/01/16(日) 22:35:56.49ID:YgWToIcEd VBAで更新したパワークエリーが更新完了まで待機するコードありますか?
441デフォルトの名無しさん (ワッチョイ 02e6-kVMF)
2022/01/16(日) 23:13:05.80ID:RSDKT1580 Private Sub Worksheet Before DoubleClick(ByVal Target As Range, Cancel As Boolean)
Const Hani = "N4 N1000
Const Iro. As Variant 15
Dim Rng As Range
Set Rng = Intersect(Range(Hani), Target)
If Intersect(Target, Range("N4 N1000')) Is Nothing Then Exit Sub
With Target
Select Case Value
Case
Value = "2000"
Case "2000
Value =""
End Select
End With
If Not Rng Is
Nothing Then
Cancel = True
If Rnginterior Colorindex = xINbre Then
Eng Interior Colorindex = Iro
Else
Prg Interior Colorindex = xiNbre
End IfEnd If
Set Rng = Nothing
End Sub
Const Hani = "N4 N1000
Const Iro. As Variant 15
Dim Rng As Range
Set Rng = Intersect(Range(Hani), Target)
If Intersect(Target, Range("N4 N1000')) Is Nothing Then Exit Sub
With Target
Select Case Value
Case
Value = "2000"
Case "2000
Value =""
End Select
End With
If Not Rng Is
Nothing Then
Cancel = True
If Rnginterior Colorindex = xINbre Then
Eng Interior Colorindex = Iro
Else
Prg Interior Colorindex = xiNbre
End IfEnd If
Set Rng = Nothing
End Sub
442デフォルトの名無しさん (オッペケ Srd1-kVMF)
2022/01/16(日) 23:18:31.80ID:ranDxh1Nr Googleレンズで読み込んだやつなので正確ではないけど流れは一緒です。
ネットにあった色つけコードに数字も入力するようにしています。
↑で言っていたように使用しているAシートとBシートに違いはほぼないです。というか新規シートにBをコピーしても読み込み遅くなるので全く理由がわからないです。フォントは一緒、セルの使用数は読み込み遅いシートのほうが少なく、画像も関係ないので何がなんだか…
ネットにあった色つけコードに数字も入力するようにしています。
↑で言っていたように使用しているAシートとBシートに違いはほぼないです。というか新規シートにBをコピーしても読み込み遅くなるので全く理由がわからないです。フォントは一緒、セルの使用数は読み込み遅いシートのほうが少なく、画像も関係ないので何がなんだか…
443デフォルトの名無しさん (オッペケ Srd1-kVMF)
2022/01/16(日) 23:50:40.30ID:ranDxh1Nr ごめんなさい
https://hoimins.com/uncategorized/excel-page-break-preview-slow/
多分これです。印刷範囲を設定したら読み込みがなくなりました。
https://hoimins.com/uncategorized/excel-page-break-preview-slow/
多分これです。印刷範囲を設定したら読み込みがなくなりました。
444デフォルトの名無しさん (ブーイモ MMf6-soNI)
2022/01/17(月) 12:48:25.06ID:RtDdCZiGM ほれ、タイプミスだけ直しといてやったぞ
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Const Hani = "N4:N1000"
Const Iro As Variant = 15
Dim Rng As Range
Set Rng = Intersect(Range(Hani), Target)
If Intersect(Target, Range("N4:N1000")) Is Nothing Then Exit Sub
With Target
Select Case .Value
Case ""
.Value = "2000"
Case "2000"
.Value = ""
End Select
End With
If Not Rng Is Nothing Then
Cancel = True
If Rng.Interior.ColorIndex = xlNone Then
Rng.Interior.ColorIndex = Iro
Else
Rng.Interior.ColorIndex = xlNone
End If
End If
Set Rng = Nothing
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Const Hani = "N4:N1000"
Const Iro As Variant = 15
Dim Rng As Range
Set Rng = Intersect(Range(Hani), Target)
If Intersect(Target, Range("N4:N1000")) Is Nothing Then Exit Sub
With Target
Select Case .Value
Case ""
.Value = "2000"
Case "2000"
.Value = ""
End Select
End With
If Not Rng Is Nothing Then
Cancel = True
If Rng.Interior.ColorIndex = xlNone Then
Rng.Interior.ColorIndex = Iro
Else
Rng.Interior.ColorIndex = xlNone
End If
End If
Set Rng = Nothing
End Sub
445デフォルトの名無しさん (ワッチョイ 923d-hOIA)
2022/01/18(火) 15:16:34.47ID:TQ7V1ae50 前スレの298,303なのだが、
msgboxでウィンドウを表示させるとExcelがクラッシュしないことがわかった。
だから
'マクロがクラッシュしないための措置
i = MessageBoxTimeoutA(0&, "マクロを開始します", "通知", vbMsgBoxSetForeground, 0&, 100)
自動的に閉じるmsgboxを表示させることで回避策としたわ。
msgboxがある/なしでクラッシュするなんて言うバグてきいたことあります?
msgboxでウィンドウを表示させるとExcelがクラッシュしないことがわかった。
だから
'マクロがクラッシュしないための措置
i = MessageBoxTimeoutA(0&, "マクロを開始します", "通知", vbMsgBoxSetForeground, 0&, 100)
自動的に閉じるmsgboxを表示させることで回避策としたわ。
msgboxがある/なしでクラッシュするなんて言うバグてきいたことあります?
446デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
2022/01/18(火) 15:40:58.30ID:CJu6lFHP0 >>445
聞いたことはないけど、合ってもおかしくないと思う
OSや別アプリと並行処理させ、並行処理が終わってないままvbaだけ処理すすめる・・・ことで落ちていると思う
DoEventsで解決するはずなんだけど、DoEvents自体も挙動がどこかおかしい。
多分だけど、
applicaion.calcurate=false
とか高速化入れてない?あれを設定しなければ落ちなくなる可能性があると思う
聞いたことはないけど、合ってもおかしくないと思う
OSや別アプリと並行処理させ、並行処理が終わってないままvbaだけ処理すすめる・・・ことで落ちていると思う
DoEventsで解決するはずなんだけど、DoEvents自体も挙動がどこかおかしい。
多分だけど、
applicaion.calcurate=false
とか高速化入れてない?あれを設定しなければ落ちなくなる可能性があると思う
447デフォルトの名無しさん (ワッチョイ aeda-wAYo)
2022/01/18(火) 18:06:02.41ID:2NZPk0PK0 フォーカスがなくなって裏で動いているのに気づかなかったってだけじゃね
448デフォルトの名無しさん (ワッチョイ 82ad-9pHH)
2022/01/19(水) 02:44:48.77ID:J6vWAZC60449デフォルトの名無しさん (ドコグロ MM96-c1hp)
2022/01/19(水) 08:14:43.10ID:SKsqr1XrM45094 (ブーイモ MM66-WmTr)
2022/01/19(水) 12:40:48.58ID:U3XJgxPOM >>449
画面更新止めるコマンドもあるので別に気にはしてないですが、エクセルの関数が実数になるまでそれなりに、時間かかりますよね
まぁ、でもAの方法(外部リンク参照)で作り変えて行こうかと思います。
画面更新止めるコマンドもあるので別に気にはしてないですが、エクセルの関数が実数になるまでそれなりに、時間かかりますよね
まぁ、でもAの方法(外部リンク参照)で作り変えて行こうかと思います。
451デフォルトの名無しさん (ワッチョイ a9d0-fIZs)
2022/01/19(水) 16:06:12.24ID:wLv0/dLh0 取得したデータをどう使いたいのかにもよるけど
参照するExcelブックの数が増減する場合はVBA使って特定のフォルダにぶち込まれたExcelブックを全部取得するようにすると楽
個人で使う分にはこれでいいが、仕事などで自分以外の社員が触る機会がある場合は、周りのスキルを考えてVBAを使わず数式で参照させて済ますのも良いと思う
だが、環境にもよるが、外部参照を含む数式を書いたExcelブックを開いたまま参照先のExcelブックを開くと参照エラー(#REF!)になる場合があるので注意
参照するExcelブックの数が増減する場合はVBA使って特定のフォルダにぶち込まれたExcelブックを全部取得するようにすると楽
個人で使う分にはこれでいいが、仕事などで自分以外の社員が触る機会がある場合は、周りのスキルを考えてVBAを使わず数式で参照させて済ますのも良いと思う
だが、環境にもよるが、外部参照を含む数式を書いたExcelブックを開いたまま参照先のExcelブックを開くと参照エラー(#REF!)になる場合があるので注意
452デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
2022/01/19(水) 16:34:49.01ID:x+9vZ6k00 MSGBOXが表示された時、必ず最前面にする方法ってありますか?
alt+tabでタスクを切り替えないとMSGBOXが表示されない事があります
処理が止まっているのか進んでるのか分からなくて、困ってしまう
alt+tabでタスクを切り替えないとMSGBOXが表示されない事があります
処理が止まっているのか進んでるのか分からなくて、困ってしまう
453デフォルトの名無しさん (ブーイモ MMe5-soNI)
2022/01/19(水) 17:15:49.65ID:O8ktC4tSM >>452
VBAのMsgBoxでは不可能
Win32APIのMessageBoxAをTopMost=Trueに設定して呼び出すしかない
VBAからMessageBoxAを呼び出す方法はぐぐればすぐ出てくる
VBAのMsgBoxでは不可能
Win32APIのMessageBoxAをTopMost=Trueに設定して呼び出すしかない
VBAからMessageBoxAを呼び出す方法はぐぐればすぐ出てくる
454デフォルトの名無しさん (ラクッペペ MM66-Dw/N)
2022/01/19(水) 17:21:36.62ID:ZRK6Alb6M そんなフラグ効果あんのか?
455デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
2022/01/19(水) 17:56:37.68ID:x+9vZ6k00456デフォルトの名無しさん (ワッチョイ cd2f-Nrkm)
2022/01/19(水) 18:35:22.31ID:DmIv8IzU0 いちおうMsgBoxでシステムモーダルの指定があるにはあるんだけどな
期待通りに動かんことが多い
いちアプリケーションがシステム全体にかかわる動作をするなって風潮だからな
期待通りに動かんことが多い
いちアプリケーションがシステム全体にかかわる動作をするなって風潮だからな
457デフォルトの名無しさん (ワッチョイ 827c-823B)
2022/01/19(水) 18:45:15.60ID:F2K8Y8lc0 >>451
他ブックへの参照はgotoより使いたくないかも
他ブックへの参照はgotoより使いたくないかも
458デフォルトの名無しさん (ワッチョイ cd2f-Nrkm)
2022/01/19(水) 19:04:03.23ID:DmIv8IzU0459デフォルトの名無しさん (ワッチョイ a9d0-fIZs)
2022/01/19(水) 19:59:02.99ID:wLv0/dLh0 >>457
わかるけど、それはプログラミングの知識がある人が職場に当たり前にいるという前提の話
まったくVBAを知らない社員に一から教え込むよりまし
ていうか個人的には、Excelブックを100個も参照させるようなのが仕事上の事情なら、まずはその運用を見直した方がいいと思うけど
わかるけど、それはプログラミングの知識がある人が職場に当たり前にいるという前提の話
まったくVBAを知らない社員に一から教え込むよりまし
ていうか個人的には、Excelブックを100個も参照させるようなのが仕事上の事情なら、まずはその運用を見直した方がいいと思うけど
46094 (ブーイモ MM66-WmTr)
2022/01/19(水) 20:45:45.55ID:U3XJgxPOM 他ブックの参照がなぜ駄目なのかさっぱりわからないです。。教えて下さい。
参照後の処理の内容になにか前提条件があるのですか?
自分の前提は、Excelブックを参照、みんな同じExcelバージョン、同じフォーマットを使うです
参照後の処理の内容になにか前提条件があるのですか?
自分の前提は、Excelブックを参照、みんな同じExcelバージョン、同じフォーマットを使うです
461デフォルトの名無しさん (ブーイモ MM66-kEIx)
2022/01/19(水) 20:58:42.62ID:B4PAoBE9M リンク切れで機能しないゴミとなったブックをお目にかかったことがないなら幸せなことだな
462デフォルトの名無しさん (ワッチョイ a156-sTIO)
2022/01/19(水) 22:01:47.23ID:K9C4LDWb0 エクセルは詳しくないけど、「存在しない可能性すらある
グローバル変数」ってこと?
ちょっと学んで、「どこからでもセルの書き換え効くの?
グローバル変数地獄じゃない?」と思ったけど、もっと
大規模に起こり得るってこと?
グローバル変数」ってこと?
ちょっと学んで、「どこからでもセルの書き換え効くの?
グローバル変数地獄じゃない?」と思ったけど、もっと
大規模に起こり得るってこと?
463デフォルトの名無しさん (ワッチョイ a9d0-fIZs)
2022/01/19(水) 22:31:45.36ID:wLv0/dLh0 >>460
フォルダ名(参照・被参照のExcelブックが別々のフォルダにある場合)、ファイル名、シート名、(使用しているなら)テーブル名、あとセルの配置
どれか一つでも変えるとリンク切れになるので、できればあまり使いたくない
ただ、先にも書いたけど状況次第ではやむを得ないこともあるし、もしそのあたりのリスクを払拭できるなら選択肢としてはあるかなと思って書いたけど、
もし、そういうことをそれほど把握する必要がない程度に重要性が高くなく、かつパフォーマンス(速度)重視の話なのであれば、あまり気にしなくていい
でも、これが仕事で何度も使用するような類のものの話だとすれば、パフォーマンスを考える前に運用をよく考えた方がいい
例えば、ファイル数(100個)や参照セル数(ブック1つにつき60セル)が固定で、シートやブックなんかはパス付で保護かけて構造を弄れないようにして、できたらファイル名なんかもアクセス権を設定して変更できないようにするか、ファイルを扱う人に絶対変えないようにしっかり申し送りするとか
もしくは構造を弄られたとしてもすぐ元どおりにできるぐらいのシンプルな作り、あるいは壊されてもすぐ復元できるようにしておくとか
どんな状況なのかは分からないけど、何を優先すべきなのかをよく整理した方がいい、という話になると思う
フォルダ名(参照・被参照のExcelブックが別々のフォルダにある場合)、ファイル名、シート名、(使用しているなら)テーブル名、あとセルの配置
どれか一つでも変えるとリンク切れになるので、できればあまり使いたくない
ただ、先にも書いたけど状況次第ではやむを得ないこともあるし、もしそのあたりのリスクを払拭できるなら選択肢としてはあるかなと思って書いたけど、
もし、そういうことをそれほど把握する必要がない程度に重要性が高くなく、かつパフォーマンス(速度)重視の話なのであれば、あまり気にしなくていい
でも、これが仕事で何度も使用するような類のものの話だとすれば、パフォーマンスを考える前に運用をよく考えた方がいい
例えば、ファイル数(100個)や参照セル数(ブック1つにつき60セル)が固定で、シートやブックなんかはパス付で保護かけて構造を弄れないようにして、できたらファイル名なんかもアクセス権を設定して変更できないようにするか、ファイルを扱う人に絶対変えないようにしっかり申し送りするとか
もしくは構造を弄られたとしてもすぐ元どおりにできるぐらいのシンプルな作り、あるいは壊されてもすぐ復元できるようにしておくとか
どんな状況なのかは分からないけど、何を優先すべきなのかをよく整理した方がいい、という話になると思う
464デフォルトの名無しさん (ワッチョイ bd5f-CIJN)
2022/01/19(水) 22:43:22.55ID:zGHKrub60 >>460
親からひ孫世代まで参照が繋がってるファイル群なんてものが存在した
親からひ孫世代まで参照が繋がってるファイル群なんてものが存在した
465デフォルトの名無しさん (ワッチョイ a22e-c1hp)
2022/01/19(水) 22:52:36.39ID:TxiQul+S0 >>464
参照繫ぐくらいなら、ファイルパスもセルに記入して上書きさせるように実装するわ。それくらいリンクは嫌だわ。
参照繫ぐくらいなら、ファイルパスもセルに記入して上書きさせるように実装するわ。それくらいリンクは嫌だわ。
46694 (ワッチョイ 82ad-WmTr)
2022/01/19(水) 23:01:56.42ID:J6vWAZC60 なるほど。理解出来ました。
ありがとうございます。
運用的には
VBAでファイル名算出する
シート名が違っていたり、フォーマットズレしていたら検出したいチェックツールにしたいので問題なさそうです。
参照エラーがでたら壊した人のところに殴り込みに行くシステムですね。
ありがとうございます。
運用的には
VBAでファイル名算出する
シート名が違っていたり、フォーマットズレしていたら検出したいチェックツールにしたいので問題なさそうです。
参照エラーがでたら壊した人のところに殴り込みに行くシステムですね。
467デフォルトの名無しさん (ワッチョイ bd5f-2j/7)
2022/01/20(木) 00:15:58.14ID:gV+Fwxtn0 まあ、まともに作ったファイルサーバなら
shadow copy くらいは残ってるだろうがね。
shadow copy くらいは残ってるだろうがね。
468デフォルトの名無しさん (アウアウウー Sa05-wAYo)
2022/01/20(木) 06:56:43.44ID:AmtKyR6La 無理して変な機能追加するから
後で見返した時にワケわからなくなる
後で見返した時にワケわからなくなる
469デフォルトの名無しさん (ワッチョイ 827c-823B)
2022/01/20(木) 08:28:58.94ID:mCK9tQrM0 >>468
それはみんなそう
なので少しでもわかりやすいように書いておくことが必要
慣れてないうちはコメント付けまくるのもありだと思う
これは何の変数かとか、大きく何をしているか、この行は何をしているか書いとけばリファクタリングするのにも楽になる
それはみんなそう
なので少しでもわかりやすいように書いておくことが必要
慣れてないうちはコメント付けまくるのもありだと思う
これは何の変数かとか、大きく何をしているか、この行は何をしているか書いとけばリファクタリングするのにも楽になる
470デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
2022/01/20(木) 08:52:11.33ID:aoz8cIff0 >>466
毎日カチコミになるのが目に見えているゾ
毎日カチコミになるのが目に見えているゾ
471デフォルトの名無しさん (ワッチョイ a9e3-XPTB)
2022/01/20(木) 09:39:15.12ID:+AoyW20h0 どうしても100個のファイルに分けなければならないのか
一つのブックに100シート突っ込むことはできないのか
とか考えたりはするかも
一つのブックに100シート突っ込むことはできないのか
とか考えたりはするかも
472デフォルトの名無しさん (オッペケ Srd1-2j/7)
2022/01/20(木) 12:41:49.38ID:NS2MNDvFr ファイルコピーか、シートのコピーで
バックアップ取っておくとかは考えるかも。
バックアップ取っておくとかは考えるかも。
473デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
2022/01/20(木) 12:47:52.34ID:aoz8cIff0 取引先一件につき、ファイル一つ
それをマクロで集計
最初30個ぐらいだったファイルが、
会社が成長して、100ファイルになったことはあったな
フォーマットやファイルは全て自分で管理してたから問題なかったけど、
今も大丈夫かなぁ
あれ手で計算するのは大変すぎ
それをマクロで集計
最初30個ぐらいだったファイルが、
会社が成長して、100ファイルになったことはあったな
フォーマットやファイルは全て自分で管理してたから問題なかったけど、
今も大丈夫かなぁ
あれ手で計算するのは大変すぎ
474デフォルトの名無しさん (ワッチョイ 6eda-soNI)
2022/01/20(木) 13:46:34.45ID:BPf7HX0l0 1ファイル45個のクエリーを含む同様のファイルが
13地点×6ヶ年分=78個あって、
これをシーケンシャルに1つずつ、For Nextで更新するよう組んだ。
最初の2ヶ月目くらいまでは7時間くらいで更新出来てたが、
3ヶ月目以降は毎回どこかの、
Set tblQ = ThisWorkbook.Worksheets(ws).ListObjects(q)
と、ワークシート名とクエリー名を変数に代入するところでコケる・・・
その都度、コードを削除していったん保存、
再度貼り付けてデバッグし続行させる
沼にはまった。
13地点×6ヶ年分=78個あって、
これをシーケンシャルに1つずつ、For Nextで更新するよう組んだ。
最初の2ヶ月目くらいまでは7時間くらいで更新出来てたが、
3ヶ月目以降は毎回どこかの、
Set tblQ = ThisWorkbook.Worksheets(ws).ListObjects(q)
と、ワークシート名とクエリー名を変数に代入するところでコケる・・・
その都度、コードを削除していったん保存、
再度貼り付けてデバッグし続行させる
沼にはまった。
475デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
2022/01/20(木) 13:49:08.24ID:aoz8cIff0476デフォルトの名無しさん (ワッチョイ 6eda-soNI)
2022/01/20(木) 13:57:12.27ID:BPf7HX0l0 >>475
アドバイス、ありがとう。
一応、開く78個のファイルは1個ずつ保存して閉じているけど、
大元のVBAを持つbookをその都度保存せよ
ということかしら?
そういや、プロジェクトエクスプローラーに
既に処理が終わって閉じたbookのファイル名が残って
どんどん増えて行ったような・・・
こっちは1ファイル処理後ごとに上書き保存とかの処理は入れてなかった。
アドバイス、ありがとう。
一応、開く78個のファイルは1個ずつ保存して閉じているけど、
大元のVBAを持つbookをその都度保存せよ
ということかしら?
そういや、プロジェクトエクスプローラーに
既に処理が終わって閉じたbookのファイル名が残って
どんどん増えて行ったような・・・
こっちは1ファイル処理後ごとに上書き保存とかの処理は入れてなかった。
477デフォルトの名無しさん (ワッチョイ 02da-9BXF)
2022/01/20(木) 13:57:52.65ID:HwD0Q83s0 なんで全部Excelでやろうとするかね ボリューム見て将来鑑みて、どっかの時点で「これはパンクする」
ってぇ判断をしなかったツケだろ 経費抑制? むしろ無駄な経費が膨大に掛かってるのには目を瞑るんだ へー
ってぇ判断をしなかったツケだろ 経費抑制? むしろ無駄な経費が膨大に掛かってるのには目を瞑るんだ へー
478デフォルトの名無しさん (ワッチョイ bd5f-2j/7)
2022/01/20(木) 14:17:24.56ID:gV+Fwxtn0 >>474
変数は毎処理ごとに開放してる?
変数は毎処理ごとに開放してる?
479デフォルトの名無しさん (ワッチョイ 827c-823B)
2022/01/20(木) 14:28:11.68ID:mCK9tQrM0480デフォルトの名無しさん (ブーイモ MMf6-kEIx)
2022/01/20(木) 14:32:45.01ID:bfB7zVPYM kintoneとかでいいでしょ
481デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
2022/01/20(木) 14:40:11.29ID:aoz8cIff0 >>476
>一応、開く78個のファイルは1個ずつ保存して閉じているけど、
もし、
set foo = workbook.open~~~)
みたいにしてたら、最後に
set foo = nothing
を挟まないと、ずっとメモリ残り続けることになると思う。>478さんの指摘がこれ
>大元のVBAを持つbookをその都度保存せよ
これはかなりオススメ。
コードの内容がわかって無くても、エクセルファイルを保存すると大体うまくいく
※保存時に色々とうまくやってくれてるっぽい
>>477
それ言い出すと全企業が大企業並の設備を整える必要がある
ある程度拡張性を備えた上で、「5年後は別システムに移行しているだろう」のような判断ができればいいね
基本、要素(営業や取引先)がドカドカ増えないなあ、システムは特に移行しなくていいと思う。
多少使いにくくても、ノウハウが切り捨てられる方が惜しい
>一応、開く78個のファイルは1個ずつ保存して閉じているけど、
もし、
set foo = workbook.open~~~)
みたいにしてたら、最後に
set foo = nothing
を挟まないと、ずっとメモリ残り続けることになると思う。>478さんの指摘がこれ
>大元のVBAを持つbookをその都度保存せよ
これはかなりオススメ。
コードの内容がわかって無くても、エクセルファイルを保存すると大体うまくいく
※保存時に色々とうまくやってくれてるっぽい
>>477
それ言い出すと全企業が大企業並の設備を整える必要がある
ある程度拡張性を備えた上で、「5年後は別システムに移行しているだろう」のような判断ができればいいね
基本、要素(営業や取引先)がドカドカ増えないなあ、システムは特に移行しなくていいと思う。
多少使いにくくても、ノウハウが切り捨てられる方が惜しい
482デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
2022/01/20(木) 14:41:43.21ID:aoz8cIff0483デフォルトの名無しさん (ワッチョイ 6eda-soNI)
2022/01/20(木) 14:41:48.98ID:BPf7HX0l0 >>478
してなくて、ぼんやり「まずはこのあたりをやらなきゃアカンのかなぁ・・・」とは思ってた。
次に更新する月初めまでにやりまする。
大元のbookで、
"For i To k" より後の、
"Next i" までに使った変数全てについて
Set 変数名 = Nothing
を "Next i" の直前に入れる感じで?
してなくて、ぼんやり「まずはこのあたりをやらなきゃアカンのかなぁ・・・」とは思ってた。
次に更新する月初めまでにやりまする。
大元のbookで、
"For i To k" より後の、
"Next i" までに使った変数全てについて
Set 変数名 = Nothing
を "Next i" の直前に入れる感じで?
484デフォルトの名無しさん (ブーイモ MMf6-kEIx)
2022/01/20(木) 14:48:42.80ID:bfB7zVPYM485デフォルトの名無しさん (ワッチョイ bd5f-2j/7)
2022/01/20(木) 14:49:07.12ID:gV+Fwxtn0 一つのプロシージャで全処理するより
Class とか、Function 使う方が良いかもね。
Class とか、Function 使う方が良いかもね。
486デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
2022/01/20(木) 15:07:43.50ID:aoz8cIff0487デフォルトの名無しさん (ワッチョイ bd5f-2j/7)
2022/01/20(木) 15:16:04.35ID:gV+Fwxtn0 ふーん。
オレなら処理毎にFunction プロシージャに引数で渡してあげて
ループ処理終わったら、変数開放するけどな。
変に長ったらしいのより、そっちの方が解読性がよくなる。
オレなら処理毎にFunction プロシージャに引数で渡してあげて
ループ処理終わったら、変数開放するけどな。
変に長ったらしいのより、そっちの方が解読性がよくなる。
488デフォルトの名無しさん (ワッチョイ 6e8e-SRyr)
2022/01/20(木) 15:19:27.67ID:n5KSDES60 >>481
お前みたいな奴がメンテできないシステムを作り出すのだぞ
お前みたいな奴がメンテできないシステムを作り出すのだぞ
489デフォルトの名無しさん (ワッチョイ bd5f-2j/7)
2022/01/20(木) 15:20:13.56ID:gV+Fwxtn0 まあ、オレはAccess VBA専門なので
Excel VBA は遠い記憶ですが…
シンプル・イズ・ベスト。
Excel VBA は遠い記憶ですが…
シンプル・イズ・ベスト。
490デフォルトの名無しさん (ラクッペペ MM66-Dw/N)
2022/01/20(木) 15:20:30.61ID:/dOetE+CM バカがやると引数地獄かグローバル地獄になんだよ
491デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
2022/01/20(木) 15:21:57.99ID:aoz8cIff0492デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
2022/01/20(木) 15:22:53.50ID:aoz8cIff0 >>490
なるほどw
なるほどw
493デフォルトの名無しさん (ワッチョイ bd5f-2j/7)
2022/01/20(木) 15:24:46.85ID:gV+Fwxtn0494デフォルトの名無しさん (ワッチョイ bd5f-2j/7)
2022/01/20(木) 15:38:37.39ID:gV+Fwxtn0 確かにグローバル変数は使わない方が良い。
ホーム・プロシージャからFunction へ飛ばして
処理させてあげて
戻り値を次のFunctionへ…
って感じで作ると、テスト工程の時に楽になる。
デッカいシステムを組むとそっちの方が絶対楽だし
改修の時も、解読に困らないからね。
ホーム・プロシージャからFunction へ飛ばして
処理させてあげて
戻り値を次のFunctionへ…
って感じで作ると、テスト工程の時に楽になる。
デッカいシステムを組むとそっちの方が絶対楽だし
改修の時も、解読に困らないからね。
495デフォルトの名無しさん (ワッチョイ 6e8e-SRyr)
2022/01/20(木) 15:56:22.20ID:n5KSDES60 >>491
いや、お前の能力が足りないだけだぞ
いや、お前の能力が足りないだけだぞ
496デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
2022/01/20(木) 16:21:54.83ID:aoz8cIff0 エクセルの場合は、エクセルという超グローバルオブジェクトがある
それをメインに据えれば良いと思うけどな
それをメインに据えれば良いと思うけどな
497デフォルトの名無しさん (ワッチョイ 82da-gAlZ)
2022/01/20(木) 17:01:00.66ID:ovHTHlPT0 ホント、マクロは組む人によってその人のカラーや癖が出るとは言ったもんだね。
498デフォルトの名無しさん (ワッチョイ 02b5-zS0L)
2022/01/20(木) 17:03:05.54ID:GNfzU0ds0 変数を日本語というか漢字とか使うのって邪道?
行とか列とかそのまま漢字文字で使ってるんだけど
行とか列とかそのまま漢字文字で使ってるんだけど
499デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
2022/01/20(木) 17:03:18.69ID:aoz8cIff0500デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
2022/01/20(木) 17:06:10.63ID:aoz8cIff0501デフォルトの名無しさん (ワッチョイ 6eda-soNI)
2022/01/20(木) 17:34:30.16ID:BPf7HX0l0 >>498
漢字をマクロ内で使って、
この5〜6年くらいの間で知ってるだけで少なくとも2回、
MSのupdateで動かなくなってた記憶があるので
それに対処出来ればOKかと。
Rangeで引っ張る定義名とかsheet名は
特殊な記号は避けて漢字使っちゃってる。
漢字をマクロ内で使って、
この5〜6年くらいの間で知ってるだけで少なくとも2回、
MSのupdateで動かなくなってた記憶があるので
それに対処出来ればOKかと。
Rangeで引っ張る定義名とかsheet名は
特殊な記号は避けて漢字使っちゃってる。
502デフォルトの名無しさん (ワッチョイ 02da-9BXF)
2022/01/20(木) 17:50:55.00ID:HwD0Q83s0 日本語(漢字)でもいいんだ へー っていうレベルのが真似して安易に使い出したらカオス
他人事だから後は野となれ山となれ っていう発想としか思えない
日本語OSが出来てからやれよ とは思う 米語OS使わざるを得ないなら粛々と従ってろや と
ま、だからってローマ字に換えて30文字ぐらいのモジュールが40ヶぐらい並んでるのを見た時には一時間ぐらい気絶したけど
getsumatsukoushinn() nenjikoushintokuisakibetuhinmokubetsu() あのさ、、、 これにOK出したの誰よ?
他人事だから後は野となれ山となれ っていう発想としか思えない
日本語OSが出来てからやれよ とは思う 米語OS使わざるを得ないなら粛々と従ってろや と
ま、だからってローマ字に換えて30文字ぐらいのモジュールが40ヶぐらい並んでるのを見た時には一時間ぐらい気絶したけど
getsumatsukoushinn() nenjikoushintokuisakibetuhinmokubetsu() あのさ、、、 これにOK出したの誰よ?
503デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
2022/01/20(木) 17:51:21.68ID:aoz8cIff0 そういや何年か前、accessVBAだっけ?2byte文字あると全部エラーになるみたいなのあったな
504デフォルトの名無しさん (ワッチョイ 827c-823B)
2022/01/20(木) 18:02:49.63ID:mCK9tQrM0 >>502
ワロス
ワロス
505デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
2022/01/20(木) 18:26:03.22ID:aoz8cIff0 >>502
こういうの見るとoption explicit必須何やなって思わされる
こういうの見るとoption explicit必須何やなって思わされる
506デフォルトの名無しさん (オッペケ Srd1-2j/7)
2022/01/20(木) 18:30:19.80ID:NS2MNDvFr 開発現場のローカルルールは
2バイト文字禁止が普通だけどね。
色んな環境で使うことを想定したら
日本語とかありえん。
コーディングの時は日本語だけど、
最終的に全置換で英語表記に変える。
2バイト文字禁止が普通だけどね。
色んな環境で使うことを想定したら
日本語とかありえん。
コーディングの時は日本語だけど、
最終的に全置換で英語表記に変える。
507デフォルトの名無しさん (ドコグロ MM96-eOJp)
2022/01/20(木) 20:06:44.42ID:KxaVQnjRM > 色んな環境で使うことを想定したら
Excel VBA でそんなことを気にしないといけない状況って相当珍しいだろw
Excel VBA でそんなことを気にしないといけない状況って相当珍しいだろw
508デフォルトの名無しさん (ブーイモ MMe5-soNI)
2022/01/20(木) 20:09:21.62ID:WDmMC3D+M 俺が前に行ってた派遣先ではC#で漢字の変数名や関数名とか自由に使ってたわ
業界ではそれなりに知られた老舗のソフトメーカーなんだけど
まあ、そういう職場もあるってことで
業界ではそれなりに知られた老舗のソフトメーカーなんだけど
まあ、そういう職場もあるってことで
509デフォルトの名無しさん (ワッチョイ cd2f-Nrkm)
2022/01/20(木) 20:34:21.90ID:NL1fx3HA0 日本語以外での展開を考えてるならまあ2バイト文字禁止で良いんじゃね
日本語環境で開発してる段階で漢字禁止とかあんまり見ないけどな
ただ、メソッド名に日本語は過去にえらいことになった例があるからなぁ...
日本語環境で開発してる段階で漢字禁止とかあんまり見ないけどな
ただ、メソッド名に日本語は過去にえらいことになった例があるからなぁ...
510デフォルトの名無しさん (ワッチョイ 6e8e-SRyr)
2022/01/20(木) 23:42:09.41ID:n5KSDES60 ID:aoz8cIff0
いつもの馬鹿でしたとさ
いつもの馬鹿でしたとさ
511デフォルトの名無しさん (ワッチョイ 82da-gAlZ)
2022/01/21(金) 02:47:14.61ID:XETJK2Tn0 派遣てなになに?
VBA技術者の派遣とかあるんだ?
VBA技術者の派遣とかあるんだ?
512デフォルトの名無しさん (オッペケ Srd1-2j/7)
2022/01/21(金) 03:05:10.67ID:iDAtgXvmr 派遣業(ピンハネ屋)を禁止にすれば
日本人の給料は上がります。
日本人の給料は上がります。
513デフォルトの名無しさん (ワッチョイ 82da-gAlZ)
2022/01/21(金) 05:15:31.24ID:XETJK2Tn0 派遣て確か専門職だからめちゃめちゃ稼げると聞いたけど、どうなの??
那須は出ないとは聞いたけど時給はめっちゃ高いと聞いたものでして。
那須は出ないとは聞いたけど時給はめっちゃ高いと聞いたものでして。
514デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
2022/01/21(金) 07:53:02.69ID:U4E8wi5/0515デフォルトの名無しさん (ワッチョイ 82da-gAlZ)
2022/01/21(金) 08:07:59.20ID:XETJK2Tn0 へえ、1500から2000円ねそうなんだ。
自分田舎住みだからその時給はかなり水準高いわ。
こっちなんてどんだけExcelの技術あっても良くて時給1200円前後。
マクロ書ける人材は貴重だからもっと給料上げるべきだと思う。
自分田舎住みだからその時給はかなり水準高いわ。
こっちなんてどんだけExcelの技術あっても良くて時給1200円前後。
マクロ書ける人材は貴重だからもっと給料上げるべきだと思う。
516デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
2022/01/21(金) 08:29:03.61ID:U4E8wi5/0 企業常駐型だから、基本かなり居づらいし
VBAでゴリゴリの開発や保守なんて絶対にやらんほうがいいわ
VBAでゴリゴリの開発や保守なんて絶対にやらんほうがいいわ
517デフォルトの名無しさん (ワッチョイ 82da-gAlZ)
2022/01/21(金) 08:45:23.59ID:XETJK2Tn0 あ、常駐型SEを思い出した。
給料はもっと貰うべき。
給料はもっと貰うべき。
518デフォルトの名無しさん (ワッチョイ a963-nIc1)
2022/01/21(金) 08:51:43.72ID:k97g2FVL0 適正が有るだけで大した労力使わないのに給料は高いんだよ
楽だよな
楽だよな
519デフォルトの名無しさん (ワッチョイ a936-9BXF)
2022/01/21(金) 09:29:31.93ID:KSflUQH80 ExcelでEnumChildWindowsを使って他アプリの子ウィンドを取得するプログラムをテストしています。
と言っても知識がないのでネットからソースをコピーしてテストしているレベルです。
EnumChildWindowsの引数でコールバック関数をしているのですが、コールバック関数を実行した時に順調に
実行される時とEnumChildWindowsを実行した途端Excelが終了する時があります。
何かよくあるミスとかあれば教えてください。
APIの宣言、コールバック関数は標準モジュール、その他はシートモジュールに書いています。
プログラムを張り付けて良いか分からないので張り付けていませんが良いならご指示ください。
よろしくお願いします。
と言っても知識がないのでネットからソースをコピーしてテストしているレベルです。
EnumChildWindowsの引数でコールバック関数をしているのですが、コールバック関数を実行した時に順調に
実行される時とEnumChildWindowsを実行した途端Excelが終了する時があります。
何かよくあるミスとかあれば教えてください。
APIの宣言、コールバック関数は標準モジュール、その他はシートモジュールに書いています。
プログラムを張り付けて良いか分からないので張り付けていませんが良いならご指示ください。
よろしくお願いします。
520デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
2022/01/21(金) 09:44:43.07ID:U4E8wi5/0 >>519
コードは貼ってくれ
コードは貼ってくれ
521519 (ワッチョイ a936-9BXF)
2022/01/21(金) 11:25:52.95ID:KSflUQH80 519です。
長すぎると怒られるのでいくつかに分けます。
よろしくお願いします。
Sheet1モジュール
'///GetWindowの定数///
Const GW_HWNDFIRST = 0 '基準となるWindowと同じ種類のうち最前面のWindow
Const GW_HWNDLAST = 1 '基準となるWindowと同じ種類のうち最背面のWindow
Const GW_HWNDNEXT = 2 '基準となるWindowの次のWindow
Const GW_HWNDPREV = 3 '基準となるWindowの前のWindow
Const GW_OWNER = 4 '基準となるWindowのオーナーWindow
Const GW_CHILD = 5 '基準となるWindowの子WindowのうちトップレベルのWindow
Dim myHwnd As LongPtr '検索ボタンのハンドルを記憶
Sub Test1()
'アプリhogeの検索ボタンを探す
Dim Ret As LongPtr
Dim hwnd As LongPtr
hwnd = FindWindow(vbNullString, "hoge") 'トップウィンド
hwnd = FindWindowEx(hwnd, 0, vbNullString, "hoge_1")'検索ボタンが所属している子ウィンド
Ret = EnumChildWindows(hwnd, AddressOf EnumChildProc, 0)
myHwnd = GetWindow(myHwnd, GW_HWNDPREV)
End Sub
長すぎると怒られるのでいくつかに分けます。
よろしくお願いします。
Sheet1モジュール
'///GetWindowの定数///
Const GW_HWNDFIRST = 0 '基準となるWindowと同じ種類のうち最前面のWindow
Const GW_HWNDLAST = 1 '基準となるWindowと同じ種類のうち最背面のWindow
Const GW_HWNDNEXT = 2 '基準となるWindowの次のWindow
Const GW_HWNDPREV = 3 '基準となるWindowの前のWindow
Const GW_OWNER = 4 '基準となるWindowのオーナーWindow
Const GW_CHILD = 5 '基準となるWindowの子WindowのうちトップレベルのWindow
Dim myHwnd As LongPtr '検索ボタンのハンドルを記憶
Sub Test1()
'アプリhogeの検索ボタンを探す
Dim Ret As LongPtr
Dim hwnd As LongPtr
hwnd = FindWindow(vbNullString, "hoge") 'トップウィンド
hwnd = FindWindowEx(hwnd, 0, vbNullString, "hoge_1")'検索ボタンが所属している子ウィンド
Ret = EnumChildWindows(hwnd, AddressOf EnumChildProc, 0)
myHwnd = GetWindow(myHwnd, GW_HWNDPREV)
End Sub
■ このスレッドは過去ログ倉庫に格納されています
