[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/26 16:42 / Filesize : 257 KB / Number-of Response : 1014
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part79



1 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 11:46:47.21 ID:mBQ16TA8.net]
↑同じ内容を3行貼り付けること

ExcelのVBAに関する質問スレ
コード書き込みや作成依頼もOK

次スレは>>980が立てること
無理なら細かく安価指定

※前スレ
Excel VBA 質問スレ Part77
https://mevius.5ch.net/test/read.cgi/tech/1658009255/
Excel VBA 質問スレ Part78
https://mevius.5ch.net/test/read.cgi/tech/1667104996/

-
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

129 名前:デフォルトの名無しさん [2023/02/09(木) 20:08:27.21 ID:zbgEdy/S.net]
無職の息子が事務に就職するためにマクロの資格を取ると言っているのですが
そんな役に立つか分からないものじゃなくもっと事務の仕事に役立つ簿記をとってほしいと言っても聞きません
マクロを使われている皆さんから見てもマクロの資格しかない人間なんか採りませんよね?

130 名前:デフォルトの名無しさん mailto:sage [2023/02/09(木) 20:11:01.11 ID:oRtRHGsJ.net]
>>128
おっしゃる通りだね
VBAは属人化の最たる物だからかえってマイナスかも

131 名前:デフォルトの名無しさん mailto:sage [2023/02/09(木) 20:13:24.22 ID:WlGsC4V+.net]
>>128
マクロの資格は事務の仕事に必要なスキルの一つですが、単独では仕事に適していない

132 名前:場合もあります。簿記の資格や事務に関連する他のスキルを備えた人材が求められることもあります。そのため、マクロの資格だけでは応募になれない場合もあります。

あなたの息子が今後のキャリアアップに向けて考えておくべきは、職場で必要とされるスキルを持っていることです。簿記の資格も含め、仕事に役立つスキルを身につけることで、より魅力的な人材になることができます。
[]
[ここ壊れてます]

133 名前:デフォルトの名無しさん mailto:sage [2023/02/09(木) 21:06:41.73 ID:1BKoKxeD.net]
>>128
両方とればいい、資格がある方が有利ってだけの話
そうそううまくいかないのが世の中

134 名前:デフォルトの名無しさん [2023/02/09(木) 21:11:22.86 ID:eLe3MrDF.net]
>>129
>>130
やはりそうですよね、落ち着いてもう一度話してみようと思います
マクロを事務で使うことなんてないし
マクロは記録するものなのに見栄をはってマクロを書けるなんておかしな表現をするようでは資格があったとしても取れはしないと

135 名前:デフォルトの名無しさん [2023/02/09(木) 21:15:03.44 ID:9v0l8GAr.net]
>>131
そうだとしてもまずは簿記から取らせるべきですよね?
それにエクセルの資格でもマクロだけのものよりもエクセル全体の資格のほうが事務能力を評価してもらえると思います

136 名前:デフォルトの名無しさん mailto:sage [2023/02/09(木) 22:00:25.94 ID:nBzxeXqK.net]
マクロを知らない馬鹿にVBAを使えずに僻んでいる馬鹿が答えて馬鹿同士で納得していて笑った

137 名前:デフォルトの名無しさん mailto:sage [2023/02/09(木) 22:03:18.17 ID:1BKoKxeD.net]
>>133
本人が興味ない資格の勉強しても覚えられるとは思えん
やりたいようにやらせるがいい、結局は自己責任



138 名前:デフォルトの名無しさん mailto:sage [2023/02/09(木) 22:48:14.12 ID:5M6BEBFG.net]
>>133
簿記2級ねらった方が良いよね
事務職なら
話はそれからだ

139 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 00:03:29.76 ID:YH2SeA6S.net]
>>134
馬鹿を連呼する馬鹿がいるスレはここですか?

140 名前:デフォルトの名無しさん [2023/02/10(金) 07:22:18.13 ID:jDe/a0Sf.net]
と、馬鹿が申しております。

141 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 07:56:54.21 ID:X5Ej7qVR.net]
連続あぼーんワロた

142 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 09:26:00.78 ID:sM1HDV8m.net]
変数として用意した配列(例えば100行×5列等)にデータを入れ、その配列に対してvlookupやmatchのような関数を当てたいのですが可能でしょうか?可能であればどのように記述出来るのでしょうか?
現在はよく分からず多重if, forで誤魔化してます

143 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 09:43:26.29 ID:X5Ej7qVR.net]
(tmp) = VlookUp(引数)みたいな感じ??

144 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 12:22:05.62 ID:PIkGF45X.net]
配列に対してはムリだと思う。dictionaryなんか使ってやれば似たようなことは無理やりできるかもだけどそれならいちどシートに書き出してworksheetfunctionでシート関数を使ったほうが簡単。
EXCEL VBAの配列操作が貧弱なのはシートでできるからだと割り切ってる。2次元限定だけど。

145 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 15:39:36.07 ID:WNti9dgN.net]
https://i.imgur.com/JgKY39B.jpg

自治会の総会集計を頼まれて、書面表決導入でお助けください

議案は1~5まであり、個別でも一括でもいいとしています
賛成・反対・棄権でひとつのブロックとして、一

146 名前:ブロックに数値がある場合で議案1~5ブロックが未記入の場合にコピーしたいです
コピーするのは世帯人数に数値がある行までです

この例だと3行目何もせず、4と5行目は議案1~5に一括ブロックをコピー
6行目は議案3のみに一括ブロックをコピー

VBAでの組み方をご指南ください
[]
[ここ壊れてます]

147 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 17:37:33.44 ID:i/BO22nF.net]
そんなの何十行もあるわけじゃあるまいし手動でもいいと思うが



148 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 18:08:35.29 ID:WNti9dgN.net]
500行あるんす

149 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 18:10:14.38 ID:i/BO22nF.net]
すげー自治会だな

150 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 18:26:50.24 ID:VmkjxzjW.net]
>>143
このシートを「データ」シートにしてもう1つシート作ってそれを「集計シート」にして計算式でやったほうが楽だと思う

151 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 18:37:45.48 ID:A9tz9okE.net]
>一括ブロックに数値がある場合で、
>議案1〜5ブロックが未記入の場合にコピーしたい

議案1〜5ブロックは、個別の数なのか?

それなら、議案1〜5ブロックに数値が書かれている場合にも、
一括ブロックの数値を足さないといけないのでは?

152 名前:148 mailto:sage [2023/02/10(金) 18:43:32.78 ID:A9tz9okE.net]
1. まず、一括ブロックと議案1〜5ブロックの空欄にも、0 を入れる。
これで全てのセルに、何らかの数値が入る

2. 次に、一括ブロックの数値を、議案1〜5ブロックに足していく

153 名前:デフォルトの名無しさん [2023/02/10(金) 19:17:16.32 ID:6IlNtWZO.net]
>>143
俺なら、
世帯行(3行〜データ無くなるまで)と
議案列(この場合5回)の二重ループ内させて
一括Gの入力判定して議案空白の列に載せていく

154 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 19:31:04.95 ID:IBbxfpHM.net]
>>143

自分も>>150と同じ方法でやるかな。

ちなみに実際にコード書いてみたら22行だった
(変数の取り方とかで多少ずれるけどほぼこのくらいかと)。

155 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 19:32:46.64 ID:WNti9dgN.net]
>>148
基本賛成だけど、この議案だけ反対って場合は一括賛成、個別反対を許すようにした
個別入ってるときはそっち優先
なるべく入力を減らす配慮

>>150
それがやりたいっす
>>151
く、くださいっ

156 名前:デフォルトの名無しさん [2023/02/10(金) 20:01:37.48 ID:DfKN5OB+.net]
>>152
関数で解決できそうなら無理にVBAで解決することもないと思う

で、これはやりたいことと解決したいことが合ってるのか気になっての質問なんだけど
6行目、議案3の他に2,4も世帯人数と比べ回答数が少ないように見えるけどそこには何もしなくていいの?

157 名前:151 mailto:sage [2023/02/10(金) 20:45:28.82 ID:IBbxfpHM.net]
>>152

コードは下記。
今回は記述してないが、500行あるなら
screenupdatingをfalseにした方がいいかと。

Sub 議決()

Dim i As Long, j As Long
Dim r1 As Range, r2 As Range 'r1は一括の空白数取得用、r2は各議案の空白数取得用
Dim rowNumber As Long 'データが埋まっている行数取得用

rowNumber = Cells(Rows.Count, 1).End(xlUp).row

For i = 3 To rowNumber
Set r1 = Range(Cells(i, 2), Cells(i, 4))

If WorksheetFunction.CountBlank(r1) <> 3 Then
For j = 5 To 17 Step 3
Set r2 = Range(Cells(i, j), Cells(i, j + 2))
If WorksheetFunction.CountBlank(r2) = 3 Then
r2 = r1.Value
End If
Next j
End If
Next i

End Sub



158 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 21:17:11.72 ID:WNti9dgN.net]
>>153
その数値の整合性は表決者依存にしました
議案4に個別したらそれを尊重すると

>>154
で、できました
ささっと作ってくれるってすごいです
ありがとうございます
総会乗りきれます!

159 名前:デフォルトの名無しさん [2023/02/10(金) 21:52:52.21 ID:ciEsiTU6.net]
>>155
9人世帯の議案4には棄権1しか入っていないけど、これは
一括に関係なく議案4に個別で入れた人が棄権1人しかいなかった
その上で9人世帯は議案4に関して棄権1名のみとして扱う
みたいな解釈でいいのかな?
一括が何票あろうが個別1票のが上みたいな
単純に各議案ごとに全世帯での票数を計上したいわけじゃなさそうだよね

160 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 22:03:07.12 ID:ix/AvTMJ.net]
>>140
セル範囲指定するとに配列の変数名指定するだけ
バリアント型じゃないと無理かもしれん

>>142
WorksheetFunctionでセル範囲指定する奴はほとんど配列でもいける
というか、VBAにわたってくるときに内部的に配列になってるはず

161 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 22:07:47.74 ID:ix/AvTMJ.net]
参考コード
Option Base 1
Sub x()
Dim a(10, 2)
For i = 1 To 10
a(i, 1) = i: a(i, 2) = i & "だよ"
Next
MsgBox WorksheetFunction.VLookup(7, a, 2)
End Sub

162 名前:デフォルトの名無しさん mailto:sage [2023/02/11(土) 03:59:07.46 ID:aNcmPbDM.net]
>>156
実際はシャンシャン総会なので一括賛成で終わると思ってます
書面7割、ネット3割を想定
ネットはGoogle Formsを使うので、定義として全項目スキップできるようにしてあって
概ね賛成だけど議案4だけ個別回答
その場合は表決者がつじつま合わせないとその議案はそっち優先にしますよとしています

163 名前:デフォルトの名無しさん [2023/02/11(土) 07:30:30.25 ID:6Ch2sdKJ.net]
>>158
マジか!!! と思って試してみたらマジだったw

んで個人的によく使うmin,max,match,countifを試してみたら
min,maxはできたけどmatch,countifはダメだった。
要素の中身を取り出す系の関数はいける感じかな?

ひとつ理解が深まった気がするよ。ありがとう。

164 名前:デフォルトの名無しさん mailto:sage [2023/02/11(土) 08:41:56.27 ID:DG09Hgtn.net]
Subtotalって集計キーを2つ指定したいときはどうやるの?

165 名前:デフォルトの名無しさん [2023/02/11(土) 09:45:09.37 ID:jORavOuf.net]
sumproduct

166 名前:デフォルトの名無しさん mailto:sage [2023/02/11(土) 19:56:49.54 ID:uHiybqGX.net]
マクロの資格とかあるの?MOSのこと?

167 名前:デフォルトの名無しさん mailto:sage [2023/02/11(土) 20:04:45.09 ID:cvm4+SaB.net]
そいやあるのかね、言語としては古くてしょうもないが



168 名前:デフォルトの名無しさん mailto:sage [2023/02/11(土) 20:10:27.29 ID:9czFn3SB.net]
VBAエキスパートという民間資格
MOS ビジネス統計すぺしゃりすと IC3 あどび認定ぷろふぇっしょなる Microsoft認定資格 App Development with Swift IT Specialist えtc
https://www.odyssey-com.co.jp/index.html

169 名前:デフォルトの名無しさん mailto:sage [2023/02/11(土) 20:16:37.74 ID:uHiybqGX.net]
ありがとう。あるんですね。

170 名前:デフォルトの名無しさん mailto:sage [2023/02/11(土) 20:18:50.78 ID:uHiybqGX.net]
イミディエイトウィンドウでは実行できないステートメントはどれか。次の中から1つ選びなさい。

1.?Range("A5").Value
2.MsgBox "Hello!"
3.Dim x As Integer
4.For i = 1 To 10:total = total + i:Next i:Print total

3番かな?

171 名前:デフォルトの名無しさん mailto:sage [2023/02/11(土) 20:20:26.56 ID:uHiybqGX.net]
次のような2つのプロシージャを同一の標準モジュール上に作成した。「M_Proc」プロシージャの実行結果はどうなるか。次の中から正しいものを1つ選びなさい。

Sub M_Proc ()
Dim a As Long
a = F_Proc(3)
MsgBox a
End Sub

Function F_Proc(Optional x As Long = 5) As Long
F_Proc = x * 2
End Function

---
@6
A9
B10
C実行時エラーが発生する

172 名前:デフォルトの名無しさん mailto:sage [2023/02/11(土) 20:23:23.87 ID:uHiybqGX.net]
Optional x As Long = 5
って何?この引数。

173 名前:デフォルトの名無しさん mailto:sage [2023/02/11(土) 20:25:24.81 ID:uHiybqGX.net]
次のプロシージャはセルA1の値に応じてメッセージを表示するものである。セルA1の値が3未満だったら「A」と表示させたい。このとき、【 1 】に入る適切な命令を解答欄に入力しなさい。

Sub Sample()
Select Case Range("A1").Value
Case 【 1 】
MsgBox "A"
Case 5
MsgBox "B"
Case 7 To 9
MsgBox "C"
Case Else
MsgBox "該当なし"
End Select
End Sub

174 名前:デフォルトの名無しさん mailto:sage [2023/02/11(土) 20:30:06.33 ID:uHiybqGX.net]
資格が役立つかさておき、いい問題だね。

175 名前:デフォルトの名無しさん mailto:sage [2023/02/11(土) 21:14:28.92 ID:nDlYjCHU.net]
>>169
省略引数でしょ
って言うか vba optional でググれ

176 名前:デフォルトの名無しさん mailto:sage [2023/02/12(日) 08:33:11.90 ID:aoDTDGlX.net]
vba解説してるサイト見たら皆プロシージャの最後に
set obj = nothing '後始末
ってやってるけどあれ循環参照以外で意味ある?

やらずにadodbとかseleniumで10万回以上実行してるけど何の問題も起こらない

177 名前:デフォルトの名無しさん mailto:sage [2023/02/12(日) 09:18:22.71 ID:19IYgGC6.net]
>>173
意味ない
循環参照でもそれで解決するならやらなくても解決する



178 名前:デフォルトの名無しさん mailto:sage [2023/02/12(日) 11:39:10.47 ID:71AjNYz+.net]
.cels(1,1) = 〇〇
セル指定で行や列の連番を簡単に入力する方法ってありますか?
以下のようにオートフィルのような感じでコードを作成したいです。

.cels(1,2) = 〇〇
.cels(1,3) = 〇〇
.cels(1,4) = 〇〇

179 名前:デフォルトの名無しさん mailto:sage [2023/02/12(日) 13:09:04.90 ID:aoDTDGlX.net]
>>174
これからも書かない事にしときます

>>175
こういう事?

Sub a()
Dim i
For i = 2 To 10
Cells(i, 1) = i
Next
End Sub

180 名前:デフォルトの名無しさん mailto:sage [2023/02/12(日) 13:12:25.71 ID:+dHL9JcR.net]
>>175
For で回すのがだめな理由を書いて

181 名前:デフォルトの名無しさん mailto:sage [2023/02/12(日) 13:17:48.68 ID:GOWa9Zgu.net]
>>175
連続するセルに違う内容を書き込みたいんなら配列を使う手もある
Range("B1:D1") = Array("あああ","いいい","ううう")

182 名前:デフォルトの名無しさん [2023/02/12(日) 15:04:05.55 ID:uHFAq1f0.net]
>>175
celsの用語が間違っているのと、
○○を "○○" のように書けば簡単に入力できますよ

183 名前:デフォルトの名無しさん [2023/02/12(日) 18:33:42.43 ID:T5GBSGpP.net]
>>175
.celLs(1,1) = 〇〇 をワークシートに貼り付けて
フィルハンドルを下にドラッグしたら簡単ですよ

184 名前:デフォルトの名無しさん mailto:sage [2023/02/13(月) 00:34:04.23 ID:pezzuKY3.net]
わざとやってるだろw

185 名前:デフォルトの名無しさん [2023/02/13(月) 10:11:26.26 ID:QGUistpW.net]
暇潰しで初心者のふりしてるように見えるね

186 名前:デフォルトの名無しさん mailto:sage [2023/02/13(月) 14:01:41.50 ID:b7LuPfio.net]
>>173
通常のローカル変数に対しては、意味がない
本当にプロシージャの最後で通常のローカル変数なら、循環参照でも意味はない

書くのが良い作法とされる流派はあるが、それどこの解説ページだ?
いまどきは、皆って言うほど書く人はいないイメージだがな

>>174
通常のローカル変数じゃなければ意味はあるかもしれんぞ

187 名前:デフォルトの名無しさん mailto:sage [2023/02/13(月) 14:31:44.50 ID:CpfiRcck.net]
>>183
> 通常のローカル変数じゃなければ意味はあるかもしれんぞ
どんなケース?



188 名前:デフォルトの名無しさん mailto:sage [2023/02/14(火) 03:25:36.32 ID:zG3Q3kn7.net]
>>184
通常のローカル変数じゃないんだから
グローバル変数とか、Static変数とかだろ

189 名前:デフォルトの名無しさん mailto:sage [2023/02/14(火) 06:05:43.15 ID:3/1aS8Pe.net]
>>183
> >>173

collectionとかに格納したオブジェクト変数なんかはちゃんと開放されてるのか不安にはなるね。

190 名前:デフォルトの名無しさん mailto:sage [2023/02/18(土) 22:43:39.59 ID:6PWZugQu.net]
windows10アップーデートしたけど、普通にvbaでIE操作できるね。助かったわ

191 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 01:32:52.35 ID:15y14fHP.net]
EdgeのIEモードは実質IEが動いてるのでな
いまの所MSも2029年まではIEは裏方で生き長らえる保証してるから安心していいぞ
どうせ6年後もWindowsが存在してればIEの寿命も延長されるだろうよ

192 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 02:32:29.18 ID:hw6q8la/.net]
Windows12の噂もちらほらだからまだまだ消えないだろうや

193 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 13:49:26.92 ID:Uh8lBtn9.net]
セル内にある数式の"="を削除する方法はありますか
テキストとして、”A1-A2”などだけが残るようにしたいのです

194 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 14:00:41.05 ID:De+xjlNk.net]
>>190
Range("A1") = Mid(Range("A1").Formula, 2, 999)

195 名前:デフォルトの名無しさん [2023/02/19(日) 16:05:55.05 ID:QuMlk2qt.net]
ワークシート関数なら
=SUBSTITUTE(FORMULATEXT(A1),"=","",1)

196 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 16:31:24.35 ID:xSIr/CQB.net]
>>192
それA1に設定したらA1が「SUBSTITUTE(FORMULATEXT(A1),"=","",1)」にならない?

197 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 18:14:30.54 ID:FtkTxk83.net]
>>190

どういう風に残したいかによって変わるかと。
対象の関数が入っているセルから関数(=)を消すなら=を空白に置換、
別のセルに書き出したいなら>>192の書いてる方法かと。



198 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 21:30:32.90 ID:QtOszatp.net]
ここはVBAスレ

199 名前:190 mailto:sage [2023/02/20(月) 15:11:57.56 ID:AObDtk9K.net]
どうもです

A1、A2を足し算する場合、=A1+A2
となりますが、この結果をcsvで保存しているのです
ですから、式の部分が結果の数値になります
毎日、あらかじめよぶんに式を次の行にコピーしておいて使いたいので、式の入っている部分をそこのセルだけ下にドラッグしています
そのままですと、式の結果だけ残って、式が消えてしまって不便なのでイコールを除去して取っておこうと思ったわけです

イコールの追加
ActiveCell.formula ="="&ActiveCell.Value

イコールの削除
ActiveCell.Value =Replace(ActiveCell.Formula,"=","" )

これでいけるだろうかと思ってやっているところであります

200 名前:デフォルトの名無しさん mailto:sage [2023/02/20(月) 15:29:44.23 ID:2ZMpD8wr.net]
エクセル形式で保存してください

201 名前:デフォルトの名無しさん mailto:sage [2023/02/20(月) 18:06:18.64 ID:Y+9TMPzL.net]
vba以前の問題というか無知な質問でごめん

転職先で会社からUSBメモリを配布されたから
自宅のPCでマクロ作ってxls形式、xlsm形式の両方で会社のPCに移して使おうとしたら何度やってもアクセシビリティの利用不可?で無限ループのごとくフリーズ
タクスマネージャから強制終了

セキュリティで弾かれてますか?

202 名前:デフォルトの名無しさん mailto:sage [2023/02/20(月) 18:09:31.33 ID:O/Xt15uK.net]
自宅で作ったプロシージャをtxtとかで会社メールに送ってそこで新しく作って標準モジュールとかに入れてけば出来る?
忙しすぎて会社で試せてない

203 名前:デフォルトの名無しさん mailto:sage [2023/02/20(月) 20:29:16.39 ID:SOlJ2Ite.net]
>>198
分かりません

>>199
分かりません

204 名前:デフォルトの名無しさん mailto:sage [2023/02/20(月) 20:37:46.69 ID:sKNUAhyw.net]
セキュリティの厳しい会社だと、メールや添付ファイルに何らかのプログラムが書いてあると自動的に削除される

205 名前:デフォルトの名無しさん mailto:sage [2023/02/20(月) 21:03:48.15 ID:KZiGFVej.net]
なんで赤の他人にそんなセキュアな疑問訊ねるかな?社内規定でどう扱えばいいかUSB渡されたとき聞いてなかったのか
勝手なことしてるとまたすぐ転職する羽目に陥るぞ

206 名前:デフォルトの名無しさん [2023/02/21(火) 12:00:15.73 ID:QtuhzazS.net]
どなたかVBAでのレジストリ操作についてわかる方いたら教えてください。
以下の方法を試しましたが、取れる値と取れない値がありました。
取得したい値の読み取り権限も許可してもうまくいかず。。。

・WScriptのRegRead()メソッド
・api
・bat

色々切り分けたところbatファイルを単体で実行したときには取得できて
VBAからbatファイルを実行すると値が取得できないので
VBAの実行権限に問題があるのではと考えていますが
権限とか関係なしにapiでどこでも取得できるよとか
何かご存知の方いたらコメントお願いします。

207 名前:デフォルトの名無しさん [2023/02/21(火) 12:02:26.74 ID:QtuhzazS.net]
連投すみません
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft配下の
値を取得できない状況です



208 名前:デフォルトの名無しさん mailto:sage [2023/02/21(火) 12:23:42.75 ID:O9yVRoe+.net]
>>203
VBAで昇格は無理だからコマンドライン呼び出せ

209 名前:デフォルトの名無しさん [2023/02/21(火) 12:58:35.82 ID:QtuhzazS.net]
>>205
回答ありがとうございます。
コマンドラインで呼び出すというのは
以下コードのように実行結果を取得する感じですかね。
試してみたところ、実行結果が空白で返ってきたのですが
基本的にはレジストリのどの値も取得できるのでしょうか?

'実行するコマンドを指定
command = "ping 192.168.10.1"

Set wsh = CreateObject("WScript.Shell")

'コマンドを実行
Set execObj = wsh.exec("%ComSpec% /c " & command)

'コマンドの実行結果を取得
commandResult = execObj.stdOut.ReadAll

210 名前:デフォルトの名無しさん [2023/02/21(火) 13:01:26.92 ID:QtuhzazS.net]
pingの実行結果は返ってきますが
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft" /v "指定の場所"の
結果が返ってこないです。

211 名前:デフォルトの名無しさん mailto:sage [2023/02/21(火) 13:15:24.72 ID:fHD8EY4F.net]
まるごと不可?
部分的に不可?

212 名前:デフォルトの名無しさん [2023/02/21(火) 13:16:41.22 ID:QtuhzazS.net]
>>208
まるごと不可です

213 名前:デフォルトの名無しさん mailto:sage [2023/02/21(火) 13:17:37.19 ID:O/2CEwvU.net]
>>207
コマンドは管理者権限で実行せんとあかんのと違う?

214 名前:デフォルトの名無しさん [2023/02/21(火) 13:40:16.54 ID:QtuhzazS.net]
5か所くらい検証してみたら部分的にとれないが正解でした。
× "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\MachineGuid"
○ "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\InstallRoot"
× "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQMClient\WinSqmFirstSessionStartTime"
○ "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Palm\DelayManipulationDuration"
○ "HKEY_LOCAL_MACHINE\SOFTWARE\Apple Inc.\Apple Application Support\InstallDir"

215 名前:デフォルトの名無しさん mailto:sage [2023/02/21(火) 15:07:37.73 ID:fHD8EY4F.net]
win10とvsとvbaで試してきた
LOCAL_MACHINE
"SOFTWARE¥Microsoft¥Cryptography"
"MachineGuid"

RegGetValueWで読めた

216 名前:デフォルトの名無しさん [2023/02/21(火) 15:32:26.88 ID:QtuhzazS.net]
凄いですね・・・
もう一つの方も行けましたか?
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQMClient\

217 名前:デフォルトの名無しさん mailto:sage [2023/02/21(火) 15:44:36.64 ID:fHD8EY4F.net]
Option Explicit
Declare PtrSafe Function RegGetValueW Lib "advapi32.dll" ( _
ByVal k As LongPtr, _
ByVal s As LongPtr, _
ByVal v As LongPtr, _
ByVal f As Long, _
ByVal t As LongPtr, _
ByVal d As LongPtr, _
ByVal n As LongPtr) _
As LongPtr
Sub DoRegTest()
Dim b(0 To 2048) As Byte
Dim n As Long
Dim r As LongPtr
Const HKEY_LOCAL_MACHINE = &H80000002
n = 2048
r = RegGetValueW( _
HKEY_LOCAL_MACHINE, _ StrPtr("SOFTWARE\Microsoft\Cryptography"), _
StrPtr("MachineGuid"), _
2, _
0, _
VarPtr(b(0



218 名前:)), VarPtr(n))
End Sub
↑この感じでSZ型のキーを読み取った
[]
[ここ壊れてます]

219 名前:デフォルトの名無しさん [2023/02/21(火) 16:08:56.75 ID:QtuhzazS.net]
>>214
ありがとうございます。
提示していただいたもので実行してみたところ
戻り値が2でシステムエラーコードで確認すると
「システムは、指定されたファイルを見つけることができません。」
となっていました。
となると、こちらの環境的な問題ですかね。。

220 名前:デフォルトの名無しさん [2023/02/21(火) 16:16:03.43 ID:QtuhzazS.net]
>>214
無事取得できました!
本当にありがとうございます。
お手数おかけしました。

221 名前:デフォルトの名無しさん mailto:sage [2023/02/21(火) 19:33:10.83 ID:JTliHuKO.net]
>>199
>忙しすぎて会社で試せてない

お前はいったい何をやっているのだ?VBAは仕事ではないのか?会社で試すのは仕事ではないのか?
メール開く時間すらないほど忙しい会社なのか?インポートやエクスポートを知らんのか?

222 名前:デフォルトの名無しさん mailto:sage [2023/02/22(水) 01:16:47.41 ID:9VE/T3g1.net]
あぼーん

223 名前:デフォルトの名無しさん mailto:sage [2023/02/23(木) 14:40:13.33 ID:NwCSUcmQ.net]
俺は昨日は余計なメール開く時間も惜しいほど忙しいかったな
まあそんな日もある

224 名前:デフォルトの名無しさん mailto:sage [2023/02/23(木) 19:25:49.13 ID:DX82pz52.net]
それも仕事

225 名前:デフォルトの名無しさん mailto:sage [2023/02/23(木) 21:49:11.96 ID:d94eSRWI.net]
ほどほどに忙しいうちが花と言われたからからね。
暇すぎはストレス溜まるし忙しすぎは思考停止する。

226 名前:デフォルトの名無しさん [2023/02/25(土) 08:44:32.62 ID:QsBdGNRz.net]
VBAを使ってることは誰にも言わず
その日が期日の業務だけサッと終わらせて
後はゲームなり昼寝なりしてるけどストレスフリーよ
メールチェックとかはくだらん定例ミーティングの裏でやる

227 名前:デフォルトの名無しさん [2023/02/25(土) 09:53:04.96 ID:aIZzN5su.net]
「暇すぎはストレス溜まる」

これアホちゃう?
いままでの人生でそんな思考になったことは一度もない。
暇ならそれに感謝するだけ。
嬉しくてしかたがない。
人生にはやりたいこと楽しいことがたくさんあるんだから
それに暇な時間をそそぐだけでいい。
忙しいのは嫌い。
なぜ貴重な自分の時間をやりたくないことに使わなきゃいけないの。



228 名前:デフォルトの名無しさん mailto:sage [2023/02/25(土) 13:54:24.69 ID:JD4Ctbem.net]
君にもそのうちわかるよ わからなかったらそこまでだったってこと

229 名前:デフォルトの名無しさん mailto:sage [2023/02/25(土) 16:49:36.83 ID:DoqH+M+N.net]
社会に出たことない引きこもりの思考またはよほど待遇の良い会社にいるのかどっちかだな。

暇すぎってことは仕事を見つけなければならないんだよ。
他の人の仕事手伝うとか。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<257KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef