1 名前:デフォルトの名無しさん [2020/06/26(金) 02:01:29.56 ID:uDfmpksE0.net] !extend:checked:vvvvv:1000:512 ↑同じ内容を2行貼り付ける ExcelのVBAに関する質問スレです コード書き込みや作成依頼もOK ※前スレ Excel VBA 質問スレ Part66 https://mevius.5ch.net/test/read.cgi/tech/1589085825/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
207 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 16:03:39.61 ID:DEQjmcqBd.net] >>187 >>190 やって見てから言えよw 問題は時間だ。 2000x365x24x3=52560000 100列で50万行だぞ。 実際やったわけだが、普通にやって6時間とかかかる感じだった。 勿論、初心者じゃないから2次元配列使うのも当然やってる。 まあ、6時間もかけたく無かったからマルチプロセスにして1時間ぐらいにしたけどな。
208 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 16:04:11.08 ID:qCMIttGKd.net] 十分な量を確保 あとで失敗するパターン
209 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 16:09:00.53 ID:MUUOvXMba.net] data.csv 年月日,時間,気温,湿度 2020/07/04,11:15,28.5℃,78% 2020/07/04,12:15,ー,78% 2020/07/04,13:15,28.5℃,ー 2020/07/04,14:15,ー,ー 2020/07/04,15:15,28.5℃,78% ・・・ ・・ ・ 1カ月データとして24時間×31日=744行+先頭行 1年12ヶ月データで8,928行かぁ データスルーとかデータ穴埋めとかって どっちの場合も VBA じゃなくてデータベースのSQLで出来たりするのかな?
210 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 16:22:41.23 ID:DNEaiqy30.net] おれならそもそも案件をRDBMSに移す提案をするわ だめなら元データはどうせCSVやJsonかなにかだろうし、VBAから普通にRDBにいれてプロシージャ叩くとか 外部プログラムで直に処理するね 元データがExcelでExcel縛りなら、どうやって案件から手を引くかを考えるねw Excel起動するVBAでやることじゃない まあ金次第でもあるけど
211 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 16:30:22.62 ID:DEQjmcqBd.net] >>209 う〜ん、場所毎だから表になるっちゃあなるけど、SQLでやろうとは思わなかったし、どうやってやるのかも思い付かんわ。 仕事でSQLばかり触ってるが。 >>210 おう、確かに元データはCSVだった。 SQLで上手いことやるのが思い付かんが。
212 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 16:35:45.74 ID:qCMIttGKd.net] pythonでデータクリーニングさせれば?
213 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 16:42:21.08 ID:IjVZd7O90.net] >>196 > 安定時のデータ値だけならともかくデータの変化を取りこぼすリスクが高くなるんだよ 平均とってる時点で取りこぼしとか意味不明なんだけどw
214 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 16:47:20.12 ID:IjVZd7O90.net] >>207 2000列で高々3万行程度だろ Excelの計算式はマルチスレッドで動くから自称「初心者じゃない」君のVBAより速いと思うぞ
215 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 17:02:54.82 ID:DEQjmcqBd.net] >>214 バーカw やってから言え。 本当バカだなあ。 そもそもファイル重くて碌に動かねえよ。
216 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 17:18:55.42 ID:pfDbF4Mra.net] どうせ適当なデータでっち上げて表示させても気づかないだろ
217 名前:200 mailto:sage [2020/07/04(土) 17:35:53.50 ID:oup49XFx0.net] >>203 おっしゃる通りでした。 IFに問題があったみたいです。ありがとうございました。
218 名前:デフォルトの名無しさん (ワッチョイ 8e02-JJ0U) mailto:sage [2020/07/04(土) 17:46:55 ID:aRnpDm0b0.net] 5ちゃんのExcelVBA質問スレでMonaさんに対してマウントを取りたいのですが、 Mount Mona と記述してもマウントが取れません どうすればいいですか?
219 名前:デフォルトの名無しさん [2020/07/04(土) 17:49:24.23 ID:1naoKVTK0.net] >>207 お前が馬鹿なだけだろ 全部メモリーに置く理由もない 己の頭の問題を仕様の問題とすり替えるな
220 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 17:54:43.71 ID: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 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 18:14:15.70 ID:DEQjmcqBd.net] >>219 出来もしないこと言ってるバカ? それとも、それ迄のやり取りすら出来ないバカ? 手作業やExcel数式でやってから言え。 ちゃんとそれ迄のやり取りも読んでから言えよw
222 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 19:58:17.09 ID:VZt6Ms3K0.net] >>185 批判したいとかそういうもんじゃないんだけど わりと大きなデータ扱うことに興味があったんでどんなもんか実際やってみた 1カ所分しかやってないんだけど csvから取得して平均値26280個をシート記入するまで1秒もかかってない感じ 一日ごとの平均は出してないけどこの分じゃそれほど差はないと思う もしや取得時には配列で一括取得してても シート記入時に配列使った一括記入してないんじゃ? も少し情報提供すると https://www.data.jma.go.jp/gmd/risk/obsdl/index.php# ここから3年分時間別気温データを、1年ごとcsvにして三個ダウンロード https://www.moug.net/tech/exvba/0060086.html これと同じ感じでOpen使って取得 年ごとに必要な気温データのみ1次元配列に入れる 3つの配列を1つの配列にまとめる 平均値入れていく配列AveArrayを新しく作る(あえてString宣言) あとはforで回しながら過去8時間分のデータを調べてデータない場合の個数を調べて 4つ以上ならAveArrayにN/Aを入れる 4つ未満なら8時間合計して、有効データ数で除算し、AveArrayに入れる AveArrayを列数1の2次元配列にしてからシートに一括記入 なんかおれ間違ってる?
223 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 20:07:02.00 ID:ZiXQ0AsVa.net] こうやって実際にやってみる人は素晴らしいと思う
224 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 20:15:53.04 ID:/OqMGH1W0.net] >>220 matchならともかくcountifは配列に対応してない 素直にセルを引数にしてやったほうがいいのでは
225 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 20:17:12.12 ID:JHoncA5/a.net] countifじゃなくてloopでfindにすればよいのでは
226 名前:デフォルトの名無しさん (ワッチョイ 87da-VQSO) mailto:sage [2020/07/04(土) 22:27:57 ID:VMWug14q0.net] VBAは手段の一つ、目的はデータの加工ってわりきればすぐ終わる作業なのに 無理してVBAだけでやろうとするからいつまでもおわらない
227 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 23:58:08.33 ID:DEQjmcqBd.net] >>222 ちょっと見た感じほぼ、俺と同じ感じだね。 >もしや取得時には配列で一括取得してても シート記入時に配列使った一括記入してないんじゃ? オイオイ、そんな素人なわけ無いだろ。 Line inputを使ったか、それより速いバイナリ読み込み+StrConv使ったかについては覚えて居ない。 まあ、速いといっても劇的に速くなる訳じゃないから、そんなことよりマルチプロセスってことでLine inputのままだったかも。 オレがやった時のデータは日付+24列のデータだった。 貼り付けは元データ込みで、元データの右に8時間平均と1日平均書いたと思うが、もしかしたら8時間平均は出力しなかったかも。 多分読み込みよりも列を増やした二次元配列にして書き込みにも利用してたと思う。
228 名前:デフォルトの名無しさん (スップ Sd4a-aBdg) mailto:sage [2020/07/05(日) 00:48:44 ID:poq4gvQsd.net] 複数のファイルの名前を編集したい 具体的には、全てのファイルのファイル名に、2020と入れたい。
229 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 00:51:15.79 ID:C4Jqu0Op0.net] DOSコマンドでできる
230 名前:デフォルトの名無しさん (ワッチョイ 27ce-BXkI) mailto:sage [2020/07/05(日) 01:49:00 ID:UMxIfgnY0.net] >>228 ファイル名のどこに入れるの?先頭?真ん中?末尾?
231 名前:デフォルトの名無しさん [2020/07/05(日) 01:59:51.75 ID:S3+IlzuQ0.net] >>230 その程度vbaなら自由自在でしょ バカにしないでください
232 名前:デフォルトの名無しさん [2020/07/05(日) 02:04:39.40 ID:sCEs+yW00.net] >>227 お前の書き込みは、 「というか普通に考えてVBAでも無理だけどね。」 だろ 後付けで時間がとか言い出して誤魔化すんじゃねーよ
233 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 03:08:45.12 ID:EDU6Wt820.net] powershellでやれ
234 名前:デフォルトの名無しさん (ワッチョイ 8a01-c9XW) [2020/07/05(日) 07:10:34 ID:Mq9FuBzw0.net] 標準モジュールに、 Sub 1() ・・・ ・・・ End Sub Sub 2() ・・・ ・・・ End Sub Sub 3() ・・・ ・・・ End Sub と、書いていき、Sub 1()がSub 2()を呼び、Sub 2()がSub 3()を呼ぶ、って可能でしょうか?
235 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 07:16:23.84 ID:2yUokYO9d.net] >>232 ??? 日本語が理解出来ないのか? >なんてのやったが1回限りでもVBA使わないと無理。 「やった」と書いて有るだろ。 その後に「普通に考えて」とも書いてる。 実際にやったが、普通はVBAでも無理という意味だよ。 >>222 とほぼ同じで6時間かかるからマルチプロセスにしたんだからな。
236 名前:デフォルトの名無しさん (ワッチョイ 8a01-5cl0) mailto:sage [2020/07/05(日) 07:44:05 ID: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) [2020/07/05(日) 07:54:44 ID:Mq9FuBzw0.net] >>234 をグーグルで検索するには、どういうキーワードで検索すればいいでしょうか?
238 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 07:57:11.74 ID: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 [2020/07/05(日) 08:01:08.68 ID:Mq9FuBzw0.net] >>228 ファイルをバイナリで読み込んで、バイナリで書き出す、 で、書き出す際に、ファイル名に"2020"&、とすればいい。
240 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 08:01:41.62 ID:VaIdJVAp0.net] >>234 うん >>237 vba 関数 呼び出し 偉いね、その姿勢があればすぐにプロフェッショナルだわ
241 名前:デフォルトの名無しさん [2020/07/05(日) 08:04:40.53 ID:nDNnOTMWa.net] >>234 普通に最後にサブルーチンの名前呼び出し書いたら良いのでは? Sub 1() ・・・ ・・・ 2 End Sub Sub 2() ・・・ ・・・ 3 End Sub Sub 3() ・・・ ・・・ End Sub
242 名前:234 [2020/07/05(日) 08:05:40.42 ID:Mq9FuBzw0.net] >>240 どうもです。
243 名前:234 [2020/07/05(日) 08:06:29.51 ID:Mq9FuBzw0.net] >>241 どうもです。
244 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:36:58.35 ID:CJtrxhlB0.net] >>242 呼び出しは、可読性考慮すると文頭にCall書いた方がいいよ
245 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 13:58:43.83 ID:U1BgWcwt0.net] >>207 VBAでやっても6時間はかかりすぎな気がするが マシンスペックとコード晒してみ それ、計算式でやって再計算に1時間以上かかるのか? 当然試してるよな マルチプロセスもどうやってやったのか気になるが 俺なら間違いなくDBにつっこんでSQLでやる そういえばエクセルシートなりCSVなりに対してSQL投げる方法がいくつかあったけど それは試したのか?
246 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 15:07:25.29 ID:2yUokYO9d.net] >>239 ファイル名変更だから読む必要は無いだろ。 変更するだけでOK。
247 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 15:11:46.86 ID:BTTSshKd0.net] >>244 おれもsubモジュール呼び出しはCallつけるようにしてる 他の言語いじったにあととかにVBAのその行みたらよくファッ!?って一瞬なるから
248 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 15:16:11.04 ID:2yUokYO9d.net] >>245 SQLに投げるのは簡単だが、今回の問題でどういうSQLで出来るのかが分からんかった。 今でも思い付かんが。 計算式ではやってないな。 まあ、無駄なんで。 というか、本当にやる奴が出るとは思わんかったから、言わんかったが他にも制約は有ったんだわ。 それにしても>>236 は速いな。 ちょっとおれも調べてみるか。 ちなみにこの仕事数年前なんで完全に憶えてるわけじゃない。
249 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 15:22:54.54 ID:2yUokYO9d.net] マルチプロセスはExcel.Application8個(自分含めて)呼び出して、自分のブック開いて別CPUにやらせるプロシージャをApplication.OnTimeで呼び出したかSetTimerで呼び出したかだったんじゃないかな。 細かい連携しないで済むようにしてたと思う。 複雑なことはやってねえよ。
250 名前:220 (ワッチョイ 87cc-ERT+) mailto:sage [2020/07/05(日) 19:59:50 ID:Y6miK3VP0.net] >>224 いろいろ試してダメだったらそうします >>225 ありがとうございます。そうします
251 名前:デフォルトの名無しさん (スプッッ Sd4a-tYaB) mailto:sage [2020/07/05(日) 21:27:28 ID:2yUokYO9d.net] >>236 う〜ん、分からん。 俺もやってみたんだが、同じような時間だった。 観測値はテキ卜一に0〜100をランダムで書き込み。 観測出来なかった値は当時の記憶を頼りに9999とした。 確か9998もあったけど変わらんだろう。 前に書いた制約というかは、1年分のファイルが50〜60個ぐらいだったということ。 つまり県ごとのファイルで観測地が多い所は複数ファイルって感じ。 だから実際は行頭に観測地名が入って、その後に何かの数値とかが幾つかあって日付、観測値という具合だった。 年ごとのファイルが完全に固定フォーマットで無かったか、俺が信用してなかったか、観測値名で検索してたと思う。 そこから365日分は連続してたと思うけど。 それでも6時間は掛からんような気がしてきた。 もっと複雑なことやってたのかなあ。 どっちにしても後だしで申し訳ない。
252 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 22:26:04.09 ID:ys79fvH60.net] >>251 そもそもいつ頃の話よ うろ覚えだけど2010あたりから計算式はめちゃめちゃ速くなってるぞ あとでかいブックは64bit化の恩恵もあるし
253 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 22:29:31.22 ID:2yUokYO9d.net] >>252 調べたらそんなに昔じゃ無かったな。 2016年だった。
254 名前:238 (ワッチョイ 872c-+ZV3) mailto:sage [2020/07/05(日) 22:43:00 ID:R1IME3L+0.net] ファイル名の先頭に、2020_ を付けるぐらい、robocopy で出来ないのか?
255 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 22:49:17.55 ID:ys79fvH60.net] 2016ならよほど変なことをしてないと数時間とかかからんと思う
256 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 23:53:51.99 ID:C4Jqu0Op0.net] 2020_2020_2020_2020・・・・
257 名前:デフォルトの名無しさん (ワッチョイ ea24-bNAA) mailto:sage [2020/07/06(月) 00:43:25 ID:Cn1gvhVh0.net] officeが32bitだったというオチは?
258 名前:デフォルトの名無しさん (オッペケ Sr23-aBdg) mailto:sage [2020/07/06(月) 06:39:12 ID:NN5xIHVpr.net] workbookとworksheetって何が違うか。
259 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 07:15:30.65 ID:5mzvDM1u0.net] キングジムファイルと綴じられてる一覧表って感じかな
260 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 08:12:33.04 ID:XvhlV03D0.net] 32bitと64bitで計算スピードの差は2倍もないような
261 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 08:39:32.35 ID:NN5xIHVpr.net] Activesheet.cells(1.1).Activate Activesheet.Paste は上手くいくのに、 Activesheet.cells(1.1).Paste は何でダメなんですか?
262 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 09:18:02.55 ID:Ag715axD0.net] >>261 .pasteは、worsheetのメンバであってrangeやcellsのメンバじゃないから、かな?
263 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 09:49:31.89 ID:Smcv6rvz0.net] パラメータ Destinationがあるから ワイはPasteSpecialのほうが好き
264 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 12:08:40.63 ID:0NryXgvDd.net] >>263 普通はCopyのDestinationでやるからな。 Paste使うのはRange以外のコピーの時かな。
265 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 18:39:32.80 ID:XttWreH00.net] For 処理1 処理2 処理3 処理4 Next よりも For 処理1 Next For 処理2 Next For 処理3 Next For 処理4 Next の方が処理が早い傾向がありますが、そういうものですか?
266 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 19:08:39.04 ID:tFUllOPh0.net] >>254 出来ないよ???? robocopy はファイル名の変更はできない。 robocopy したあと move するしかない。 …あ。こいつWSHスレを荒らしてたrubyおじさんじゃんww
267 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 19:10:33.89 ID:tFUllOPh0.net] てか、もうRubyは徒花だったな。 人気もダダ下がりだし。
268 名前:デフォルトの名無しさん (スプッッ Sd4a-tYaB) mailto:sage [2020/07/06(月) 20:45:52 ID:0NryXgvDd.net] >>266 よく分からんが、そもそも何でRubyが出て来るんだ? VBAだってNameステートメントで一発なのに。
269 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 20:59:38.60 ID:aGu/2bZb0.net] >>265 普通にかんがえて、前者のほうがループのオーバーヘッド分早いはずだが その傾向ってのはどうやって調べたのか
270 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 21:12:06.08 ID:tFUllOPh0.net] >>268 どこでもかしこでもRubyで書いて押し付けてきて、「出来だよ!」っていうオジサンがいるのよ。 WSHスレでは「Rubyおじさん」として有名だった。 が、自分よりスキルの上な奴がコードをうしたら黙り込む。 こんなところにまで出張いてるとはね…。 無視推奨。Rubyはオワコンだし。
271 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 21:13:16.26 ID:K1goXTAAa.net] じゃあVBAはお爺ちゃんだろ
272 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 21:17:13.18 ID:tFUllOPh0.net] >>271 VBAは「頼れるジジイ」だろ。何言ってんの?
273 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 21:29:12.52 ID:XvhlV03D0.net] >>265 そんなのは処理による コードが長くなったりループの中で扱うデータが増えるとメモリキャッシュがあふれて遅くなる可能性が高くなる
274 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 22:27:45.01 ID:33E9zFJO0.net] Rubyの話がしたければRubyのスレ行けばいいのにね
275 名前:デフォルトの名無しさん (スプッッ Sd4a-tYaB) mailto:sage [2020/07/07(火) 12:27:17 ID:mk51G87Dd.net] >>270 いや、それはRubyが優位と言いたいが為だろ。 全然優位じゃない所に出てくるのが分からん。
276 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 19:51:41.03 ID:CAdbpiIn0.net] 宣伝だろ
277 名前:デフォルトの名無しさん [2020/07/07(火) 20:15:33.65 ID:2cf+0s2v0.net] 音楽のmidiファイルを作りたい、つまりバイナリファイルを作りたい者です。で、 ↓を試してみたいのですが、"C3"にバイナリの配列を書き込まなければいけません。 この場合、どうやってexcelのセルに、バイナリの配列データを書き込むのでしょうか? https://oshiete.goo.ne.jp/qa/8402512.html 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 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 20:25:40.74 ID:BPFgnJg70.net] なんでVBAでやるの?
279 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 20:27:13.84 ID:z4TbLErcM.net] VBAスレだから
280 名前:犬丸 [2020/07/07(火) 20:31:41.96 ID:2cf+0s2v0.net] >>278 和音の構成音(ドレミ・・・)を1つづつセルに入れられるから。
281 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 20:33:47.85 ID:BPFgnJg70.net] なんでdominoとか使わないの?
282 名前:デフォルトの名無しさん [2020/07/07(火) 20:34:49.08 ID:2cf+0s2v0.net] あと、PCにインストールされてる開発系はexcelだけだから。
283 名前:277 [2020/07/07(火) 20:41:28.24 ID:2cf+0s2v0.net] つか、改変させたいmidiファイルが300個位あって、それの欲しいデータのexcelファイルへの読み込みはもう終わったわけ。 あとは、そのデータをちょい改変して、同様な300個のmidiファイルを吐き出すだけなんですよ。
284 名前:277 [2020/07/07(火) 20:42:49.00 ID:2cf+0s2v0.net] だから、excelでバイナルファイルを作りたいのです。
285 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 21:00:27.95 ID:yByKJQAn0.net] 読み込めたなら反対をやればいいんじゃないの
286 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 21:05:07.15 ID:CAdbpiIn0.net] >>283 著作権的にどうなの?
287 名前:277 [2020/07/07(火) 21:10:37.49 ID:2cf+0s2v0.net] >>285 日本語だってそうだろ。 読むのは簡単。 書くのは大変なんだよ。 >>286 ネットで買った和音だけの簡単なデータで改変したデータを自分だけで使うぶんには問題ありません。
288 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 21:13:27.88 ID:BPFgnJg70.net] じゃあそうすればいいじゃない? 所詮16進数の文字の羅列(Byteの配列とかにはさすがに出来てるんやろ?)なんだから 最終的には好きに料理してファイルに吐き出せばいい ただ、1つのセルにバイナリなんて入れたら手作業で編集なんてしずらくてしょうがないけどな あとセルの文字数上限もあるだろうし midiの規格書読んだことあるのかしらんが、よくチャンクとかバイナリいじって編集しようと思うな
289 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 21:13:57.80 ID:CAdbpiIn0.net] >>287 ならmidiの編集ソフトが使った方がいいね
290 名前:277 [2020/07/07(火) 21:14:00.67 ID:2cf+0s2v0.net] >>286 そもそも観賞するためのmidiデータではなく音楽制作に使うツールとしてのmidiデータなんだよね。
291 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 21:14:32.40 ID:/HMzap4UM.net] >>282 C#やVB.NETもあるけど?w
292 名前:277 [2020/07/07(火) 21:22:41.71 ID:2cf+0s2v0.net] >>288 > midiの規格書読んだことあるのかしらんが、よくチャンクとかバイナリいじって編集しようと思うな 基礎的な部分は把握してます。 > 所詮16進数の文字の羅列(Byteの配列とかにはさすがに出来てるんやろ?) これがわからないんです。たとえば、4D 54 68 64という16進のデータをexcelの1つのセルに書き込む方法を教えて欲しいのです。
293 名前:277 [2020/07/07(火) 21:25:44.85 ID:2cf+0s2v0.net] で、excelの"C3"に、4D 54 68 64を書き込んで>>277 のソースを動かして試してみたいんです。
294 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 21:26:04.88 ID:CAdbpiIn0.net] これなんか良いんじゃね https://openmidiproject.osdn.jp/Sekaiju.html
295 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 21:29:51.89 ID:CAdbpiIn0.net] midiの規格ってそんな簡単じゃないから素人が扱っても音が切れたりトラックがずれたりして 結局使えないだろ
296 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 21:32:34.47 ID:7cSgkxva0.net] ExcelのRange#valueにバイト列なんか入るわけないんだから自分がわかりやすいように文字列か数値に勝手に変換して勝手に入れろとしか言えない
297 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 21:34:29.92 ID:MaHOmhaOM.net] Excelでmidiデータを取り扱うなんて常人の発想ではない たぶんあなた以外に誰も方法はわからないから頑張ってその道の第一人者になって欲しい
298 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 21:35:25.31 ID:BPFgnJg70.net] >>292 セルに入れられるのはあくまで文字列ってこと理解してないの? その例なら「Byte(0):77 Byte(1):84〜」とかいう配列から「4D 54 68 64」という文字列にしなければセルには書き込めない Byteはそれぞれの数値が入ってるだろうけど、hexかなんかで16進数にしたうえで(編集上必要あるか知らんけど) join(array, " ")かなんかで1つの文字列にする くっそ編集しずらいだろうけどな
299 名前:デフォルトの名無しさん [2020/07/07(火) 21:44:56.92 ID:tZSrRerM0.net] 前スレのテキストフルスキャンの発想とコード提示してくれた人 改めて言わせて貰う 職場の一大イベントを乗り切ったわこれで
300 名前:デフォルトの名無しさん [2020/07/07(火) 21:46:02.99 ID:tZSrRerM0.net] 改めて多大なるお礼を言わせて貰うが抜けてた これのおかげですべての可能性が広がったわ
301 名前:277 [2020/07/07(火) 22:23:53.24 ID:2cf+0s2v0.net] では、すみません。 >>277 の質問はなしにして、↓の質問をお願いします。 1、変数に「4D 54 68 64」のバイナリデータを代入するソース 2、中身は「4D 54 68 64」だけのファイル 3、ファイル名は5ch.bin こんなファイルを作るにはどのようなソースを書けばよいでしょうか?
302 名前:277 [2020/07/07(火) 22:29:17.16 ID:2cf+0s2v0.net] >>228 allrenameというフリーソフトを使えばいいのじゃ。
303 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 22:32:51.69 ID:CAdbpiIn0.net] >>301 バイナリ編集のソフト使えばいいんじゃね
304 名前:301 [2020/07/07(火) 22:42:26.54 ID:2cf+0s2v0.net] >>303 すみません。 「VBAを使って」でした。
305 名前:デフォルトの名無しさん [2020/07/07(火) 22:43:37.27 ID:O/UE8zUS0.net] もはやExcelを使うことが目的化してる
306 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 22:44:27.22 ID:yByKJQAn0.net] それもう読み込んだデータ無意味やん フォーマット知らんけどセルに書き出せたんならファイルにもいけるやろ
307 名前:301 [2020/07/07(火) 22:54:30.10 ID:2cf+0s2v0.net] >>306 基礎になるソースさえ教えてもらえれば、そこに色々付け加えてって自分に必要なバイナリファイルが作れるんですよ。