X



Excel VBA 質問スレ Part49©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ bb2e-8SzA)
垢版 |
2017/06/26(月) 02:15:14.60ID:T3ylemnb0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512

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

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

※前スレ
Excel VBA 質問スレ Part48
http://mevius.2ch.net/test/read.cgi/tech/1494890685/

※関連スレ
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/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
0935デフォルトの名無しさん (アウアウウー Sa85-mYeN)
垢版 |
2017/08/23(水) 08:18:48.53ID:EgpJbwY2a
コードは
private sub worksheet_change(ByVal
target as range)
If target.address〈〉"A1" then exit sub
If Target = "1" then Activesheet.Tab.ColorIndex = 9
If Target = "2" then Activesheet.Tab.ColorIndex = 3
End Sub

初心者ですのでここはこうした方がいいなどアドバイスいただけると幸いです
0937デフォルトの名無しさん (アウアウウー Sa85-mYeN)
垢版 |
2017/08/23(水) 08:33:36.33ID:EgpJbwY2a
>>934
シートのタブ色変更なんですが条件付き書式でできますか?
0943デフォルトの名無しさん (アウアウウー Sa85-mYeN)
垢版 |
2017/08/23(水) 10:15:50.03ID:EgpJbwY2a
>>940
ご教示下さい
0944デフォルトの名無しさん (アウアウウー Sa85-mYeN)
垢版 |
2017/08/23(水) 10:23:11.79ID:EgpJbwY2a
>>941
動きませんでした
0945デフォルトの名無しさん (アウアウウー Sa85-mYeN)
垢版 |
2017/08/23(水) 10:24:44.20ID:EgpJbwY2a
>>942
A1の数字は一定期間ごとに変化するんですがそれには対応できないということになりますか?
0947デフォルトの名無しさん (ワッチョイ 5991-7WL/)
垢版 |
2017/08/23(水) 11:13:45.38ID:yxvWLKA00
>>935
そもそも
Target.addressって絶対参照が返ってくるんじゃなかったっけ?
でもそれなら手入力でも反映されない気がするなぁ

あと、たとえばB1のセルを変更してA1の計算結果が変わったとしても
A1の数式を変更したわけじゃないから
targetにはB1が渡されるだけじゃない?

全部予想ですまん
0949デフォルトの名無しさん (アウアウウー Sa85-mYeN)
垢版 |
2017/08/23(水) 13:56:51.41ID:EgpJbwY2a
>>948
ありがとうございますどう組んでいいかわからないので
Worksheet_change
calculateを調べてみます
0950デフォルトの名無しさん (ドコグロ MMb3-x4Vn)
垢版 |
2017/08/23(水) 18:51:26.23ID:Rd2CDMDCM
A1セルの数式を変えていいならユーザー定義関数でできる
例えばA1に=Sum(B1:B2)と定義してるなら標準モジュールに
Function XXX(R As Range) As Double
Dim Result As Double
Result = Application.WorksheetFunction.Sum(R)
Select Case R
Case 1: ActiveSheet.Tab.ColorIndex = 9
Case 2: ActiveSheet.Tab.ColorIndex = 3
End Select
XXX = R
End Function
を定義してA1セルを=XXX(B1:B2)に書き換えればいい
0951950 (ドコグロ MMb3-x4Vn)
垢版 |
2017/08/23(水) 18:54:14.54ID:Rd2CDMDCM
すまんちょっと間違えてたわ
Function XXX(R As Range) As Double
Dim Result As Double
Result = Application.WorksheetFunction.Sum(R)
Select Case Result
Case 1: ActiveSheet.Tab.ColorIndex = 9
Case 2: ActiveSheet.Tab.ColorIndex = 3
End Select
XXX = Result
End Function
0953952 (ワッチョイ ed6f-2x4P)
垢版 |
2017/08/24(木) 02:23:07.38ID:gFPKAoW/0
>>935
もしA1に=SUM(B1:B2) ってなっているなら

If Cells(1, 1) = "1" Then ActiveSheet.Tab.ColorIndex = 9
If Cells(1, 1) = "2" Then ActiveSheet.Tab.ColorIndex = 3

これだけでいけた Target は変更(入力)した場所が入っているから
0957デフォルトの名無しさん (ワッチョイ 29aa-vgeI)
垢版 |
2017/08/24(木) 23:00:01.92ID:q91vBAgZ0
ADOでエクセル上にあるテーブルに接続していますが、
テキストデータを追加したり、更新したりすると先頭にシングルクォテーションが付いてしまいます。
これは仕様だと思いますが、付かないようにする方法ないでしょうか?
後から消すって方法は無しでお願いします。
0958デフォルトの名無しさん (オッペケ Sr6d-d2qD)
垢版 |
2017/08/25(金) 01:43:07.95ID:KTLmtMM0r
>>914
> エクセルアップロードして終わりとかにして欲しいんだけど。

システムへの大量レコードのアップロードって、ミスした時が大変なのよ。
アップロードするファイルを間違えたりするやつが必ずいるから。

場合によっては、システムを停めて修正しなければならなくなる。

なので、コピペによる数百件の手入力は言わば安全策。
派遣スタッフが多い職場でありがちだよね。

というわけで、手入力作業をIE制御で自動で行うツールはどうしても必要になるんだけど、エラートラップ(例外処理)をきちんと作り込まないと逆に使いづらくなるので要注意。
0965デフォルトの名無しさん (アウアウカー Sa85-HXRX)
垢版 |
2017/08/25(金) 12:46:59.96ID:4kzNGnM2a
>>956
そういう責任問題はマクロや関数使わなくても同じ話。
というか、コンピューター使ってる時点で駄目だろ。

最後は何やってもお前のコンピューターの使い方が悪いという話になる。
0966デフォルトの名無しさん (アウアウカー Sa85-HXRX)
垢版 |
2017/08/25(金) 12:55:04.81ID:4kzNGnM2a
>>958
それはそういうシステム作った奴が悪い。
いくらでも規定のフォーマットじゃなければ受け付けないシステムは作れるだろ。

CSVなんかでもカンマ区切りじゃなくて普通ならどうやってもキーボード入力出来ない文字で区切るなんてやるし。
それで区切ってなければ1行のデータ数不正で受け取らないなんて簡単。
それ以外にもチェック項目入れてEXCEL上で出力編集できるプログラム組めば良いし。
0970デフォルトの名無しさん (ササクッテロ Sp6d-Hgyh)
垢版 |
2017/08/25(金) 16:19:40.23ID:YOvDFOChp
バックアップを取ってリカバリしないの?
0972デフォルトの名無しさん (オッペケ Sr6d-d2qD)
垢版 |
2017/08/25(金) 18:24:10.85ID:KTLmtMM0r
>>966
フォーマットの問題じゃないんだよね。

アップ済みのファイルを再度アップしてしまったり、修正前のファイルをアップしたりとか、フォーマットに問題はないのでシステムは受け付けてしまう。

その辺をリカバリできるシステムにしようとするとまた莫大な金がかかるので、上はなかなか動かない。

それによってどのくらいのコスト削減あるいは利益が見込めるのか、まずは数字出さないと話も聞いてもらえないよ。
0976デフォルトの名無しさん (オッペケ Sr6d-d2qD)
垢版 |
2017/08/26(土) 07:22:16.86ID:vvYv5Hier
>>974
一応、ファイルのフォーマットにはユニークなカラムはあるんだけどね。
システム側では、そのカラムはキーになってない。。。と思われ。

さすがにシステムの仕様まではわからない。
0977デフォルトの名無しさん (ワッチョイ 1d4b-rG16)
垢版 |
2017/08/26(土) 09:32:33.78ID:5dccF0/k0
>>931
ありがとうございます。
あれから色々試しましたがいくつか問題点があります。

問題1
Dim el As IHTMLElement を削除するとTDが取得出来ず、table丸ごとの取得となります。
問題2
Dim htmlDoc As HTMLDocument を削除するとエラーが出ます。
問題3
7番目のサンプルを実行するとこの部分がエラーをおこします。
objDOM.body.innerHTML = objXML.responseText

問題1についてtableデータ丸ごとでも取得後必要箇所を抜き出せばいいので用は足せます。
変わらなければそのままいこうと思っていますが相手サーバーへの負担は増えるのでしょうか?

問題2について削除しなければ問題ありませんがxml化時に下記3箇所をどのように記載を変更すればいいでしょうか?
Dim htmlDoc As HTMLDocument
Set htmlDoc = objIE.document
Set colTable = htmlDoc.getElementsByName("oppai")

問題3について下記の("htmlfile")が原因かと思ったのですがこのままでいいでしょうか?
それとも何かのシート名を入れるのでしょうか?
Set objDOM = CreateObject("htmlfile")

毎度すいませんがよろしくお願い致します。
0978デフォルトの名無しさん (ワッチョイ 86aa-oTLP)
垢版 |
2017/08/26(土) 13:59:12.95ID:1Xp/S2sl0
>>958
>システムへの大量レコードのアップロードって、ミスした時が大変なのよ。
>アップロードするファイルを間違えたりするやつが必ずいるから

人間は、必ず間違うから、絶対に回復機能が必要。
普通は、バックアップ・スナップショット機能で、前の状態へ戻れる

銀行では、アルバイト3人が、同じデータを入力する。
3人とも同じ金額の時だけ、合格

バリデ、validation
0982デフォルトの名無しさん (ワッチョイ 0a11-xpGE)
垢版 |
2017/08/26(土) 16:55:31.30ID:azDqTcfP0
>>972
>アップ済みのファイルを再度アップしてしまったり、修正前のファイルをアップしたりとか、

間違ったと気づいた時点でオペレータ自身が元に戻せるような仕組みを作るのはそれほど難しくないよ
手動でExcelを修正するステップやその前のステップを含めてシステム化するのが理想ではあるだろうけどね

ただ100~300万くらいのお金を莫大な金と言ってるんであれば自力で頑張るしかない
担当が変われば元の木阿弥だし、本来機械にやらせるべき仕事を人間がやってることによる逸失利益を加味したら安い買い物
0985デフォルトの名無しさん (ワッチョイ 0a11-xpGE)
垢版 |
2017/08/26(土) 17:49:54.05ID:azDqTcfP0
>>983
ははは、言いたいことはわかるけどそれは客が要件をすべて決めると思ってるやつの発想
費用に応じて提供出来る内容を変えてあげればいいだけ
そういう調整が出来ない人ばっかりだと苦労するよね

まあそこは論点じゃなく莫大な費用がかかると思ってるのは解決方法の選択肢が見えてないだけで
思ってるほどの費用がかからない方法も有るよってことよ
VBAのかわりにスクリプト書くだけなら100万もいらんし
0986デフォルトの名無しさん (ワッチョイ 0a11-xpGE)
垢版 |
2017/08/26(土) 17:55:27.18ID:azDqTcfP0
>>984
それは今でも発生しうる業務フローの問題でしょ?
誰かが確認するっていうステップが必要なだけで1件1件コピペ入力しなきゃいけないのとは別問題
確認が必要ならそのフローをシステムに取り込んであげればいい

機械で自動確認できるほうが楽だけどそれは必須じゃないじゃん
0988デフォルトの名無しさん (ワッチョイ ca11-+ULf)
垢版 |
2017/08/26(土) 18:39:24.64ID:O53zOlu10
>>985
> まあそこは論点じゃなく莫大な費用がかかると思ってるのは解決方法の選択肢が見えてないだけで
だから要件も見えてないのに選択肢が見えるわけないだろ w
>>984の件も数件なら後追いで修正できるけど1万件とかになると破綻するとかあるだろうし
0993デフォルトの名無しさん (ワッチョイ 3e1e-CSD/)
垢版 |
2017/08/27(日) 02:42:06.83ID:L7AzHdYH0
>>914
> こんなのはスクリプトでも手作業でもなく、エクセルアップロードして終わりとかにして欲しいんだけど。
と書いた時から、サーバ側も巻き込んだシステム全体の話になってしまって
このスレの範疇を越えるものになったんだろうな
それは多分「単純作業をVBAでなんとかしたい」と思ってただけの>>914にとって
「そんなことを議論されても俺にはどうしようもない・・・」と思ってると思う
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 62日 11時間 19分 6秒
レス数が1000を超えています。これ以上書き込みはできません。

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