X



Excel VBA 質問スレ Part50 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 7e6d-ffY6)
垢版 |
2017/08/27(日) 12:40:17.57ID:LjjEWylk0
!extend:checked:vvvvv:1000:512

スレ立ての際は一行目に
!extend:checked:vvvvv:1000:512
と入れてスレ立てして下さい

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

※関連スレ
VBAなんでも質問スレ Part2
http://mevius.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://mevius.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 126
https://mevius.2ch.net/test/read.cgi/bsoft/1496487719/

※前スレ
Excel VBA 質問スレ Part49©2ch.net
http://mevius.2ch.net/test/read.cgi/tech/1498410914/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
0649デフォルトの名無しさん (ササクッテロラ Sp45-97Ee)
垢版 |
2017/10/13(金) 12:26:29.21ID:h1mGc1nrp
>>648
オフィスが許可されてるならvbaも許可されてるんじゃないの?

未許可プログラム禁止の理由はライセンスとかセキュリティとかが主な理由だと思うけど
ほかに何かある?
0650デフォルトの名無しさん (スプッッ Sd63-AvbY)
垢版 |
2017/10/13(金) 12:48:20.61ID:rxTt3wqUd
俺の知ってる会社でネット完全遮断のとこあるよ
とあるジャンルで世界トップのメーカーだからセキュリティがめっちゃ厳しい
建物に入る前に所持品チェックがあるしスマホやケータイは持ち込み禁止

ネット上のデータや情報が欲しい時は専門の部署に内容やURLを連絡して結果を知らせてもらうシステム
すごく効率が悪いと思うけど、それぐらいしないと機密が守れないそうだ
0651デフォルトの名無しさん (ワッチョイ 11b9-89ZN)
垢版 |
2017/10/13(金) 12:49:48.49ID:fnGHp6s50
>>649
VBAはオフィス製品を拡張するのが本来の役割だから、その範囲なら認可されていると言える。

表計算ソフトで(標準的に備わっていない)データベース処理させたり、データベースソフトで波形分析させたりといった、
そういう用途は厳密にはアウトなはずなんだけどVBA使う人間のほとんどがそういう本来用途から逸脱した使い方をするので、
この辺りの線引きが他のプログラムと曖昧になるから混乱するのではないだろうか。
0652デフォルトの名無しさん (ササクッテロラ Sp45-97Ee)
垢版 |
2017/10/13(金) 12:57:07.42ID:h1mGc1nrp
>>651
VBAを使う人の殆どがって
何か調査結果とかあるの?
0653デフォルトの名無しさん (ワッチョイ 11b9-89ZN)
垢版 |
2017/10/13(金) 13:05:46.99ID:fnGHp6s50
>>652
本来用途的な使い方をする場合はVBA利用する必要が無いくらいには機能が揃ってるっていうのと、
このスレで他のプログラムが使えない事に対する明確な回答が出ない辺りからの推測だけど。

だいたいこのスレでも「お前が詳しいのはVBAであってエクセルではない」という戒めの言葉がたまに出るくらいだし。
0655デフォルトの名無しさん (アウアウカー Sad5-EduE)
垢版 |
2017/10/13(金) 15:27:59.93ID:qTuikjwpa
本来用途?
随分おかしなこというんだな。
何をやろうがそれが本来用途だろ。

アウトかどうかなんて結局は責任の問題だ。
セル操作でさえ会社に損害を与えることができるし、嫌だったらVBAを使うの辞めろ。

フリーソフトが問題なのは責任を問えないからだ。
VBAで問題が起きた時に、作った奴や部署が責任を取ることになるのはどんなVBAでも同じこと。
だから良く知りもせずに結果だけをコピペする奴は迷惑なんだ。
仕組みを理解すれば何をやっててもセルの操作と同じだ。
部署として作った奴を信用するかしないかの問題。
或いは部署として危険なコードか安全なコードかと判断できるかどうか。
0656デフォルトの名無しさん (ワッチョイ 9933-BSx0)
垢版 |
2017/10/13(金) 15:39:50.72ID:Lgor6t1j0
>>654
おれもVBAでIE操作してクロールとかやってるけど、
趣味程度にプログラムをやってるだけなのでプログラム環境がVBAだけなんだよね
あと、取ってきたデータをそのままExcelに入れ、フィルタやソートを使ってデータ編集できる点も便利だよ
0658デフォルトの名無しさん (ワッチョイ 13d2-HnJS)
垢版 |
2017/10/13(金) 16:53:46.60ID:mP5bG6AS0
ExelVBAで、テキストファイルの書き出しをスレッドで行いたいですが、どうにかすれば
可能なものでしょうか?
Yes/Noだけでもいいので教えてください。
0664デフォルトの名無しさん (ワッチョイ 13eb-97Ee)
垢版 |
2017/10/13(金) 19:23:32.28ID:BvXBfgEq0
ブラウザからデータを取ってきた後の処理がエクセルだと簡単だからVBA使うんじゃね

またはその逆
0665デフォルトの名無しさん (スプッッ Sd73-MKW1)
垢版 |
2017/10/13(金) 19:27:32.12ID:CVhYo9e6d
なんてわざわざブラウザ操作を挟むのかねえ
0666デフォルトの名無しさん (ワッチョイ 13eb-97Ee)
垢版 |
2017/10/13(金) 20:04:09.22ID:BvXBfgEq0
>>665
動的コンテンツとかもあるからとかかな
0667デフォルトの名無しさん (ワッチョイ 3396-z1uI)
垢版 |
2017/10/13(金) 20:05:44.35ID:7qyJlnS60
ブラウザからデータ抜き出すには何が一番適してるん?
0668デフォルトの名無しさん (ワッチョイ 13eb-97Ee)
垢版 |
2017/10/13(金) 20:11:42.14ID:BvXBfgEq0
>>667
適してるってどんな基準で比較するのかによるんじゃね

どれもDOM操作するとかだろうから大して変わらない
自分の得意な言語でやればいいと思う
0672デフォルトの名無しさん (アウアウカー Sad5-EduE)
垢版 |
2017/10/14(土) 15:22:42.26ID:+KU804tRa
>>661
スレッドを扱うことはできる。
不安定ですぐ落ちるだけ。
セルを触った途端に落ちると記憶している。
気をつければそこそこ安定してできることもあると思ってる。
Msgboxのボタンを押すようなことなら落ちないと思うけどプロセスでも同じことはできるからメリットを感じない。

>>667
InternetExplorer.Applicationは遅いと思う。
MSXML2.XMLhttpとかhtmlfileの方が速い。
ただし情報取得以外にクリックするとか操作するならInternetExplorer.Applicationを使うことになるかな。
Seleniumとか外部のオブジェクトは使わないんだよね。
0673デフォルトの名無しさん (ササクッテロル Sp45-MeUd)
垢版 |
2017/10/14(土) 16:29:13.95ID:EZ8Tpyvpp
>>672
selenium使うならvbaは選択しないと思う

データ処理し易いからエクセル→VBA
クリックしたり操作しながら動的データを取るからブラウザ操作

python sqliteとか使う手もあるけど
実現したい事はどの手段でも実現できる
0674デフォルトの名無しさん (ワッチョイ 131e-89ZN)
垢版 |
2017/10/14(土) 21:22:12.43ID:/BK34hqS0
ちょっと教えてください。ワークブックに含まれているマクロを起動時に実行する時
ThisWorkbookのWorkbook_Open()
あるいは標準モジュールでもauto_open
のどちらでも出来るような気がするんですけど、全く同じと考えていい?それとも何か違いがあるの?
0688デフォルトの名無しさん (スプッッ Sd73-8plx)
垢版 |
2017/10/17(火) 18:54:28.25ID:x5EvbHpMd
APIでフォームに線を書くまで行けました。
フォームに形状入力してFINDで検索して該当した行を右に空になるまで線を書き続けるコードにしました。
最初の一桁の数字は方向。4が左、6
が右という風に指示してます。

開始原点指定して、
線をLINETOで書いてて書いたらその近くにテキストボックスをADDで追加したいんですが、LINETOで指定した原点位置とテキストボックスのトップ、レフトで指定した位置がちょっとズレるのはなんかあるんですか?

https://i.imgur.com/FVhURv8.jpg
0689デフォルトの名無しさん (ワッチョイ 199f-mxX+)
垢版 |
2017/10/17(火) 20:25:29.97ID:vT3liOjV0
秒単位で記録されてる1日分で数万件の動作ログから、時系列かつ動作種類別の棒グラフ的な物を作りたいんだけど、、、
仮に横棒にするとして一時間単位に別ても3600セルも必要になるわけだけど、こういうのってどうするのが良いの?
0690デフォルトの名無しさん (ワッチョイ 13eb-MeUd)
垢版 |
2017/10/17(火) 21:06:12.48ID:T7W1uv5q0
>>689
ピボット
0694デフォルトの名無しさん (ワッチョイ fb8a-BSx0)
垢版 |
2017/10/18(水) 12:13:09.98ID:f7VGWmsn0
横棒グラフ的 じゃなくて横棒グラフそのものを作りゃいい
何故セルをグラフとして使うのかの理由が判らんと何ともいえないが
毎秒すべてのデータが必ず必要とも思えんが、間隔変えれば概略にできるし
特異点を知りたい とかなら数値を基準に求めるものだろうし、その部分の
前後をピックアップして表示するようにして なるべく判りやすいものに
するのがグラフ化の目的なんでは
0696デフォルトの名無しさん (アウアウカー Sad5-EduE)
垢版 |
2017/10/18(水) 14:36:19.68ID:ra0RBv56a
>>688
試して無いから何とも言えんが、クライアント領域関連か、座標系の違いかな。
GetClientRectとかTwipsPerPixelでググってみる。違ったらごめん。

>>689
説明が分かりにくい。
3600のセルにデータが取れてるならそれを指定すれば良いということになる。
多分、3600セルという多量のデータだから適当な所で折り返してて1時間の00:00秒から59:59秒の流れを持ったまとまりとして認識させることが出来ないとかかな。
良く分からんが各秒の値でプロットする訳じゃ無いわけだし、平均とか取るもんじゃないの?
0697デフォルトの名無しさん (ワッチョイ ddb3-aYWJ)
垢版 |
2017/10/19(木) 21:49:18.11ID:7IrXkeDg0
ビットコインの公開APIから値段を取る方法ってありませんかね
パワークエリ使ってたんですがプロトコル障害で使えなくなってしまい....
0698デフォルトの名無しさん (ワッチョイ 3a19-7unl)
垢版 |
2017/10/20(金) 07:03:05.09ID:3rm9dGiJ0
フォルダ内にあるファイルのすべてを対象に、
ファイル名の最後を「_ou.mp4」に変更するマクロを作ってください。お願いします。

例)〇〇.mp4 → 〇〇_ou.mp4
0700デフォルトの名無しさん (ワッチョイ 7aeb-KyXl)
垢版 |
2017/10/20(金) 07:36:34.81ID:wf1d5/480
>>697
公開APIのプロトコル障害なら公開APIでは取れないって事じゃないの?
0701デフォルトの名無しさん (ワッチョイ 7aeb-KyXl)
垢版 |
2017/10/20(金) 07:37:08.93ID:wf1d5/480
>>698
ココナラで買え
0704デフォルトの名無しさん (ワッチョイ d680-gbX+)
垢版 |
2017/10/20(金) 09:16:48.80ID:h7aVEIq70
ls | Where-Object { $_ -like "*.mp4" -and $_ -notlike "*_ou.mp4" } | Rename-Item -WhatIf -NewName { $_ -replace '\.mp4$','_ou.mp4' }

PowerShell で書いたので、そのフォルダへ移動してから実行して。
-WhatIf が付いているので、本当には実行せずに、結果だけを見れる。
本当に実行する際は、-WhatIf を削除して実行して

-like は一致するもので、-notlike は一致しないもの。
正規表現の \.mp4$ で、. に \ を付けているのは、
. の特殊な意味をなくして、普通の文字として扱うため(エスケープ)

x.mp4 → x_ou.mp4

ただし、x.mp4, x_ou.mp4 が、同じフォルダ内にある場合は、
変換できずにエラーになるかも
0705デフォルトの名無しさん (オッペケ Sr85-2MXH)
垢版 |
2017/10/20(金) 12:21:32.47ID:GcA5ZrMsr
パワーシェル面倒くさw
0708デフォルトの名無しさん (アウアウオー Sae2-7O3d)
垢版 |
2017/10/20(金) 13:06:50.73ID:gM7OZlf+a
>>699
filesystemobjectのインスタンス取得
フォルダ取得
フォルダ内のファイルを精査
mp4のみ抽出
拡張子取得
拡張子を除いて指定の文字列を追加した文字列を取得
ファイル名変更

これでわかれ
0710デフォルトの名無しさん (ワッチョイ cee7-bcII)
垢版 |
2017/10/21(土) 00:29:32.54ID:YcOLTnbA0
explorerのアドレス欄にcmd入れて
ren *.mp4 *_ou.mp4
とかじゃなかったっけ
0711デフォルトの名無しさん (ワッチョイ cee7-bcII)
垢版 |
2017/10/21(土) 01:08:37.57ID:YcOLTnbA0
制約があったか じゃ3行で
ren *_ou.mp4 *._oump4
ren *.mp4 *_ou.mp4
ren *._oump4 *_ou.mp4
0712デフォルトの名無しさん (アウアウカー Sadd-2iY5)
垢版 |
2017/10/21(土) 14:00:51.60ID:zr63QsaMa
質問失礼します
あるフォルダ内に数千件のファイルが格納されていて、そのフォルダに新規ファイルが入ってきたときにそのファイルを抽出(ファイル名を取得)したいのですが一番高速に処理を行うにはどうしたらいいでしょうか
0721デフォルトの名無しさん (オッペケ Sr85-37LT)
垢版 |
2017/10/21(土) 16:56:56.02ID:Uf1MTp5vr
白雪姫?
0723デフォルトの名無しさん (ワッチョイ 7aeb-KyXl)
垢版 |
2017/10/21(土) 19:08:51.19ID:Py32WHo50
>>712
基準となる時点のファイル名一覧をシートに記録しておく
比較時点のファイル名一覧を別のシートに記録する
vlookupとかで同じファイル名があるか調べる
0726デフォルトの名無しさん (ワッチョイ bab3-DBD/)
垢版 |
2017/10/21(土) 21:48:50.23ID:ZBz0JWdz0
>>712
フォルダをモニタリングするツールが色々とあるからそれ使うといいよ
たいていファイルシステムイベントで処理してるから
自分で比較するのに比べれば数桁高速だと思う
0727デフォルトの名無しさん (ワッチョイ bab3-DBD/)
垢版 |
2017/10/21(土) 22:03:01.22ID:ZBz0JWdz0
>>720
それよく分からないから教えて。

例えば
Set minuend = Union(Range("C3", "D5"), Range("D4", "E6"))
Set subtrahend = Range("A2", "A4").EntireRow
Set expected = Union(Range("C5", "D5"), Range("D5", "E6"))
の場合に
minuend - subtrahend = expected になるようにしたいんだけど
0729デフォルトの名無しさん (ワッチョイ 3dea-REa2)
垢版 |
2017/10/21(土) 23:00:04.56ID:MeuVmzom0
勝手にインストールできないなら許可貰えば済む話なのにな
業務上必要なら許可降りるだろ
0732デフォルトの名無しさん (ワッチョイ ddb3-0MKJ)
垢版 |
2017/10/22(日) 01:10:16.60ID:ZsHOZNag0
それ作って給料もらってる人がこの板にいるわけない。
せいぜいマ板がいいところ。
0733デフォルトの名無しさん (ワッチョイ 9ae3-5n8Z)
垢版 |
2017/10/22(日) 01:15:09.08ID:3ymZg3xq0
>>712
ロバストコピーでフォルダのコピー
その際に何を新たにコピーしたのかをログに書き出すオプションを設定しておく
そのログを読みこんで後はお好きに処理
勝手に上書きされたり、勝手に消されてもバックアップ取れてて一石二鳥
0736名無しさん@そうだ選挙に行こう! Go to vote! (ワッチョイ f9f7-lW13)
垢版 |
2017/10/22(日) 10:06:24.11ID:ASqT9k9u0
日記

今まで動いてたマクロがエラーで止まった
テキストファイルの内容を調べてリネームするだけの簡単な物なのに、調べたらファイル名にユニコードが入ってた
10年ぐらい前に作った物なので、今さら対応するのめんどくさいなあ。これも時代か

どうせ台風でヒマだからちょっとやってみるか
0738名無しさん@そうだ選挙に行こう! Go to vote! (ワッチョイ baa4-V3Kl)
垢版 |
2017/10/22(日) 19:16:04.56ID:bE/NxZx30
>>737
自己紹介ですか加齢臭ジジイさん
0740デフォルトの名無しさん (ワッチョイ 5103-2MXH)
垢版 |
2017/10/22(日) 22:49:10.62ID:Nb0y5KGU0
突然のヒマシジイvs加齢臭ジジイ対決w
0741デフォルトの名無しさん (スップ Sd9a-2TS2)
垢版 |
2017/10/23(月) 18:08:04.19ID:iGj4ThY4d
フォルダに複数のシートが入っていて、それぞれ○○.xls(○は名字)のファイルがあって、それの○○(○は名字)のシートのみを繰り返し検索、抽出を繰り返すにはどうしたらいいですか?

指定シートのみ繰り返し検索の仕方をご教授お願いします。

file = Dir(path & "*.xls")

Do While file <> ""

Set book = Workbooks.Open(path & file)

For Each sheet In book.Worksheets

Set f = sheet.Cells.Find(kwd,LookIn:=xlValues, lookat:=xlWhole)

If Not f Is Nothing Then

firstAddress = f.Address

rowtar=f.row

列の転記開始。
0742デフォルトの名無しさん (ワッチョイ fa1e-U5aN)
垢版 |
2017/10/23(月) 19:29:34.06ID:hFeDPnm20
自分で勝手に名前を定義すんのやめれ。
それはシートじゃなくブックだろ

file = Dir(path & "○○(○*.xls")
で○○(○が先頭にあるファイル(この場合はブック)が取り出せるだろ?
ワイルドカードの意味判ってる?
0743デフォルトの名無しさん (スプッッ Sd7a-6gne)
垢版 |
2017/10/23(月) 19:32:17.16ID:wgR6kE8Td
確かにブックのことをシートと呼ぶ人は結構いるイメージ
0744デフォルトの名無しさん (ワッチョイ 7aeb-aYWJ)
垢版 |
2017/10/23(月) 19:36:45.84ID:dkpshLIu0
>>741
シート名が判っているなら
for each で探さなくても
set ws = Thisworkbook.worksheets(シート名)
でいい
0745デフォルトの名無しさん (アウアウカー Sadd-v+BU)
垢版 |
2017/10/23(月) 22:12:49.61ID:zesBlYdJa
>>712
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200602/06020015.txt

他にもReadDirectoryChangesWを使った外人のサンプルは動いた。
けど、スレッド作ってるから危険なコードだね。
分かってる人が使う分には良いのかも知れないけどスレッド作らない方法を模索した方が良いんじゃないかなあ。
■ このスレッドは過去ログ倉庫に格納されています

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