20/07/04 16:47:20.12 IjVZd7O90.net
>>207
2000列で高々3万行程度だろ
Excelの計算式はマルチスレッドで動くから自称「初心者じゃない」君のVBAより速いと思うぞ
215:デフォルトの名無しさん
20/07/04 17:02:54.82 DEQjmcqBd.net
>>214
バーカw
やってから言え。
本当バカだなあ。
そもそもファイル重くて碌に動かねえよ。
216:デフォルトの名無しさん
20/07/04 17:18:55.42 pfDbF4Mra.net
どうせ適当なデータでっち上げて表示させても気づかないだろ
217:200
20/07/04 17:35:53.50 oup49XFx0.net
>>203
おっしゃる通りでした。
IFに問題があったみたいです。ありがとうございました。
218:デフォルトの名無しさん (ワッチョイ 8e02-JJ0U)
20/07/04 17:46:55 aRnpDm0b0.net
5ちゃんのExcelVBA質問スレでMonaさんに対してマウントを取りたいのですが、
Mount Mona
と記述してもマウントが取れません
どうすればいいですか?
219:デフォルトの名無しさん
20/07/04 17:49:24.23 1naoKVTK0.net
>>207
お前が馬鹿なだけだろ
全部メモリーに置く理由もない
己の頭の問題を仕様の問題とすり替えるな
220:デフォルトの名無しさん
20/07/04 17:54:43.71 oup49XFx0.net
A列の2行目以降に値あり、B列の2行目以降に同じ行のA列の値が
上から何回目に出現したかを返す関数として「=COUNTIF($A$1:A2,A2」を使っています。
同じことを配列で使用する方法を教えて下さい。
(A列の値は並び替えをしてあります)
Dim EndRow As Long, r As Long
EndRow = Cells(Rows.Count, 1).End(xlUp).Row
ReDim ary(EndRow, 2)
ary = Range("A2:B" & EndRow).Value
For r = 1 To EndRow - 1
ary(r, 2) = Application.WorksheetFunction.CountIf _
(Range(ary(1, 1), ary(r, 1)), ary(r, 1))
Next r
これだとRangeメソッドは失敗しましたになります。
221:デフォルトの名無しさん
20/07/04 18:14:15.70 DEQjmcqBd.net
>>219
出来もしないこと言ってるバカ?
それとも、それ迄のやり取りすら出来ないバカ?
手作業やExcel数式でやってから言え。
ちゃんとそれ迄のやり取りも読んでから言えよw
222:デフォルトの名無しさん
20/07/04 19:58:17.09 VZt6Ms3K0.net
>>185
批判したいとかそういうもんじゃないんだけど
わりと大きなデータ扱うことに興味があったんでどんなもんか実際やってみた
1カ所分しかやってないんだけど
csvから取得して平均値26280個をシート記入するまで1秒もかかってない感じ
一日ごとの平均は出してないけどこの分じゃそれほど差はないと思う
もしや取得時には配列で一括取得してても
シート記入時に配列使った一括記入してないんじゃ?
も少し情報提供すると
URLリンク(www.data.jma.go.jp)
ここから3年分時間別気温データを、1年ごとcsvにして三個ダウンロード
URLリンク(www.moug.net)
これと同じ感じでOpen使って取得
年ごとに必要な気温データのみ1次元配列に入れる
3つの配列を1つの配列にまとめる
平均値入れていく配列AveArrayを新しく作る(あえてString宣言)
あとはforで回しながら過去8時間分のデータを調べてデータない場合の個数を調べて
4つ以上ならAveArrayにN/Aを入れる
4つ未満なら8時間合計して、有効データ数で除算し、AveArrayに入れる
AveArrayを列数1の2次元配列にしてからシートに一括記入
なんかおれ間違ってる?
223:デフォルトの名無しさん
20/07/04 20:07:02.00 ZiXQ0AsVa.net
こうやって実際にやってみる人は素晴らしいと思う
224:デフォルトの名無しさん
20/07/04 20:15:53.04 /OqMGH1W0.net
>>220
matchならともかくcountifは配列に対応してない
素直にセルを引数にしてやったほうがいいのでは
225:デフォルトの名無しさん
20/07/04 20:17:12.12 JHoncA5/a.net
countifじゃなくてloopでfindにすればよいのでは
226:デフォルトの名無しさん (ワッチョイ 87da-VQSO)
20/07/04 22:27:57 VMWug14q0.net
VBAは手段の一つ、目的はデータの加工ってわりきればすぐ終わる作業なのに
無理してVBAだけでやろうとするからいつまでもおわらない
227:デフォルトの名無しさん
20/07/04 23:58:08.33 DEQjmcqBd.net
>>222
ちょっと見た感じほぼ、俺と同じ感じだね。
>もしや取得時には配列で一括取得してても
シート記入時に配列使った一括記入してないんじゃ?
オイオイ、そんな素人なわけ無いだろ。
Line inputを使ったか、それより速いバイナリ読み込み+StrConv使ったかについては覚えて居ない。
まあ、速いといっても劇的に速くなる訳じゃないから、そんなことよりマルチプロセスってことでLine inputのままだったかも。
オレがやった時のデータは日付+24列のデータだった。
貼り付けは元データ込みで、元データの右に8時間平均と1日平均書いたと思うが、もしかしたら8時間平均は出力しなかったかも。
多分読み込みよりも列を増やした二次元配列にして書き込みにも利用してたと思う。
228:デフォルトの名無しさん (スップ Sd4a-aBdg)
20/07/05 00:48:44 poq4gvQsd.net
複数のファイルの名前を編集したい
具体的には、全てのファイルのファイル名に、2020と入れたい。
229:デフォルトの名無しさん
20/07/05 00:51:15.79 C4Jqu0Op0.net
DOSコマンドでできる
230:デフォルトの名無しさん (ワッチョイ 27ce-BXkI)
20/07/05 01:49:00 UMxIfgnY0.net
>>228
ファイル名のどこに入れるの?先頭?真ん中?末尾?
231:デフォルトの名無しさん
20/07/05 01:59:51.75 S3+IlzuQ0.net
>>230
その程度vbaなら自由自在でしょ
バカにしないでください
232:デフォルトの名無しさん
20/07/05 02:04:39.40 sCEs+yW00.net
>>227
お前の書き込みは、
「というか普通に考えてVBAでも無理だけどね。」
だろ
後付けで時間がとか言い出して誤魔化すんじゃねーよ
233:デフォルトの名無しさん
20/07/05 03:08:45.12 EDU6Wt820.net
powershellでやれ
234:デフォルトの名無しさん (ワッチョイ 8a01-c9XW)
20/07/05 07:10:34 Mq9FuBzw0.net
標準モジュールに、
Sub 1()
・・・
・・・
End Sub
Sub 2()
・・・
・・・
End Sub
Sub 3()
・・・
・・・
End Sub
と、書いていき、Sub 1()がSub 2()を呼び、Sub 2()がSub 3()を呼ぶ、って可能でしょうか?
235:デフォルトの名無しさん
20/07/05 07:16:23.84 2yUokYO9d.net
>>232
???
日本語が理解出来ないのか?
>なんてのやったが1回限りでもVBA使わないと無理。
「やった」と書いて有るだろ。
その後に「普通に考えて」とも書いてる。
実際にやったが、普通はVBAでも無理という意味だよ。
>>222とほぼ同じで6時間かかるからマルチプロセスにしたんだからな。
236:デフォルトの名無しさん (ワッチョイ 8a01-5cl0)
20/07/05 07:44:05 VaIdJVAp0.net
>>227
せっかくなんで
csvは日付+24列に加工してみた
1カ所の8時間ごと平均データ26280個を作って1列に貼り付けるfunctionを作る
引数は貼り付け先の列の列番号
これを
?1回だけ実行 A列のみに貼り付け
?100回実行 A列から右100列に1列ごと貼り付け
?200回実行 A列から右200列に1列ごと貼り付け
timer付けて一応測ってみた
?0.31秒
?32秒
?67秒
2000回だと12分ぐらいか?
CPU i5-4670
メモリ 24GB
Win7
実行時はPCでテレビ見ながらJane2個起動
firefox、Janetterなど20個以上のアプリが動いてる
環境やらデータの数値の大きさやらで
差は2000倍に拡大する可能性があるんで何とも言えない
うちの職場のしょぼいPCでやったらもっと酷いと思う
237:234 (ワッチョイ 8a01-c9XW)
20/07/05 07:54:44 Mq9FuBzw0.net
>>234をグーグルで検索するには、どういうキーワードで検索すればいいでしょうか?
238:デフォルトの名無しさん
20/07/05 07:57:11.74 R1IME3L+0.net
>>228
Ruby で作った。
ただし、DryRun なので実際には実行されません!
require 'fileutils'
# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file を除く
glob_pattern = "C:/Users/Owner/Documents/*"
src_dir = File.dirname( glob_pattern ) # ディレクトリパスだけを取り出す
Dir.glob( glob_pattern )
.select { |full_path| File.file?( full_path ) } # ファイルのみ処理する
.each do |full_path| # 1つずつ処理する
dest_path = src_dir + "/" + "2020_" + File.basename( full_path ) # ファイル名
FileUtils::DryRun.move( full_path, dest_path )
end
# mv C:/Users/Owner/Documents/a.txt
# C:/Users/Owner/Documents/2020_a.txt
239:234
20/07/05 08:01:08.68 Mq9FuBzw0.net
>>228
ファイルをバイナリで読み込んで、バイナリで書き出す、
で、書き出す際に、ファイル名に"2020"&、とすればいい。
240:デフォルトの名無しさん
20/07/05 08:01:41.62 VaIdJVAp0.net
>>234
うん
>>237
vba 関数 呼び出し
偉いね、その姿勢があればすぐにプロフェッショナルだわ
241:デフォルトの名無しさん
20/07/05 08:04:40.53 nDNnOTMWa.net
>>234
普通に最後にサブルーチンの名前呼び出し書いたら良いのでは?
Sub 1()
・・・
・・・
2
End Sub
Sub 2()
・・・
・・・
3
End Sub
Sub 3()
・・・
・・・
End Sub
242:234
20/07/05 08:05:40.42 Mq9FuBzw0.net
>>240
どうもです。
243:234
20/07/05 08:06:29.51 Mq9FuBzw0.net
>>241
どうもです。
244:デフォルトの名無しさん
20/07/05 11:36:58.35 CJtrxhlB0.net
>>242
呼び出しは、可読性考慮すると文頭にCall書いた方がいいよ
245:デフォルトの名無しさん
20/07/05 13:58:43.83 U1BgWcwt0.net
>>207
VBAでやっても6時間はかかりすぎな気がするが
マシンスペックとコード晒してみ
それ、計算式でやって再計算に1時間以上かかるのか?
当然試してるよな
マルチプロセスもどうやってやったのか気になるが
俺なら間違いなくDBにつっこんでSQLでやる
そういえばエクセルシートなりCSVなりに対してSQL投げる方法がいくつかあったけど
それは試したのか?
246:デフォルトの名無しさん
20/07/05 15:07:25.29 2yUokYO9d.net
>>239
ファイル名変更だから読む必要は無いだろ。
変更するだけでOK。
247:デフォルトの名無しさん
20/07/05 15:11:46.86 BTTSshKd0.net
>>244
おれもsubモジュール呼び出しはCallつけるようにしてる
他の言語いじったにあととかにVBAのその行みたらよくファッ!?って一瞬なるから
248:デフォルトの名無しさん
20/07/05 15:16:11.04 2yUokYO9d.net
>>245
SQLに投げるのは簡単だが、今回の問題でどういうSQLで出来るのかが分からんかった。
今でも思い付かんが。
計算式ではやってないな。
まあ、無駄なんで。
というか、本当にやる奴が出るとは思わんかったから、言わんかったが他にも制約は有ったんだわ。
それにしても>>236は速いな。
ちょっとおれも調べてみるか。
ちなみにこの仕事数年前なんで完全に憶えてるわけじゃない。
249:デフォルトの名無しさん
20/07/05 15:22:54.54 2yUokYO9d.net
マルチプロセスはExcel.Application8個(自分含めて)呼び出して、自分のブック開いて別CPUにやらせるプロシージャをApplication.OnTimeで呼び出したかSetTimerで呼び出したかだったんじゃないかな。
細かい連携しないで済むようにしてたと思う。
複雑なことはやってねえよ。
250:220 (ワッチョイ 87cc-ERT+)
20/07/05 19:59:50 Y6miK3VP0.net
>>224
いろいろ試してダメだったらそうします
>>225
ありがとうございます。そうします
251:デフォルトの名無しさん (スプッッ Sd4a-tYaB)
20/07/05 21:27:28 2yUokYO9d.net
>>236
う~ん、分からん。
俺もやってみたんだが、同じような時間だった。
観測値はテキ卜一に0~100をランダムで書き込み。
観測出来なかった値は当時の記憶を頼りに9999とした。
確か9998もあったけど変わらんだろう。
前に書いた制約というかは、1年分のファイルが50~60個ぐらいだったということ。
つまり県ごとのファイルで観測地が多い所は複数ファイルって感じ。
だから実際は行頭に観測地名が入って、その後に何かの数値とかが幾つかあって日付、観測値という具合だった。
年ごとのファイルが完全に固定フォーマットで無かったか、俺が信用してなかったか、観測値名で検索してたと思う。
そこから365日分は連続してたと思うけど。
それでも6時間は掛からんような気がしてきた。
もっと複雑なことやってたのかなあ。
どっちにしても後だしで申し訳ない。
252:デフォルトの名無しさん
20/07/05 22:26:04.09 ys79fvH60.net
>>251
そもそもいつ頃の話よ
うろ覚えだけど2010あたりから計算式はめちゃめちゃ速くなってるぞ
あとでかいブックは64bit化の恩恵もあるし
253:デフォルトの名無しさん
20/07/05 22:29:31.22 2yUokYO9d.net
>>252
調べたらそんなに昔じゃ無かったな。
2016年だった。
254:238 (ワッチョイ 872c-+ZV3)
20/07/05 22:43:00 R1IME3L+0.net
ファイル名の先頭に、2020_ を付けるぐらい、robocopy で出来ないのか?
255:デフォルトの名無しさん
20/07/05 22:49:17.55 ys79fvH60.net
2016ならよほど変なことをしてないと数時間とかかからんと思う
256:デフォルトの名無しさん
20/07/05 23:53:51.99 C4Jqu0Op0.net
2020_2020_2020_2020・・・・
257:デフォルトの名無しさん (ワッチョイ ea24-bNAA)
20/07/06 00:43:25 Cn1gvhVh0.net
officeが32bitだったというオチは?
258:デフォルトの名無しさん (オッペケ Sr23-aBdg)
20/07/06 06:39:12 NN5xIHVpr.net
workbookとworksheetって何が違うか。
259:デフォルトの名無しさん
20/07/06 07:15:30.65 5mzvDM1u0.net
キングジムファイルと綴じられてる一覧表って感じかな
260:デフォルトの名無しさん
20/07/06 08:12:33.04 XvhlV03D0.net
32bitと64bitで計算スピードの差は2倍もないような
261:デフォルトの名無しさん
20/07/06 08:39:32.35 NN5xIHVpr.net
Activesheet.cells(1.1).Activate
Activesheet.Paste
は上手くいくのに、
Activesheet.cells(1.1).Paste
は何でダメなんですか?
262:デフォルトの名無しさん
20/07/06 09:18:02.55 Ag715axD0.net
>>261
.pasteは、worsheetのメンバであってrangeやcellsのメンバじゃないから、かな?
263:デフォルトの名無しさん
20/07/06 09:49:31.89 Smcv6rvz0.net
パラメータ Destinationがあるから
ワイはPasteSpecialのほうが好き
264:デフォルトの名無しさん
20/07/06 12:08:40.63 0NryXgvDd.net
>>263
普通はCopyのDestinationでやるからな。
Paste使うのはRange以外のコピーの時かな。
265:デフォルトの名無しさん
20/07/06 18:39:32.80 XttWreH00.net
For
処理1
処理2
処理3
処理4
Next
よりも
For
処理1
Next
For
処理2
Next
For
処理3
Next
For
処理4
Next
の方が処理が早い傾向がありますが、そういうものですか?
266:デフォルトの名無しさん
20/07/06 19:08:39.04 tFUllOPh0.net
>>254
出来ないよ????
robocopy はファイル名の変更はできない。
robocopy したあと move するしかない。
…あ。こいつWSHスレを荒らしてたrubyおじさんじゃんww
267:デフォルトの名無しさん
20/07/06 19:10:33.89 tFUllOPh0.net
てか、もうRubyは徒花だったな。
人気もダダ下がりだし。
268:デフォルトの名無しさん (スプッッ Sd4a-tYaB)
20/07/06 20:45:52 0NryXgvDd.net
>>266
よく分からんが、そもそも何でRubyが出て来るんだ?
VBAだってNameステートメントで一発なのに。
269:デフォルトの名無しさん
20/07/06 20:59:38.60 aGu/2bZb0.net
>>265
普通にかんがえて、前者のほうがループのオーバーヘッド分早いはずだが
その傾向ってのはどうやって調べたのか
270:デフォルトの名無しさん
20/07/06 21:12:06.08 tFUllOPh0.net
>>268
どこでもかしこでもRubyで書いて押し付けてきて、「出来だよ!」っていうオジサンがいるのよ。
WSHスレでは「Rubyおじさん」として有名だった。
が、自分よりスキルの上な奴がコードをうしたら黙り込む。
こんなところにまで出張いてるとはね…。
無視推奨。Rubyはオワコンだし。
271:デフォルトの名無しさん
20/07/06 21:13:16.26 K1goXTAAa.net
じゃあVBAはお爺ちゃんだろ
272:デフォルトの名無しさん
20/07/06 21:17:13.18 tFUllOPh0.net
>>271
VBAは「頼れるジジイ」だろ。何言ってんの?
273:デフォルトの名無しさん
20/07/06 21:29:12.52 XvhlV03D0.net
>>265
そんなのは処理による
コードが長くなったりループの中で扱うデータが増えるとメモリキャッシュがあふれて遅くなる可能性が高くなる
274:デフォルトの名無しさん
20/07/06 22:27:45.01 33E9zFJO0.net
Rubyの話がしたければRubyのスレ行けばいいのにね
275:デフォルトの名無しさん (スプッッ Sd4a-tYaB)
20/07/07 12:27:17 mk51G87Dd.net
>>270
いや、それはRubyが優位と言いたいが為だろ。
全然優位じゃない所に出てくるのが分からん。
276:デフォルトの名無しさん
20/07/07 19:51:41.03 CAdbpiIn0.net
宣伝だろ
277:デフォルトの名無しさん
20/07/07 20:15:33.65 2cf+0s2v0.net
音楽のmidiファイルを作りたい、つまりバイナリファイルを作りたい者です。で、
↓を試してみたいのですが、"C3"にバイナリの配列を書き込まなければいけません。
この場合、どうやってexcelのセルに、バイナリの配列データを書き込むのでしょうか?
URLリンク(oshiete.goo.ne.jp)
Sub test()
TEMP = Worksheets("Sheet1").Range("C3")
ReDim BIN(Len(TEMP) / 2 - 1) As Byte
For I = 1 To Len(TEMP) Step 2
BIN((I - 1) / 2) = Val("&H" & Mid(TEMP, I, 2))
Next I
Open "1.BIN" For Binary As #1
Put #1, , BIN
Close #1
End Sub
278:デフォルトの名無しさん
20/07/07 20:25:40.74 BPFgnJg70.net
なんでVBAでやるの?
279:デフォルトの名無しさん
20/07/07 20:27:13.84 z4TbLErcM.net
VBAスレだから
280:犬丸
20/07/07 20:31:41.96 2cf+0s2v0.net
>>278
和音の構成音(ドレミ・・・)を1つづつセルに入れられるから。
281:デフォルトの名無しさん
20/07/07 20:33:47.85 BPFgnJg70.net
なんでdominoとか使わないの?
282:デフォルトの名無しさん
20/07/07 20:34:49.08 2cf+0s2v0.net
あと、PCにインストールされてる開発系はexcelだけだから。
283:277
20/07/07 20:41:28.24 2cf+0s2v0.net
つか、改変させたいmidiファイルが300個位あって、それの欲しいデータのexcelファイルへの読み込みはもう終わったわけ。
あとは、そのデータをちょい改変して、同様な300個のmidiファイルを吐き出すだけなんですよ。
284:277
20/07/07 20:42:49.00 2cf+0s2v0.net
だから、excelでバイナルファイルを作りたいのです。
285:デフォルトの名無しさん
20/07/07 21:00:27.95 yByKJQAn0.net
読み込めたなら反対をやればいいんじゃないの
286:デフォルトの名無しさん
20/07/07 21:05:07.15 CAdbpiIn0.net
>>283
著作権的にどうなの?
287:277
20/07/07 21:10:37.49 2cf+0s2v0.net
>>285
日本語だってそうだろ。
読むのは簡単。 書くのは大変なんだよ。
>>286
ネットで買った和音だけの簡単なデータで改変したデータを自分だけで使うぶんには問題ありません。
288:デフォルトの名無しさん
20/07/07 21:13:27.88 BPFgnJg70.net
じゃあそうすればいいじゃない?
所詮16進数の文字の羅列(Byteの配列とかにはさすがに出来てるんやろ?)なんだから
最終的には好きに料理してファイルに吐き出せばいい
ただ、1つのセルにバイナリなんて入れたら手作業で編集なんてしずらくてしょうがないけどな
あとセルの文字数上限もあるだろうし
midiの規格書読んだことあるのかしらんが、よくチャンクとかバイナリいじって編集しようと思うな
289:デフォルトの名無しさん
20/07/07 21:13:57.80 CAdbpiIn0.net
>>287
ならmidiの編集ソフトが使った方がいいね
290:277
20/07/07 21:14:00.67 2cf+0s2v0.net
>>286
そもそも観賞するためのmidiデータではなく音楽制作に使うツールとしてのmidiデータなんだよね。
291:デフォルトの名無しさん
20/07/07 21:14:32.40 /HMzap4UM.net
>>282
C#やVB.NETもあるけど?w
292:277
20/07/07 21:22:41.71 2cf+0s2v0.net
>>288
> midiの規格書読んだことあるのかしらんが、よくチャンクとかバイナリいじって編集しようと思うな
基礎的な部分は把握してます。
> 所詮16進数の文字の羅列(Byteの配列とかにはさすがに出来てるんやろ?)
これがわからないんです。たとえば、4D 54 68 64という16進のデータをexcelの1つのセルに書き込む方法を教えて欲しいのです。
293:277
20/07/07 21:25:44.85 2cf+0s2v0.net
で、excelの"C3"に、4D 54 68 64を書き込んで>>277のソースを動かして試してみたいんです。
294:デフォルトの名無しさん
20/07/07 21:26:04.88 CAdbpiIn0.net
これなんか良いんじゃね
URLリンク(openmidiproject.osdn.jp)
295:デフォルトの名無しさん
20/07/07 21:29:51.89 CAdbpiIn0.net
midiの規格ってそんな簡単じゃないから素人が扱っても音が切れたりトラックがずれたりして
結局使えないだろ
296:デフォルトの名無しさん
20/07/07 21:32:34.47 7cSgkxva0.net
ExcelのRange#valueにバイト列なんか入るわけないんだから自分がわかりやすいように文字列か数値に勝手に変換して勝手に入れろとしか言えない
297:デフォルトの名無しさん
20/07/07 21:34:29.92 MaHOmhaOM.net
Excelでmidiデータを取り扱うなんて常人の発想ではない
たぶんあなた以外に誰も方法はわからないから頑張ってその道の第一人者になって欲しい
298:デフォルトの名無しさん
20/07/07 21:35:25.31 BPFgnJg70.net
>>292
セルに入れられるのはあくまで文字列ってこと理解してないの?
その例なら「Byte(0):77 Byte(1):84~」とかいう配列から「4D 54 68 64」という文字列にしなければセルには書き込めない
Byteはそれぞれの数値が入ってるだろうけど、hexかなんかで16進数にしたうえで(編集上必要あるか知らんけど)
join(array, " ")かなんかで1つの文字列にする
くっそ編集しずらいだろうけどな
299:デフォルトの名無しさん
20/07/07 21:44:56.92 tZSrRerM0.net
前スレのテキストフルスキャンの発想とコード提示してくれた人
改めて言わせて貰う
職場の一大イベントを乗り切ったわこれで
300:デフォルトの名無しさん
20/07/07 21:46:02.99 tZSrRerM0.net
改めて多大なるお礼を言わせて貰うが抜けてた
これのおかげですべての可能性が広がったわ
301:277
20/07/07 22:23:53.24 2cf+0s2v0.net
では、すみません。 >>277の質問はなしにして、↓の質問をお願いします。
1、変数に「4D 54 68 64」のバイナリデータを代入するソース
2、中身は「4D 54 68 64」だけのファイル
3、ファイル名は5ch.bin
こんなファイルを作るにはどのようなソースを書けばよいでしょうか?
302:277
20/07/07 22:29:17.16 2cf+0s2v0.net
>>228
allrenameというフリーソフトを使えばいいのじゃ。
303:デフォルトの名無しさん
20/07/07 22:32:51.69 CAdbpiIn0.net
>>301
バイナリ編集のソフト使えばいいんじゃね
304:301
20/07/07 22:42:26.54 2cf+0s2v0.net
>>303
すみません。 「VBAを使って」でした。
305:デフォルトの名無しさん
20/07/07 22:43:37.27 O/UE8zUS0.net
もはやExcelを使うことが目的化してる
306:デフォルトの名無しさん
20/07/07 22:44:27.22 yByKJQAn0.net
それもう読み込んだデータ無意味やん
フォーマット知らんけどセルに書き出せたんならファイルにもいけるやろ
307:301
20/07/07 22:54:30.10 2cf+0s2v0.net
>>306
基礎になるソースさえ教えてもらえれば、そこに色々付け加えてって自分に必要なバイナリファイルが作れるんですよ。
308:デフォルトの名無しさん
20/07/07 22:57:06.69 BPFgnJg70.net
まず書く努力をしよう
309:デフォルトの名無しさん
20/07/07 22:57:22.32 0KBHODZEd.net
>>307
そろそろ死ねや
310:デフォルトの名無しさん
20/07/07 23:05:51.69 1TMQwlbY0.net
Excelの設定もAppDataの中身も場所も変えて無いのに、
下記のように表示されてマクロが読めません!
「起動フォルダーにある個人用マクロブックは記録のために開かれた状態でなければなりません」
311:デフォルトの名無しさん
20/07/07 23:09:31.21 exS2x9T+0.net
>>310
そのままググった
URLリンク(xtech.nikkei.com)
312:デフォルトの名無しさん
20/07/08 00:06:04.08 66yUE/saa.net
>>301
「'4D 54 68 64'」シングルかダブルで囲えば良いのでは?
「"4D 54 68 64"」
あるいは
いったんタブ区切りファイルtmp.tsvを途中で
中間ファイルとして介在させたらいいんじゃないですか?
313:デフォルトの名無しさん
20/07/08 00:14:08.99 4BPfKF9s0.net
ソースくれくれ君だからひんとあろうが自分で書かないよ、こういうやつ
314:301 (ワッチョイ 2301-6wWl)
20/07/08 01:45:46 gPwSdoJG0.net
>>312
ありがとうございます。でも、「セルから変数を代入する」は止めました。で、>>277を変形してみたんですけど、↓のドコがまずいんですかね?
Sub test()
Dim TEMP As Variant
Dim I As Variant
Dim BIN As Variant
TEMP = Array(&H4D, &H54, &H68, &H54, &H68, &H64)
ReDim BIN(Len(TEMP) / 2 - 1) As Byte
For I = 1 To Len(TEMP) Step 2
BIN((I - 1) / 2) = Val("&H" & Mid(TEMP, I, 2))
Next I
Open "C:\1.BIN" For Binary As #1
Put #1, , BIN
Close #1
End Sub
315:301
20/07/08 01:49:45.50 gPwSdoJG0.net
つか、
ReDim BIN(Len(TEMP) / 2 - 1) As Byte
この部分が何だかわかんないんですよ。
まず、ReDimとは何だ?と。
316:301
20/07/08 02:05:21.42 gPwSdoJG0.net
目的は、
&H4D, &H54, &H68, &H54, &H68, &H64という6個のバイナリデータだけの、
1.BINというファイルを作りたい!
です。
317:デフォルトの名無しさん (ワッチョイ cb63-jZ9g)
20/07/08 03:08:12 F8fi/iH60.net
Excelでやる事ではない
以上です
318:デフォルトの名無しさん (ワッチョイ cb63-jZ9g)
20/07/08 03:11:39 F8fi/iH60.net
まずバイナリが何かすら分かってなさそうだしこの分だとmidiについても何も分かってなさそう
319:デフォルトの名無しさん (ドコグロ MM43-jxlo)
20/07/08 03:24:41 llacuNM3M.net
ここで聞くより、「vba バイナリデータ」でググったほうが早そう
320:デフォルトの名無しさん (アウアウウー Sa09-X/TW)
20/07/08 04:08:36 a4KGuVW5a.net
うちは会社のpcでバイナリ編集するのってセキュリティー的にアウトだし
321:デフォルトの名無しさん
20/07/08 05:18:34.50 hKBgVgLRr.net
この写真のように、例えば、3以下の数値をアクティブにする方法を教えて頂きたい
できれば、for next 構文はなしで
一発検索が望ましい。
URLリンク(i.imgur.com)
322:デフォルトの名無しさん (アウアウエー Sa13-c9t6)
20/07/08 06:25:23 yrsbI81qa.net
>>315> ReDimとは何だ?と
思ったらググって下さい。
ReDim BIN(Len(TEMP) / 2 - 1) As Byte
よくわからないですが動的配列を半分の長さで確保してるようです。
512÷2-1=255
forで繰り返すMid関数のスタート引数が1からのため配列の0番を1つ引算してまふ
「4D 54 68 64」ではなくてスペースなし「4D546864」か
Replace関数でスペースを削除しましょう
出来た文字列"4D546864"に対して
ループで前から2文字ずつ"&H"を付け足しているので
おそらく"&H4D&H54&H68&H64"が生成されるのでしょう
なので>>314のコードは全く意味がありません。
323:デフォルトの名無しさん (アウアウエー Sa13-c9t6)
20/07/08 06:49:42 yrsbI81qa.net
>>321> できれば、for next 構文はなしで
こんな縛りが無ければ普通にググって出てくるし以下で出来るだろうけど
複数のセルを選択する
URLリンク(officetanaka.net)
324:デフォルトの名無しさん
20/07/08 07:11:29.93 x0V53xaA0.net
つーかわざわざselectする意味あんの?
325:デフォルトの名無しさん
20/07/08 07:47:38.02 8s/zJrIHa.net
わからないで書いてたのか
326:デフォルトの名無しさん
20/07/08 07:58:30.68 krt5VVG+d.net
>>316
簡単だろw
Dim btByte() As Byte
Dim lngFN As Long
btByte(0)=&H4D
btByte(1)=&H54
btByte(2)=&H68
btByte(3)=&H54
btByte(4)=&H68
btByte(5)=&H64
lngFN=FreeFile
Open strPath For Binary As #lngFN
Put #lngFN, btByte
Close #lngFN
327:デフォルトの名無しさん
20/07/08 08:02:35.63 krt5VVG+d.net
>>326
途中で送信しちまった。
スマホで書いてるからどっか間違ってるかも。
Dim btByte() As Byte
Dim lngFN As Long
Redim btByte(5) As Byte
btByte(0)=&H4D
btByte(1)=&H54
btByte(2)=&H68
btByte(3)=&H54
btByte(4)=&H68
btByte(5)=&H64
lngFN=FreeFile
Open strPath For Binary As #lngFN
Put #lngFN, , btByte
Close #lngFN
328:デフォルトの名無しさん
20/07/08 08:09:09.54 krt5VVG+d.net
>>314
というかね、Variantとは何か、Byteは何かとか考えた方が良い。
扱える範囲が違うということはメモリ上のサイズが違うということ。
6個のバイナリって6Byteのファイルってことだろ。
Variant1個で16Byteだぞ。
329:301 (ワッチョイ 2301-6wWl)
20/07/08 09:06:02 gPwSdoJG0.net
みなさんレスありがとうございます。 感謝します。
>>327
ってことは、結局、↓でよいのでしょうか?
Sub test()
Dim btByte() As Byte
Dim lngFN As Long
ReDim btByte(5) As Byte
btByte(0) = &H4D
btByte(1) = &H54
btByte(2) = &H68
btByte(3) = &H54
btByte(4) = &H68
btByte(5) = &H64
lngFN = FreeFile
Open "C:\hogehoge.bin" For Binary As #lngFN
Put #lngFN, , btByte
Close #lngFN
End Sub
330:301 (ワッチョイ 2301-6wWl)
20/07/08 09:09:44 gPwSdoJG0.net
あるいは、↓ですかね? ↑も↓も「Open "C:\hogehoge.bin" For Binary As #lngFN」の業でパス名が無効です、というエラーがでます。
Sub test()
Dim btByte() As Byte
Dim lngFN As Long
ReDim btByte(5) As Byte
btByte(0) = &H4D
btByte(1) = &H54
btByte(2) = &H68
btByte(3) = &H54
btByte(4) = &H68
btByte(5) = &H64
lngFN = btByte
Open "C:\hogehoge.bin" For Binary As #lngFN
Put #lngFN, , btByte
Close #lngFN
End Sub
331:デフォルトの名無しさん
20/07/08 09:23:12.29 yuZwXh1F0.net
>>330
>>307 > 基礎になるソースさえ教えてもらえれば、そこに色々付け加えてって自分に必要なバイナリファイルが作れるんですよ。
もういいやろ
332:301 (ワッチョイ 2301-6wWl)
20/07/08 09:32:29 gPwSdoJG0.net
つか、 FreeFile関数ってのがあるんですね 知らなかったw
333:301 (ワッチョイ 2301-6wWl)
20/07/08 09:38:09 gPwSdoJG0.net
じゃあ、↓のドコが悪いんだろ?
Sub test()
Dim btByte() As Byte
Dim lngFN As Long
ReDim btByte(5) As Byte
btByte(0) = &H4D
btByte(1) = &H54
btByte(2) = &H68
btByte(3) = &H54
btByte(4) = &H68
btByte(5) = &H64
lngFN = FreeFile
Open "C:\hogehoge.bin" For Binary As #lngFN
Put #lngFN, , btByte
Close #lngFN
End Sub
334:デフォルトの名無しさん (ワッチョイ bdda-ucCN)
20/07/08 09:40:18 R5JQxD1z0.net
>>332
つか、知らないことの方が多いくせに知ったかすんな
335:デフォルトの名無しさん
20/07/08 10:17:02.56 67N0qsNYr.net
>>333
「どこが悪いんだろ」
ではなく、
「下記のソースで実行すると~というエラーが出ます。
調べたところこのエラーの意味は~と理解していますが、~と修正したら今度は~というエラーが出ます。~~」
と言ったように、自分でなんとか解決したいという姿勢がないとサポートなんてしたくならないよ
本当は誰も君の相手なんかしなくてもいいんだ
君は人の時間をいただこうとしてることを考えること
336:デフォルトの名無しさん
20/07/08 10:25:36.83 kC98LgO60.net
みんなやさしいよね
どこまでも相手してあげてるんだから
337:デフォルトの名無しさん
20/07/08 10:37:36.28 vI+4Hlt3M.net
ハゲてきました。
市販の育毛剤で試すとエラーが出ます。
調べたところミノキシジルタブレットが聞くと理解しましたが、それを買って飲んだら今度は心臓ドキドキの副作用がでて命が危険だそうです。
どうしたらいいでしょうか?
338:デフォルトの名無しさん
20/07/08 10:37:36.28 yuZwXh1F0.net
暇つぶしでしょ
339:デフォルトの名無しさん
20/07/08 10:38:40.26 yuZwXh1F0.net
時間丸被りとかあんのな
340:デフォルトの名無しさん
20/07/08 10:41:28.04 Fq6DmaU+0.net
>>333
C:\に変なもの置くな
341:デフォルトの名無しさん
20/07/08 10:53:24.76 Ywdztm8P0.net
つーか動的配列にする意味あんの?
342:デフォルトの名無しさん
20/07/08 12:08:46.81 lp5P2pBOM.net
>>341
行間を読め
343:デフォルトの名無しさん
20/07/08 16:22:19.40 0tPjVu1x0.net
だから最初に馬鹿はお断りしときゃいいんだよ
344:301
20/07/08 17:12:58.80 gPwSdoJG0.net
つか、書き込み先を、D:\にしたら動いたwww
>>327さん、どうもありがとう!!!
こんなシンプルなソースでバイナリが書けるんです。
どんなにググッてもこんなにシンプルなソースは出て来ません。
vba史上の快挙です!
Sub test()
Dim btByte() As Byte
Dim lngFN As Long
ReDim btByte(5) As Byte
btByte(0) = &H4D
btByte(1) = &H54
btByte(2) = &H68
btByte(3) = &H54
btByte(4) = &H68
btByte(5) = &H64
lngFN = FreeFile
Open "D:\hogehoge.bin" For Binary As #lngFN
Put #lngFN, , btByte
Close #lngFN
End Sub
345:デフォルトの名無しさん
20/07/08 17:43:43.08 4BPfKF9s0.net
はい次の方
346:301
20/07/08 17:58:35.88 gPwSdoJG0.net
>>341
midiファイルというのはサイズが決まってないんですよ
347:デフォルトの名無しさん
20/07/08 19:59:20.87 7XVFoSLh0.net
>>344
そりゃVBAではなく、VBですらなく
BASICの範疇だからな
基本過ぎてわざわざWEBに上げたりしない
348:デフォルトの名無しさん (ワッチョイ a5ae-7/eX)
20/07/08 20:31:33 cTUxRwdY0.net
>>344
死ね
349:デフォルトの名無しさん
20/07/08 21:18:00.92 J4iDAbFT0.net
いつも馬鹿な質問ばかりで済みません。
Excelファイルをダブルクリックした際に他の人が先に開いていた場合、[読み取り専用]か、[通知]か聞かれます。
これをダイアログを出さずに最初から読専で開くようにすることは可能でしょうか?
(最初に開いた人は編集・保存できるという前提です)
外部から開く際のコントロールは簡単ですが、自分自身でコントロールするのは無理ですかね?
Workbook_Openでいろいろ試したのですが、どうもこのイベントよりも先にダイアログが発生しているようで、、、
無理だ、という回答でもいいです。ご意見ください。
350:デフォルトの名無しさん
20/07/08 21:25:31.07 eeGZOJTWa.net
>>349
URLリンク(www.shegolab.jp)
351:デフォルトの名無しさん
20/07/08 21:41:34.04 eWJ0cHmK0.net
>>349
まずちゃんと自分で調べよう
知識が伴ってないのにろくに調べもしないでは自分で解決どころか調べ方すら身に付かない
まぁ、はなから自分でやる気なんか無いのかもしれないが
352:デフォルトの名無しさん
20/07/08 21:42:45.60 J4iDAbFT0.net
>>350
情報ありがとうございます。
リンク先のものはだいたい既知の情報でした。
やっぱり自ファイルでの処理は難しそうですね。
353:デフォルトの名無しさん
20/07/08 21:46:48.09 J4iDAbFT0.net
>>351
いや、ここに書き込むときは相当調べて最後の頼みのつなで書き込んでます。
調べよう、と仰るということは、何かいい方法をご存じですか?
354:蟻人間
20/07/08 22:00:15.73 wtc6YQgJ0.net
>>353
ファイルの関連付けを変えて、マクロで迂回して。。。
。。。ここまで来るとウイルス判定かも(詳しい内容は自粛します)
355:デフォルトの名無しさん
20/07/08 22:05:22.90 J4iDAbFT0.net
>>354
う~~ん、あまり危ない橋は渡らないでおきます。
356:デフォルトの名無しさん
20/07/08 22:32:26.07 R5JQxD1z0.net
>>353
調べ方を調べてから言え
357:デフォルトの名無しさん
20/07/08 23:26:10.17 J4iDAbFT0.net
>>356
じゃあ、
>>349の繰り返しになりますが、、箇条書きにしますね。
●Excelファイルをダブルクリックした際の挙動についてです。
** つまり、外部から開くケースは除外です。(こちらのコントロールに苦はありません。昔から使っています)
「外部から」とは、具体的には、、以下のケースなど。
・ Workbooks.Openの引数で制御する。(VBSからのOpenも含む)
・ ContextMenuの"新規作成"で開く。
●他の人が開いていた場合のケースです。
** 最初に開いている人は編集・保存ができる前提です。
→ つまり、FileAttributeを最初からReadOnlyにするケースは除外です。
●上記の際の、[読専]|[通知]を聞いてくるDialogをバイパスしたい。
** 「最初から読専で開きたいわけではなく、誰かが開いているときは最初から読専にしたい」
→ つまり外部から開くケースにあたらない。
● 自ファイル側で判定したい、、、Workbook_Openで試したが、このイベントより先に
ダイアログが発生してる。
>>349とほぼ同じ内容ですが、これだけ書けばどこまでの理解で何を試したか読み取れますか?
358:デフォルトの名無しさん
20/07/08 23:40:00.14 4BPfKF9s0.net
てかそんなんできたらマルウェアの温床になるから出来ないって思っとけよ
共有化でも足りないんならあきらめろん
359:デフォルトの名無しさん
20/07/08 23:44:27.92 J4iDAbFT0.net
>>358
よくわかりませんが、わかりました。
本件Closeで。
360:デフォルトの名無しさん
20/07/09 00:12:21.12 dz7PM5ALa.net
>>346
midiはファイルの種類じゃない
361:デフォルトの名無しさん
20/07/09 00:12:27.29 ylhvfSy00.net
ファイルが書き込めない状態になってたら読み取り専用で開けばいいだけじゃん
362:デフォルトの名無しさん
20/07/09 00:13:47.48 dz7PM5ALa.net
>>357
きもい
363:デフォルトの名無しさん
20/07/09 00:17:27.90 dz7PM5ALa.net
社会で他の人も使うファイル勝手にいじるなよ
364:デフォルトの名無しさん (ワッチョイ cbdd-7n2a)
20/07/09 00:44:28 HzjnRl+40.net
>>363
お前には聞いてないから大丈夫だよ。
じゃ、お休み。
365:デフォルトの名無しさん
20/07/09 02:16:40.71 eQo6hEQpa.net
>>364
おまえに言ってない
366:デフォルトの名無しさん (ワッチョイ a58b-GkYD)
20/07/09 03:10:18 rHxVo6X00.net
IE制御のついての質問。
マクロでIE制御を使ってウェブ情報を取り込んでいるんですが、連続で作動させると稀に止まることがあります。
バグった時にタスクマネージャーの詳細をみると毎回「ielowutil.exe」のプロセスだけ残ってるんですよね。
タスクマネージャーでielowutil.exe を右クリックして強制終了させると、また上手く作動するんですが、この ielowutil.exe プロセスを強制的に終了させるコードとかないですかね。
ぐぐっても英語とか読めないのでわからない。誰か助けて
URLリンク(www.mrexcel.com)
367:デフォルトの名無しさん
20/07/09 03:59:15.57 uBlORkna0.net
taskkill /im ielowutil.exe
なんでもかんでもExcelでやろうとするな
368:301 (ワッチョイ 2301-6wWl)
20/07/09 05:30:09 C69oBRyL0.net
つか、>>344のソースの
> ReDim btByte(5) As Byte
> btByte(0) = &H4D
> btByte(1) = &H54
> btByte(2) = &H68
> btByte(3) = &H54
> btByte(4) = &H68
> btByte(5) = &H64
この部分で、btByteという変数に6個の16進数を代入していますが、もっとエレガントに代入する方法はないでしょうか?
実は定型文みたいのを50個ぐらい入れなきゃならないのです。
369:デフォルトの名無しさん
20/07/09 06:03:23.76 hGjJ3XRlM.net
ないです
次の方どうぞ
370:デフォルトの名無しさん (スプッッ Sd93-56/R)
20/07/09 06:34:39 pd2EiZRKd.net
>>368
そういうのは、あらかじめ用意したバイナリファイルから読み込んだ方がいいと思うんだけど
どうしてもソースに大量の16進数を直接書きたいなら
配列を使う方法
h = Array(&H4D, &H54, &H68, &H54, &H68, &H64)
For i = 0 To 5
btByte = h(i)
Next
文字列を使う方法
h = "4D,54,68,54,68,64"
For i = 0 To 5
btByte(i) = Val("&H" & Mid(h, i * 3 + 1, 2))
Next
371:301 (ワッチョイ 2301-6wWl)
20/07/09 06:37:41 C69oBRyL0.net
>>370
ありがとうございます。 感謝します。
372:デフォルトの名無しさん (スプッッ Sd93-56/R)
20/07/09 06:38:57 pd2EiZRKd.net
文字列を使う方法2
h = "4D,54,68,54,68,64"
For i = 0 To 5
btByte(i) = Val("&H" & Split(h, ",")(i))
Next
373:デフォルトの名無しさん (アウアウウー Sa09-X/TW)
20/07/09 06:57:38 150ctWWia.net
エレガント?
374:デフォルトの名無しさん
20/07/09 07:48:49.30 3iI6FAhKd.net
>>368
そのエレガントな方法を考えるのがプログラミングなんじゃないの?
50個をコードでどうにかするなら、それをコードに書かにゃならんからエレガントにはならん。
別の所に持って良いなら別途ファイルを用意しとけば良い。
設定とか50個程度ならどっかのシートに書いとくとかでも良い。
375:デフォルトの名無しさん (オッペケ Sra1-OOGl)
20/07/09 07:58:21 8/Q//t/ar.net
ほんとコードくれくれ君は自分で何も考えないな
あげる方も頭おかしいが
376:デフォルトの名無しさん
20/07/09 10:13:45.21 tVMvaFoW0.net
激しく同意する
ちなみにバイナリを作成するやり方で実行ファイルが作れるのでウイルシなんかも作れてしまうわけだが
377:デフォルトの名無しさん (ワッチョイ cbb0-mXGD)
20/07/09 10:32:17 VstlXiSO0.net
モジュールから単体動作する関数を切り取って、別のモジュールにコピーしたのですが
変数の宣言がないとエラー表示されました。何度見ても宣言は正しくされているので?です。
新しく変数宣言して、置き換えると動作します。
こんなことあるのですか?
378:デフォルトの名無しさん (ワッチョイ 2d7c-6wWl)
20/07/09 10:47:12 ylhvfSy00.net
>>377
変数?定数?
379:デフォルトの名無しさん (ワッチョイ cbb0-mXGD)
20/07/09 10:48:52 VstlXiSO0.net
すみません。変数ではなく定数(const)でした。
380:デフォルトの名無しさん
20/07/09 10:53:22.69 ylhvfSy00.net
>>379
グローバルな定数?
381:デフォルトの名無しさん
20/07/09 11:12:09.02 VstlXiSO0.net
ローカルです。
382:デフォルトの名無しさん
20/07/09 11:19:56.91 JYozEgDc0.net
option explicitの有無は?
383:デフォルトの名無しさん
20/07/09 11:21:50.10 DLLEuHaFa.net
>>376
みんなわざわざ煙に巻いてるのに言っちゃ
384:デフォルトの名無しさん (ワッチョイ cbb0-mXGD)
20/07/09 11:26:19 VstlXiSO0.net
>>382
option explicitはあります。
385:デフォルトの名無しさん
20/07/09 11:30:45.63 ylhvfSy00.net
>>384
稀に起こるが原因は不明
エラーになった定数の宣言行を切り取り貼り付けすればとりあえず治る
386:デフォルトの名無しさん
20/07/09 12:02:59.73 JYozEgDc0.net
コピペしたとき?
実行したとき?
387:デフォルトの名無しさん (ワッチョイ cbb0-mXGD)
20/07/09 12:29:25 VstlXiSO0.net
>>385
問題の行をコメントアウトし、その下に同様の内容を書いたら動作しました!
稀に起きるのですか。初めて遭遇する現象です。
>>386
実行時です。
388:デフォルトの名無しさん
20/07/09 14:14:55.78 VstlXiSO0.net
>385>386
他の箇所でも同様のエラー起きましたが書き直せば動作しました。
ありがとうございました。
389:デフォルトの名無しさん (ラクッペペ MMcb-0WwX)
20/07/09 18:37:42 dhOVscThM.net
>>376
バイナリだからウイルスって意味不明
マクロウイルスはソースが見えるからウイルスじゃないとでも言うつもりか?
390:デフォルトの名無しさん (ワッチョイ 1b68-ucCN)
20/07/09 18:40:33 WyUmT5e70.net
>>389
その脳内変換が意味不明
391:デフォルトの名無しさん (ラクッペペ MMcb-0WwX)
20/07/09 18:53:47 dhOVscThM.net
バイナリに謎の恐怖心を持っているんだろ?
そもそも2進数じゃなくて16進数だ
392:デフォルトの名無しさん (ドコグロ MM93-65sm)
20/07/09 19:27:38 0UE7wqUeM.net
まあイチからバイナリ書き出しで実行ファイ作れるような人はこんな質問しないけどな
393:デフォルトの名無しさん
20/07/09 19:41:37.34 WyUmT5e70.net
>>391
その脳内変換が意味不明
394:デフォルトの名無しさん
20/07/09 19:50:25.19 tq6y70T30.net
元々の変な質問のせいでくだらない流れになった
はい次の方
395:デフォルトの名無しさん
20/07/09 20:05:26.54 SKtauNRXM.net
VBAに将来はありますか?
396:デフォルトの名無しさん
20/07/09 20:11:04.35 F9SMopSBM.net
>>395
Excelと共に生き続けるだろうね
Excelの将来と同じ
397:デフォルトの名無しさん
20/07/09 20:13:33.30 K5359iyV0.net
そういえばExcelにPython載るって話はどうなったの?
398:デフォルトの名無しさん
20/07/09 20:29:37.44 Qt+epPmk0.net
VBA
URLリンク(docs.microsoft.com)
VSTO
URLリンク(docs.microsoft.com)
Officeアドイン
URLリンク(docs.microsoft.com)
399:デフォルトの名無しさん (ワッチョイ 83ee-Bqa1)
20/07/09 21:13:12 54FX1SKx0.net
Dim objShell As Object ←値参照
Dim objExec As Object
Sub ie_kill()
Set objShell = CreateObject("WScript.Shell") ←これなに???なんで必要なの???
Set objExec = objShell.Exec("taskkill.exe /F /IM iexplore.exe") ←iexplore.exeをタスクキル
400:デフォルトの名無しさん
20/07/09 21:27:01.41 YMHQKg0aa.net
>>399
CreateObjectまんまオブジェクトを創造してます
401:デフォルトの名無しさん
20/07/09 21:31:09.68 36OHf5x10.net
New使っちゃいなよ
402:デフォルトの名無しさん
20/07/09 21:42:49.37 ylhvfSy00.net
>>399
参照設定をしていればいらない
403:デフォルトの名無しさん (ワッチョイ fdce-56/R)
20/07/10 10:20:58 O0QgyOqq0.net
>>397
OfficeやWindowsは開発者が妄想を公式ブログで垂れ流すのが恒例行事
それを公式発表だと世間が勝手に騒いでるだけ
404:デフォルトの名無しさん (ワッチョイ 83ee-Bqa1)
20/07/10 13:53:04 3B5Gxm0d0.net
ExcelってIE制御からedge制御できるようになった?
未だにIEが一番使い勝手いいの?
405:デフォルトの名無しさん (ワッチョイ 75f1-+b0N)
20/07/10 14:38:15 91NkPSzZ0.net
ExcelってChrome制御できるようになった?
406:デフォルトの名無しさん
20/07/10 15:03:43.58 DnP9bxpW0.net
いまはExcelがブラウザを制御するのではなくてブラウザがExcelを制御する方向性が主流
VBAはあくまでExcel内で完結する作業に限定した言語であって外部との連携作業はOfficeアドイン(実体はJavaScriptなどのスクリプト言語)や
VSTO(VisualStdioで言語はC#が中心)で行なうのがMicrosoftの方針
Pytonはよく分からんけど上手くOfficeAPIを利用すれば出来るかもしれない
概要についてのドキュメントは>>398
407:デフォルトの名無しさん
20/07/10 15:20:21.38 TbXdOMZ+r.net
てゆかブラウザ操作するよりAPI叩いたりスクレイピングするほうが主流よね、今は
ずっと昔はExcelで入力してIEに反映させるとかあったけど、今じゃレガシーすぎる
408:デフォルトの名無しさん
20/07/10 17:42:22.09 OUgIsXw30.net
ウチはシステムが古くてAPIなんてものに対応してないので現役だわ。
409:デフォルトの名無しさん
20/07/10 20:17:34.10 R/wZjJlU0.net
人間も古いからちょうどいい
410:デフォルトの名無しさん (スップ Sd43-Cpkm)
20/07/10 21:41:25 rd+FvU1jd.net
>>407
API叩くのもスクレイピングも変わらんけどな。
何でやるかの違いくらい。
まあ、Chrome制御は出来んけどな。
WebDriver使えるから出来るとも言えるか。
何処から何処迄がExcelって話。
411:デフォルトの名無しさん (スップ Sd43-Cpkm)
20/07/10 21:42:22 rd+FvU1jd.net
>>406
VSIOは寧ろ廃れてるような気がするが。
412:デフォルトの名無しさん (スップ Sd43-Cpkm)
20/07/10 21:42:47 rd+FvU1jd.net
>>411
VSTOな。
413:デフォルトの名無しさん
20/07/10 22:02:00.46 c4ANmjzxa.net
>>412
VIOな
414:デフォルトの名無しさん
20/07/10 22:39:50.15 91NkPSzZ0.net
>>413
それはちん毛ちんこケツの穴のことだ
415:デフォルトの名無しさん
20/07/11 00:41:33.92 vLv3KjHj0.net
あかん、モーむり
sendkeys使いすぎてるせいで
Numlockキーがオンになったりオフになったり・・・
かと言って必ずオンオフ切り替わるかというとそうでもないし
誰か絶対100%常にNumlockオンになるコード教えてくれえ
416:デフォルトの名無しさん
20/07/11 01:11:16.23 2VuM3xocM.net
>>415
vbaでレジストリを操作できるから、そこに道があるかも知れない
417:デフォルトの名無しさん (ワッチョイ 9bc9-ucCN)
20/07/11 02:13:29 Eg2/WlgT0.net
>>415
2 つ以上の SendKeys ステートメントが連続して実行されると、NumLock キーがオフになる
418:デフォルトの名無しさん
20/07/11 02:29:45.71 6j9f8L+G0.net
>>415
URLリンク(santane.jp)
419:デフォルトの名無しさん
20/07/11 09:37:08.18 vLv3KjHj0.net
ありがとうございます
418の方法も試したんですが、なぜか一回目では適用されず
あと418の一番下にある、入力リストを展開するとは一体?
420:デフォルトの名無しさん
20/07/11 10:30:37.96 R2Hyt8Cad.net
>>415
Sendkeys使う奴は糞。
絶対に使っちゃいけないと言った方が事故が起こらないくらい事故が起きても不思議じゃない所で使う奴がいる。
421:デフォルトの名無しさん
20/07/11 10:36:45.99 QNz3pRQ00.net
糞!ですか
422:デフォルトの名無しさん
20/07/11 10:40:32.24 VwbCqtVvM.net
何年前からのバグなんだろうねこれって
423:デフォルトの名無しさん
20/07/11 10:45:18.55 R2Hyt8Cad.net
>>421
Sendkeysは基本的にコントロール出来ない。
他アプリを操作するにはもっとコントロール出来る方法がある。
どうにも出来ない時は仕方がないが、絶対に使わないつもりで、どうにもならない時だけ使うべきだね。
424:デフォルトの名無しさん
20/07/11 10:51:22.16 R2Hyt8Cad.net
あと、危険は承知でちょろっと使う時はある。
お手軽だから。
でも、それで使うことを許容すると危険もしらず、ちょろっとで済まない所で使う奴が出てくる。
425:デフォルトの名無しさん (ワッチョイ bdda-ucCN)
20/07/11 11:53:42 vrrLv2a80.net
Excelを頼りすぎ
426:デフォルトの名無しさん
20/07/11 11:59:27.85 8xOOoQBua.net
Excelで恋愛相談から今晩のおかずまで
427:デフォルトの名無しさん
20/07/11 12:25:50.11 DdDKJrYh0.net
sendkeysって手段としてしょうもなさすぎるんだよな
目的を整理すれば他にもっといいやり方があるはず
428:デフォルトの名無しさん
20/07/11 12:40:05.09 pqxpyZgt0.net
キーワードによる予測変換機能っぽいのをやろうとしたときに、
いいコード無いか探してたら使ってたなsendkeys
429:デフォルトの名無しさん (ワッチョイ 75f1-+b0N)
20/07/11 13:02:10 QNz3pRQ00.net
糞!
430:デフォルトの名無しさん
20/07/11 13:57:47.97 6j9f8L+G0.net
確実にコントロールしたいならAPI
URLリンク(www.vba-ie.net)
まあAPIも万能じゃないんだけど、今回はとりあえず使える
431:デフォルトの名無しさん
20/07/11 14:02:53.27 R2Hyt8Cad.net
>>430
いやいや、確かにSendkeysよりは良いけど、何でキーボードシュミレートしたいのよ。
オブジェクトに直接キーを送るとか、オブジェクトの動作そのものを実現するとかは無しか?
432:デフォルトの名無しさん
20/07/11 18:21:43.63 2M7rjl8q0.net
大抵のアプリは外部からの要求を受けるのはマウスとキーボードだけだから
433:デフォルトの名無しさん
20/07/11 18:52:58.44 6knL1xMy0.net
あ、ちょっと失礼。
ほんの少し前、テキストボックスに入力された数式をだったか
マクロだったかをプロシージャにして実行するってなことをやってたんだが
すっかり忘れてしまいました。
どうやるんでしたでしょうか。
OS;Windows 98
Excel 97
434:デフォルトの名無しさん (ワッチョイ 05da-ucCN)
20/07/11 19:37:48 Nux+IN340.net
>>418
そんな不具合見たことないな。
VBA限定で、VBSから使うと出ないとか?
435:デフォルトの名無しさん
20/07/11 20:21:11.98 UiWBFlGj0.net
>>433
死ね
436:デフォルトの名無しさん (ワッチョイ bdda-ucCN)
20/07/11 23:15:56 vrrLv2a80.net
>>433
そのうち思い出すから
437:デフォルトの名無しさん
20/07/12 08:33:32.60 lihdyx4V0.net
>>433
Application.Run
438:デフォルトの名無しさん (オイコラミネオ MM51-aL1r)
20/07/13 14:37:54 1lzMxcCPM.net
sendkeys問題解決しました
ありがとう!create object wscript.shell.sendkeysでうまいこと行けた
439:デフォルトの名無しさん
20/07/14 20:11:25.31 zXCz2P4SM.net
二つのieを起動して2つ目のieにpdfを表示させてそのpdfをexecwbのsaveasで名前をつけて保存したいのですが名前をつけて保存ダイアログに一つ目のieのファイルが保存項目として表示されてしまいます。どなたかわかる方教えてください。よろしくお願いします。
これがそのコードです getIE はシェル取得ファンクションです
長すぎると書き込めないので省略しました
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.navigate "URLリンク(book.impress.co.jp)
Dim ie2 As InternetExplorer
Set ie2 = CreateObject("InternetExplorer.Application")
ie2.Visible = True
ie2.Navigate2 "C:\\Desktop\test.pdf", 1
Set ie2 = getIE("test")
Dim test As String
test = "c:\test\test.pdf"
ie2.ExecWB OLECMDID_SAVEAS, OLECMDEXECOPT_DONTPROMPTUSER, test
End sub
440:デフォルトの名無しさん
20/07/15 02:33:14.34 ZAnqbcST0.net
Excelでやることか?
441:デフォルトの名無しさん
20/07/15 04:42:17.63 IqfNcqeZ0.net
>>439
5ch では、同じ質問のマルチポストは禁止です!
もう1つのスレの方で、やってください!
442:デフォルトの名無しさん
20/07/15 05:05:59.66 T7WU5W0H0.net
Set ws1 = Worksheets(1)
Set ws2 = Worksheets(2)
n = ws2.Cells(Rows.Count, "E").End(xlUp).Row
n = n + 1
For i = 2 To ws1.Cells(Rows.Count, "A").End(xlUp).Row
j = 1
ws2.Cells(n, 5).Value = ws1.Cells(i, j).Value
n = n + 1
j = j + 1
ws2.Cells(n, 5).Value = ws1.Cells(i, j).Value
n = n + 1
j = j + 1
ws2.Cells(n, 5).Value = ws1.Cells(i, j).Value
n = n + 1
j = j + 1
ws2.Cells(n, 5).Value = ws1.Cells(i, j).Value
n = n + 1
j = j + 1
ws2.Cells(n, 5).Value = ws1.Cells(i, j).Value
n = n + 1
j = j + 1
これが10回ほど続くんですか簡潔にかけませんか?
443:デフォルトの名無しさん
20/07/15 05:28:08.89 jQlbMrrka.net
え?VBAって二重ループ出来ないの?
エクセルVBAの二重ループについて
URLリンク(oshiete.goo.ne.jp)
444:デフォルトの名無しさん
20/07/15 07:31:51.88 e63KSG0L0.net
再計算をオフにしていても、VlookupとかIndex/Matchで参照されているセルを削除すると初回だけ滅茶苦茶重くなる
二回目からはアンドゥしようが削除しようが一瞬になる
この初回も重くならないようにしたいんですけど、初回だけどこかで再計算か何かが裏で動いてるんでしょうか?
445:デフォルトの名無しさん (ブーイモ MMa1-+2iy)
20/07/15 07:50:23 XJ3hJcChM.net
プリンタに接続してるんじゃね?
446:デフォルトの名無しさん (ワッチョイ fabc-3crd)
20/07/15 08:49:05 vPDzR3td0.net
記念パピコ
447:デフォルトの名無しさん (アウアウエー Sa02-l+/r)
20/07/15 09:01:25 yrzZGj8Ca.net
ちゅーちゅーちゅぶりらチュパカブラー
448:デフォルトの名無しさん
20/07/15 17:34:47.36 vYR4+hKTa.net
テーブルの特定列に入力されている値から選択できるドロップダウンリストを作りたいです
【要望】
・重複なし
・(できれば)空白は除く
449:デフォルトの名無しさん
20/07/15 17:39:29.54 yeW9Dlh/0.net
>>448
そうか
頑張れよ
ここは日記お断りだぞ
450:デフォルトの名無しさん
20/07/15 17:39:30.37 mQ5xmDA6a.net
>>444
キャッシュのなら場合そういう動作が正常
451:デフォルトの名無しさん
20/07/15 19:30:17.20 FYD4rmMFM.net
>>448
これがゆとり世代だ
452:デフォルトの名無しさん
20/07/15 20:33:22.18 1MtMgQ04F.net
質問してるじゃん
俺は答えられないけど
453:デフォルトの名無しさん
20/07/15 21:01:28.16 XJthZBxP0.net
「作りたいです」という決意表明だろ?
そう言えば誰かが勝手に手助けしてくれると思ってるのかね。
あ、本人かよ。
454:デフォルトの名無しさん
20/07/15 21:25:35.44 sBHz+ETb0.net
平成生まれと昭和生まれは少々使用する言語が違う。
同じように日本語とは言うけれど。
455:デフォルトの名無しさん
20/07/15 21:35:02.16 8IhCO+GMM.net
ゆとり世代は誰かが助けてくれて当然と思っているからな
456:デフォルトの名無しさん
20/07/15 21:38:36.33 sBHz+ETb0.net
そこら辺は見た目の影響も大きいんだよな。
イケメンだったり可愛かったりすると、助けてもらえるのが当たり前で生きてる。
一方、ちょっと残念な感じだと、助けてもらえることが無く生きてる。
そこら辺の感じ方が違うのは当然なんだよね。
457:デフォルトの名無しさん
20/07/15 22:18:05.17 onU8sBQ+a.net
俺じゃない誰かが助けてくれるんじゃね
458:デフォルトの名無しさん
20/07/15 22:44:18.56 ovUS+LpM0.net
覚えてものにしようと断固たる決意でマクロを完成させたけど
最初の方に組んだプロシージャを今見てもほとんど覚えてないわ
メンテナンスだけはできるようにコメントつけてあるけど
これがネットで拾い集めて基礎を学ばない相変わらずの俺のダメスタイル
459:デフォルトの名無しさん
20/07/15 23:23:50.74 xZi/KI4S0.net
コメント残してるだけだいぶマシ
460:デフォルトの名無しさん
20/07/16 00:53:10.42 9MD/+BL5M.net
個数や最終行などよく使う変数名は今後の為に統一させたほうがいいな
その時の気分でいろいろと変えると後で意味不明になる
461:デフォルトの名無しさん
20/07/16 02:52:22.64 OfRWrGue0.net
古いソースをコピペするからそうなる
462:デフォルトの名無しさん
20/07/16 09:14:27.30 PzZafv3e0.net
そして統一後気が変わって全て置換か
463:デフォルトの名無しさん
20/07/16 09:39:51.11 6lIeM5zt0.net
何の変数かコメント付けるだけで十分では
464:デフォルトの名無しさん
20/07/16 11:51:40.64 iXWxOn5X0.net
同じフォルダ内の"取引実績"ブックの"関東地区"シートのA列・B列・C列・J列・L列・AD列の
それぞれ2行目から最下行までを配列に入れる方法を教えてください
Workbooks.Open ThisWorkbook.Path & "\取引実績", ReadOnly:=True
i = Sheets("関東地区").Cells(Rows.Count,1).End(xlUp).Row
ReDim SiresakiArray(i -1, 6) As Variant
'代入するのはA,B,C,J,L,AD列のみ
SiresakiArray() = Range("A2:??????
ActiveWindow.Close
465:デフォルトの名無しさん
20/07/16 12:20:55.35 Bld7disAr.net
いらん列を消せば?
466:デフォルトの名無しさん
20/07/16 12:29:13.40 GzNgEuWKM.net
みんなvbaどうやって勉強してるの?
しっかり参考書とか買って、じっくり?
ちなみに自分は>>458に近いスタイル
必要に迫られたらネットで検索して、ちょっと弄ってって感じ
だからいつまでたっても上達しない・・・
467:デフォルトの名無しさん
20/07/16 12:41:43.01 Bld7disAr.net
消したらrange("a2").resize(i,6)
468:デフォルトの名無しさん
20/07/16 12:45:12.35 6lIeM5zt0.net
コピペするだけで身に付くわけがない…
そのコードが何をしてるのか理解できるまで調べて自分で使っていれば自然に身に付く
>>464
いらん列消すか、いる列の2行目から地道に入れる
469:デフォルトの名無しさん
20/07/16 13:00:26.82 jRyYUilTM.net
これできるようにしてくれない?
これって自動でならない?
職場の糞どもの質問は完全に無視してる
テメーの昼休憩にずっと触ってるスマホで調べりゃ出てくるだろ
話しかけんな
470:デフォルトの名無しさん
20/07/16 13:38:13.07 PzZafv3e0.net
その人が楽するためなら何もしないな
あえて普段はどうやってるか聞いてみて嫌な顔一つしない感じならやる
471:デフォルトの名無しさん
20/07/16 14:52:54.75 2egBYvX50.net
>>464
Sub hoge1()
Dim aa As Variant
aa = Range("a1:c3,e1:f3")
'結果:a1:c3までしか入らない。なるほどね。
End Sub
Sub hoge2()
i = Cells(Rows.Count, 1).End(xlUp).Row
ReDim siresakiarray(i - 1, 6) As Variant
retsu = Array("A", "B", "C", "J", "L", "AD")
For iic = 0 To UBound(retsu)
For iir = 2 To i
siresakiarray(iir - 2, iic) = Cells(iir, retsu(iic))
Next
Next
'
Worksheets.Add
Range("a1:m999") = siresakiarray
End Sub
一つずつ入れるならザックリこんな感じのロジックで。
他の方法として新しいシートにシートコピーして列を消して配列に挿入の方が
効率いいのかも どうだろう
472:デフォルトの名無しさん (ワッチョイ dab5-t9FD)
20/07/17 00:37:14 27Ma2AbZ0.net
少し組んで改善するとまぁ評価はされるんだけど
他の人後でメンテナンスできるよな?
とか
マクロが壊れる心配ないよな?とか
テンプレートのように言われるけど知るかよ
読み取り専用で配布してるしプロシージャ弄れないようにしてあるし壊れねーっつーの
パスワードかけてないマスター版も社内サーバーに置いてあるから
いじりたきゃ学べや
あと配布した途端楽になったらその業務ばっかりやろうとするおっさん見苦しくてむかつく
配って損したわ
473:デフォルトの名無しさん
20/07/17 08:36:30.29 KHrOLv580.net
あれ?ここ日記帳だっけ?
474:デフォルトの名無しさん (ワッチョイ 7663-NRU3)
20/07/17 09:55:37 q+bHJv+q0.net
みんなの日記帳だよ
君も自由に書き込んでいいよ
475:464 (ワッチョイ 89cc-sTnA)
20/07/17 11:03:50 lcXPd8bd0.net
>>465,468,471
ありがとうございます。列を削除して取り込みます。
476:デフォルトの名無しさん
20/07/17 11:46:31.69 lcXPd8bd0.net
配列 ary(1,6)に年月日(2020/7/18)が入っていて、配列ary(1,7)には何らかの値が入っていることがあります
ary(1,6)を20日締で起算して、ary2(1,1)に"20_7"のような文字列を返す式を教えてください。
またary(1,7)に値が入っていれば翌月にずれるようにしたいです
ary(1,6)="2020/7/18"
ary(1,7)= ""
の場合ary2(1,1)="20_7"
ary(1,6)="2020/7/21"
ary(1,7)= ""
の場合ary2(1,1)="20_8"
ary(1,6)="2020/7/18"
ary(1,7)= "値"
の場合ary2(1,1)="20_8"
ary(1,6)="2020/12/20"
ary(1,7)= "1"
の場合ary2(1,1)="21_1"
477:デフォルトの名無しさん
20/07/17 12:02:43.77 0sNlDakf0.net
型はなんなの?
くそコードでもいいからひとつずつ考えて作ってみたの?
478:デフォルトの名無しさん
20/07/17 12:07:44.33 NYWT4Zhl0.net
の場合、とか言ってるんならif使えばいいだけだろ
アホなのか
479:477
20/07/17 12:46:43.52 0sNlDakf0.net
書いてみた
理解しなきゃ使えないと思うが
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
480:476
20/07/17 15:02:49.46 lcXPd8bd0.net
>>479
完成しました。ありがとうございました
dt = CDate(ary(1,6))
If Cint(Format(dt,"d")) > 20 Then '20日以降か
dt = DateAdd("m",1,dt)
End if
'空欄でなければさらに1カ月繰り上げる
If AfuriArray(cnt-1,26) <> "" Then
Else
dt = DateAdd("m",1,dt)
End If
ary(2,1) = Right(Format(dt, "yyyy"),2)&"_"& Format(dt,"m")
481:デフォルトの名無しさん (ワッチョイ dab5-t9FD)
20/07/17 21:27:08 27Ma2AbZ0.net
来年の役員報告の課の改善発表の内容に
俺のマクロで作る事が既に組み込まれてるんだが
そもそもそこまでスキルないし年上のもっと給料もらってる奴にやらせろやカスが
482:デフォルトの名無しさん
20/07/17 23:08:06.59 Bh4mGSGka.net
って言えばいいじゃん
483:デフォルトの名無しさん
20/07/18 15:07:16.47 aMbjCCwU0.net
日本語環境でmiLANG_JAPANESEを指定してもbad languageのエラーが出るのは何故?
484:デフォルトの名無しさん
20/07/18 16:11:19.98 gXGI8VY40.net
敗戦国だから
485:デフォルトの名無しさん
20/07/18 18:26:41.44 6ntZQZs40.net
sheet"s1"にFunctionで処理したary2を貼り付けたいのですが、処理前のary1が貼り付けられます
Function後のary2を貼り付けるにはどうすればよいですか?
Sub test()
Dim endrow, r As Long
endrow = Sheets("rui").Cells(Rows.Count, 1).End(xlUp).Row
ReDim ary1(endrow - 1, 6)
ary1() = Sheets("rui").Range("A2:F" & endrow).Value
Sheets("sh1").Range("A2:F" & endrow) = ary2(ary1())
End Sub
Function ary2(ary1() As Variant) As Variant()
Dim en, r As Long
en = UBound(ary1())
For r = 1 To en
ary1(r, 1) = Application.Asc(ary1(r, 1))
ary1(r, 1) = StrConv(ary1(r, 1), vbUpperCase)
ary1(r, 1) = Replace(ary1(r, 1), " ", "")
Next r
End Function
486:デフォルトの名無しさん
20/07/18 19:22:36.82 BZh66Ti/a.net
>>485
そりゃあ貴方、ary2は関数ですと自分で宣言してるもの。
しかもary1に代入してますやんかー
プログラムは命令通りに動作してるだけじゃん。
ary2の配列を準備して処理してから
そのary2の内容をシートに展開すようにプログラムしなきゃ
487:485
20/07/18 20:24:50.23 6ntZQZs40.net
>>486
ありがとうございますFuntionの使い方を誤解していましたm(_ _)m
488:デフォルトの名無しさん
20/07/18 22:33:50.97 6aEbh+KL0.net
Function大魔王
489:デフォルトの名無しさん
20/07/18 22:50:59.73 GbMN9IfrM.net
>>485
Functionの配列渡しは少しややこしい
まずは内容を単純化して正解の型を見つけた方がいいと思う
490:デフォルトの名無しさん
20/07/18 23:52:10.32 UVKbM6jvM.net
>>485
単純化した一つの正解の型
Sub test()
Dim ary() As String
ary() = fnc
MsgBox ary(1)
End Sub
Function fnc() As String()
Dim ary(1) As String
ary(1) = "a"
fnc = ary()
End Function
491:デフォルトの名無しさん
20/07/19 01:27:51.35 YQjQ9IMi0.net
配列の扱いや参照渡し以前の問題では・・・
492:デフォルトの名無しさん
20/07/19 02:51:36.02 b8b+mHAS0.net
結局、馬鹿には無理なんだよ
493:デフォルトの名無しさん
20/07/19 02:54:31.21 MOwnlnDY0.net
joinして受け渡ししてsplitで復元がシンプルでわかりやすいんじゃね?
494:デフォルトの名無しさん
20/07/19 06:42:33.41 xggXZiaY0.net
もう企業ユーザーにはOffice Script解放されてるみたいですが試された方、使用感どんなもんですか?
495:デフォルトの名無しさん
20/07/19 08:30:43.83 du465xO70.net
調査してる最中じゃねーの、あわてんな
496:デフォルトの名無しさん
20/07/19 14:09:46.91 4shkrYfWd.net
>>485
ary2の宣言部分は正しい。
でもary2の内部でary2はどうなったの?
何もしてないよね。
ary2の内部でary2はこうなりましたって書かないと宣言した時点の空の配列が返るのが当然。
つまりary2のFunctionの最後にary2=の文が必要。
497:デフォルトの名無しさん
20/07/19 14:11:26.48 4shkrYfWd.net
>>490のfnc=any()の文が正にそれ。
498:デフォルトの名無しさん
20/07/20 12:06:47.51 Dkhdkwhma.net
excelなんだから配列はセルにいれときゃいいんじゃね
499:デフォルトの名無しさん
20/07/20 18:29:09.95 3yLiDe7EM.net
速度気にしないなら
500:デフォルトの名無しさん
20/07/20 23:22:10.32 87nc/Vc+0.net
全然気にしない
501:デフォルトの名無しさん
20/07/20 23:52:01.41 3H73W2vZ0.net
配列は大量に入れるとメモリ不足になるのが嫌。
値以外のプロパティ持ってるセルの方がよっぽどメモリ喰うだろって思うけど、
仕様だから仕方がない。
502:デフォルトの名無しさん
20/07/21 07:20:28.10 s4f7WPjJd.net
メモリ不足になるほど大量に入れることなんて殆ど無い。
不足するのは別の理由だと思うが。
503:デフォルトの名無しさん
20/07/21 10:31:44.78 8QcWJiTk0.net
10万行のCSVとか配列で処理したくなるけどメモリ不足になるんで仕方なくワークシートに入れてる
504:デフォルトの名無しさん
20/07/21 11:09:54.82 GBbtTx0BM.net
VBAは過去のしがらみが多いので64bit Excelでも変な制限があってびっくりする
最近経験したのはユーザー定義型の中の配列サイズ
Type T
A(33000) As Integer
End Type
Sub S
Dim X As T
End
ってやるだけで「動的なローカル変数が多すぎます」って言われる
A(32000) As Integer
なら問題ない
505:デフォルトの名無しさん
20/07/21 11:43:12.61 uXgtcpNna.net
intの最大の32767だろうね
506:デフォルトの名無しさん
20/07/21 12:27:55.57 Z8jTNyVcM.net
オフィススクリプト試したい…
個人ユーザーにも解放してくれ…
507:デフォルトの名無しさん
20/07/21 13:35:34.68 420tjBmwd.net
csvを文字列形式のセルに取り込む時、値がない場合は""とemptyどっちにしておくべき?
508:デフォルトの名無しさん
20/07/21 14:38:12.66 zc+r4po80.net
office田中の人が顔出しでYoutubeはじめたらしいが
おじいちゃんで偉そう。
実世界なら関わりたくないタイプ。
509:デフォルトの名無しさん
20/07/21 19:47:20.41 g0ULgQg00.net
ネット上でも関わり合いになりたくないタイプだろ
510:デフォルトの名無しさん
20/07/21 21:24:07.75 fmBf+klc0.net
自分の参考になるとこだけ聞いときゃいいんじゃないの?
その他アレコレ言うのはどうかと思うぞ
511:デフォルトの名無しさん
20/07/21 22:50:12.29 nbzaQebba.net
>>503
1レコードずつシーケンシャルに処理できないの?
512:デフォルトの名無しさん
20/07/21 23:00:00.64 q3mQwKOX0.net
複数の同じ形式で入力されたブックをマージしたんですが、テキストを連結する場合に区切り文字を「|」にしました
(「|」は入力時には使用していません)
ファイルが3つ(A.xlsx,B.xlsx,C.xlsx)、それぞれのブックの値をa,b,c(テキストのみ、数値なし)、セルの値は
空白可だとすると、マージ後のあるセルの文字列は
a|| a|b| a||c |b| |b|c ||c a|b|c |||
のいづれかになりますが、このうち左端及び右端の「|」は削除、連続する「|」は「|」ひとつに統合、すべて「|」の
場合はセルを空白にするにはどうすればいいでしょうか?余分なスペースを削るTrimのようなことを任意の文字でしたい、
という趣旨です。処理後は以下のようにしたいです
a a|b a|c b b|c c a|b|c 空白のセル
一旦「|」をスペースに置換してTrim関数で余分なスペースを削ってから再度スペースを「|」に置換すればできるんですが、
もうちょっとスマートな方法があるのかなということと、意図して連続したスペースを入力していたらTrimで消えてしまうので
そういった場合に備える意味も含めていい方法があれば教えてください
513:デフォルトの名無しさん
20/07/21 23:08:39.79 aJyp0F9S0.net
Excel2019です
外部CSVをpowerqueryで取り込んで整形したのちシートに貼り付けてあるテーブルがありまして、
ファイルを立ち上げる度にこのテーブルを自動で更新させるところまではできました。
この後、更新完了後に自動的にCSVファイルを保存、終了させようと考えているのですが
更新完了のイベントがどうもわかりません(見当たりません)。
アドバイスをいただけないでしょうか
よろしくおねがいします。
514:デフォルトの名無しさん
20/07/21 23:15:37.99 rncf75Mgd.net
>>513
スマートさは知らないが正規表現で置換するとか
515:デフォルトの名無しさん
20/07/21 23:16:26.19 rncf75Mgd.net
間違えた
>>512宛
516:デフォルトの名無しさん
20/07/22 01:35:45.12 2/9nnKBr0.net
>>507
null 値は文字列型じゃなく、
型もない、または、null型だから、空文字列ではないと思う
>>513
>このテーブルを自動で更新させるところまではできました
この処理の後に、やりたい処理を書けば?
517:デフォルトの名無しさん (ワッチョイ 8b63-UE+f)
20/07/22 02:45:59 V5aeR2xw0.net
>>512
/^\|+|\|+$//
/\|+/|/
518:デフォルトの名無しさん
20/07/22 03:16:01.58 hQWVf2dN0.net
>>517
v(^^)/~
519:デフォルトの名無しさん
20/07/22 03:56:58.93 F4KuFXOj0.net
>>511
ファイル操作はセル操作以上に重いからできるだけまとめた方が速くなる
520:デフォルトの名無しさん
20/07/22 08:03:26.55 eX+7X9u9a.net
>>519
そう?
521:デフォルトの名無しさん (スッップ Sd33-Spa3)
20/07/22 08:33:57 6gIpTQrUd.net
>>503
10万を一気に配列に入れるの?
5000行ぐらいずつで処理できんの?
522:デフォルトの名無しさん
20/07/22 08:40:56.01 6gIpTQrUd.net
>>512
1.連続する|を1つにする。
2.両端の|を消す。
523:デフォルトの名無しさん
20/07/22 16:49:33.87 aRPEdkhK0.net
ExcelWebAddinっていうのを使ってWebフォームの入力を自動化しようとしていますが、ラジオボタンにチェックを入れるにはどのようなコマンドを入力すれば良いのでしょうか?
524:デフォルトの名無しさん
20/07/22 17:06:35.37 F072B1Mr0.net
1人だけマクロ作って超楽に終わらせてるのがバレたわ
改善提案で出して8000円賞やるから他の奴らにも配って共有化してくれと言われた
まぁ仕方ない
でもまぁマクロはこっそり作って自分で運用するに限るね
次にそういうのできたら発表で使ってくれだと
525:デフォルトの名無しさん
20/07/22 17:17:55.78 nFYyDION0.net
こっそり使わないと
マクロ適用できないように仕変されるよ
526:デフォルトの名無しさん
20/07/22 17:25:20.04 F072B1Mr0.net
Excelを使った業務が95%くらいの職場だから問題ない
逆に使いにくいwordを俺が改善で駆逐していってたが今回のはみんなに配りたくなかったけどまぁ仕方ないか…
在宅の日なんて他の人が半日かかるのを5分だったのに…
527:デフォルトの名無しさん
20/07/22 17:55:11.21 vvOOySn70.net
>>524
そういうのさあ、共有してあげてもいいけど、共有すると知的障害の人が仕様の異なるものに適用して失敗して文句言ってくるのが目に見えてるんだよね
だからといっていろんなケース想定してプログラミングするのはアホらしいし
528:デフォルトの名無しさん
20/07/22 18:47:51.04 urXipo8c0.net
むしろあえて自分用に最適化して「共通部分以外はできません」でもいい
529:デフォルトの名無しさん
20/07/22 19:56:15.37 nFYyDION0.net
いつのころからかマクロを忌み嫌い極限までVLOOKUPで済ませるようになった
530:デフォルトの名無しさん
20/07/22 19:58:49.72 ILXZvJ+B0.net
index/matchは使わないのw
531:デフォルトの名無しさん
20/07/22 20:03:08.77 SXXgaLVH0.net
オレオレ証明書でスムーズに使えるかと思ったら
証明書付けると逆に使えなくなったり
嫌がらせが半端じゃなかったしな
今では設定がどこにあるのかすら分からん
532:デフォルトの名無しさん
20/07/22 21:55:35.93 F4KuFXOj0.net
XPの頃はオレオレ証明書を作ってたけど、そういや今は作らなくても動いてるな
何がどう変わったのか把握してないわ
533:デフォルトの名無しさん
20/07/22 22:08:08.79 Fc7dRB3XM.net
今ならxlookupがある。
あと関係ないけど、スプシのquery関数輸入してくんないかなぁ…あんなのに特許とか無いでしょ?
534:デフォルトの名無しさん (ワッチョイ 8b63-fOmF)
20/07/23 02:13:32 Iky/Pkwz0.net
あるだろう
使われてないけど
535:デフォルトの名無しさん
20/07/23 02:31:09.52 KC5IdKq10.net
シートのコード名をマクロから変更することはできますか?
536:デフォルトの名無しさん
20/07/23 02:32:42.56 vlSabEZu0.net
できるわけないだろ
537:デフォルトの名無しさん (ワッチョイ 9909-RtpQ)
20/07/23 02:42:45 KC5IdKq10.net
まじか!
538:デフォルトの名無しさん (アウアウエー Sae3-UreN)
20/07/23 02:44:48 hi69YBSQa.net
シートのコード名ってなんだ?
539:デフォルトの名無しさん (ワッチョイ d1a2-K9d7)
20/07/23 02:46:02 vlSabEZu0.net
プロシージャ名じゃね
知らんけど
540:デフォルトの名無しさん
20/07/23 02:50:40.32 hi69YBSQa.net
設定を変更する必要はあるけど、VBproject を編集できるかもね
541:デフォルトの名無しさん
20/07/23 03:09:52.56 u9f9fzuBr.net
>>535
値取得のみ可
URLリンク(docs.microsoft.com)
542:デフォルトの名無しさん
20/07/23 03:16:02.13 togpUAVc0.net
>>526
もしかして長文資料もExcelで作っちゃう系?
それはそれで絶対やめとけよ
543:デフォルトの名無しさん
20/07/23 03:21:02.63 KC5IdKq10.net
>>541
やっぱり値取得だけなんですね。
ありがとうございました。
544:デフォルトの名無しさん
20/07/23 07:12:45.90 i+261XKMd.net
>>543
何で変えたいの?
545:デフォルトの名無しさん
20/07/23 07:16:32.96 kdPZXO8Ra.net
世の中が気に入らないから
546:デフォルトの名無しさん
20/07/23 07:23:13.06 Rh3868Eja.net
手入力でやれよ
547:デフォルトの名無しさん
20/07/23 07:35:31.90 LqjC2Hh/0.net
sendkeyでなんとか
548:デフォルトの名無しさん (ワッチョイ 4149-5TCi)
20/07/23 10:55:22 zKEjLf2X0.net
>>517
ありがとうございます、休み明けに試してみます
549:デフォルトの名無しさん
20/07/23 11:56:15.16 5yzO6ql90.net
Android版のアウトルックが操作方法また変わって、開こうとしたら削除されて、しかも削除済みのフォルダにもない。
どうしたら良いんだこれ。
メール消えてもうた。
550:デフォルトの名無しさん
20/07/23 11:58:48.40 qQzwkkHta.net
>>549
スレチ
551:デフォルトの名無しさん
20/07/23 11:59:14.78 5yzO6ql90.net
ロードに1分以上かかるのに、一見、ロードされているように見せかけるのも、問題があるように感じる。
人によっては、本文の無いメールが来たと思う人もいるだろう。
一見して高速にロードされるように見せかけるのは大した技術なんだろうけど、それ、ユーザーを騙すってことだよね?
実際にはクライアント側にデータを保存していないんだから。
552:デフォルトの名無しさん
20/07/23 12:02:50.60 5yzO6ql90.net
高速にロードされるように見せかけているがために、まだデータをダウンロードできていないことをユーザーに知らせることが出来ない。
通信中であることを示すマークを出すと、高速で無いことがバレてしまう。
ここに矛盾を抱えてる。
553:デフォルトの名無しさん
20/07/23 12:12:38.03 5yzO6ql90.net
しかもアウトルックドットコムはLinuxに慣れてる一般大衆からすると信じがたく重い。
サーバーからダウンロードしていることを隠すなら、高速なLinuxサーバーを使うべきでは?
554:デフォルトの名無しさん
20/07/23 12:24:44.89 5yzO6ql90.net
先月まで開く動作だった左にスワイプが削除の動作に代わるって、とんでもない仕様変更だよ。
555:デフォルトの名無しさん
20/07/23 12:26:28.82 5yzO6ql90.net
しかも、本文がロードされる前の時間帯では、削除済みのフォルダに入らない。
さすがにこれは仕様というよりバグなんじゃないのかな?
556:デフォルトの名無しさん
20/07/23 12:31:43.83 iL/DIdMFM.net
officeTANAKAのおじいちゃんの動画見てる人いる?
557:デフォルトの名無しさん
20/07/23 13:19:56.66 OedHhoi20.net
>>555
死ね
558:デフォルトの名無しさん
20/07/23 17:49:45.58 XAOqwh8/0.net
>>556
WEBを流し見した方が早い
同じ内容なら動画は時間がもったいない
559:デフォルトの名無しさん
20/07/23 18:24:47.13 otdPxTIka.net
おじいちゃんよりperfect human NAKATAなら見るけど