2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

VBAなんでも質問スレ Part2

1 :デフォルトの名無しさん:2015/05/21(木) 10:52:44.71 ID:KLv0vQmm.net
VBAを使った質問ならなんでもござれ
本来の対象であるオフィスアプリを操作する以外の話もOK

ゲーム作り、Webアクセス、外部アプリの操作
COM(ActiveX)、Win32API、.NET Framework、DirectXなどなど
VBAで実行するものであればなんでも質問してください

VBAを開発環境としていろいろ作っちゃいましょう

前スレ

VBAなんでも質問スレ
http://peace.2ch.net/test/read.cgi/tech/1342087380/

関連スレ

Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/tech/1419718732/

Access VBA 質問スレ Part1
http://peace.2ch.net/test/read.cgi/tech/1328536426/

VBプログラマ質問スレ(Ver.6.0 まで) part64
http://peace.2ch.net/test/read.cgi/tech/1393069842/

Excel総合相談所 118 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/bsoft/1430352555/

954 :デフォルトの名無しさん:2020/09/01(火) 22:33:35.56 ID:l37i0zd6.net
50円

955 :デフォルトの名無しさん:2020/09/02(水) 00:25:45.48 ID:aLOgXzIZ.net
余裕みて1人週

956 :デフォルトの名無しさん:2020/09/02(水) 07:41:48.93 ID:9bMNhGbM.net
>>953
マジレスするとVBAは安いので1人月50ぐらいかな。

内容の詳細が分からないが、大して難しいとは思えないので。

どんなに簡単でも50以下は有り得ない。

957 :デフォルトの名無しさん:2020/09/02(水) 12:23:19.05 ID:IJ4By44m.net
>>953
人によるだろうな
安く提示すると未経験者とかがくるぞ

958 :デフォルトの名無しさん:2020/09/04(金) 13:35:21.25 ID:YrY1uJ8P.net
皆さま回答ありがとうございました!

959 :デフォルトの名無しさん:2020/09/05(土) 14:34:31.84 ID:NQbTfPgu.net
>>946
遅レスだけど

速度が遅い件は経験ありますよ
うちの環境で調べたらSYMANTECのエンドポイントは大丈夫で、MSのディフェンダーだと遅かった
Win10のバージョンも影響したかもしれないけど、現行サポート対象バージョンは、ディフェンダーだとすべて遅い
会社のPCなんでActiveDirectory、SYMANTEC、SKYSEAがスタンダードなんだけど、更新時の不具合があったんで一部のPCでディフェンダーを使ってて発覚した
VBSの内容は、多少分岐やループはあるけど正規表現を使って置換するだけの簡単なものだった

960 :デフォルトの名無しさん:2020/09/09(水) 22:08:05.33 ID:kLG5WjnA.net
ミッションクリティカルな仕事をVBAでやってるのに、
少し前から動かなくなって修正したくても前任者がこの世に不在+仕様書やマニュアル無し+社内プログラム分かる人いない
って状況割とよく聞くけど、まあ自分が担当することになったんだけど、これどーすりゃいいの?

何社かソフトウェア開発系の会社に話聞きにいったら、vbaはちょっと・・・とか、プログラムみてこれはちょっと・・・って反応だし
1千万超える金積むとなると役員に説明しなくちゃならないんだけど、なんでおまえがやらないの?みたいな反応だし
まあ、控えめに言ってこのまま止まり続けると会社潰れるから言い値で出すしか無いんだろうけど
こういう状況、ここに巣喰う人達はどうやって乗り越えたのかアドバイスやヒントください

転職、以外で

961 :デフォルトの名無しさん:2020/09/09(水) 22:09:54.34 ID:vVw6LQjX.net
ミッションクリティカルなのに止まっても平気なのか
不思議な世界観

962 :デフォルトの名無しさん:2020/09/09(水) 22:58:18.76 ID:sZuFJhML.net
>>960
素人が作っためちゃくちゃなコードのデバッグや修正は仕事でもやってるからあんまり困ったことない
言語も問わず引き受けてる

963 :デフォルトの名無しさん:2020/09/09(水) 23:15:38 ID:kLG5WjnA.net
>>962
すげえ
社内システム作ってるところとかつてで色んなところに聞きいったけど数百万じゃ難しいって言われたんだ
分かる人には難しさっていうか、見積もりがわかるもんなんだな
参考までにどういうところを見て判断するもんなの?
偉い人に説明するときの参考にしたい

964 :デフォルトの名無しさん:2020/09/10(木) 01:17:25.37 ID:Uj/ZEArt.net
>>963
変数名、インデント、コメントの入り方なんかを見れば、制作者のレベルがだいたいわかる
その上でソースの行数、モジュール数がどれぐらいか

965 :デフォルトの名無しさん:2020/09/10(木) 01:28:39.24 ID:R4ATSmnt.net
マクロの記録をベースにしてるのは危険な感じがする
あとループの中にgotoが入ってるやつ見たときはちょっと感動した

966 :デフォルトの名無しさん:2020/09/10(木) 01:35:20.13 ID:fOUD4fUU.net
vba捨ててまともなところに新しくシステム作ってもらった方が安いし早そう

967 :デフォルトの名無しさん:2020/09/10(木) 01:38:51.21 ID:JZj4+m/A.net
それだと社内で仕事が無くなるおっさんたちが文句言い出す

968 :デフォルトの名無しさん:2020/09/10(木) 12:15:12.05 ID:dws80o57.net
住宅で喩えるなら  地場でイチから設計・施工をする在来工法のパワービルダーや
社内で設計した通り加工し現地で組み立てるだけのハウスメーカー 又は方式は
一緒だけどコスト削減に特化して現地の安い下請け使って費用を抑えるローコスト系

システムを売りにしてる企業は上で言うHMに近く、依頼すればひと声一千万は相場
PBはどんどん規模が縮小してるから探すのも大変 LCHMなら見付かるかも知らんが
要求に応じかねるレベルだと思われる

当時の社内の人間が内製したレベルならその条件、例えばExcelVBAと絞って
改修・修繕の可不可(得意かどうか)を先ず相手に問えば話が早いかも知れない
業務内容を伝えるだけだとうまく伝わらずに高額商品を売る方向に話が進み兼ねない

969 :958:2020/09/10(木) 12:19:21.40 ID:Oh+8RCfx.net
>>964
はえ〜・・・なるほどなぁ
変数名は一応業界の人なら意味が分かる程度
インデントはルールから逸脱してるのはほぼない、とおもう
コメントはあることはあるけど助けられたコメントはほぼないな
'ここで●×処理をする Sub ●×処理(・・・・・・・) みたいなw
行数はただの改行も含めると3万行くらいで
モジュールが4、functionが500、subが1500くらい

この辺が大量にあるから難しいって説明しようとしてたんだけど
数行(ステップ?)なら別にF8ポチポチしながら追えるんだよね
じゃあ足りないのは根気だろ、みたいに言われて循環複雑なんちゃらみたいなの調べてたけど
結局こんな数字だしても理解されないだろうしなぁってのと、単に俺が素人だからってのもあって今に至る

>>966
マジそれなんだけど、何をしてるのか誰もわかんないから何を作ってもらえば良いのかも説明出来ないっていうねw
世間で言われてる炎上案件よりよっぽどかわいいレベルなのかも知れないけど
マジであと数ヶ月放置して会社潰れればいいんじゃねーかとも思ってる

970 :958:2020/09/10(木) 12:20:28.24 ID:Oh+8RCfx.net
>>968
おっと、同じ人かもしれんけどありがとなあ

971 :デフォルトの名無しさん:2020/09/10(木) 12:36:48 ID:l+lun8zf.net
>>963
わかんねーから高めに見積もってんだよ

972 :デフォルトの名無しさん:2020/09/10(木) 13:19:24.92 ID:4mlwjCSe.net
>>969
他人の作ったプロシージャを2千個3万行解析してドキュメントを作成しながらデバッグなら1千万はまあまあ妥当かと
設備投資でたった1千万が出せない会社は遠からず潰れると思うよ
ほかの資産や設備だって千万単位の修理はいつ発生してもおかしくないし

973 :デフォルトの名無しさん:2020/09/10(木) 22:45:47.73 ID:Oh+8RCfx.net
>>972
詳しい人にそう言ってもらえるとたすかる
とりあえず素人がやるもんじゃ無いって話は集めたので素直に金だせやって資料作ってるw
しかし1千万つめばできちゃうってのもすげーなあ
個人にとっては大金だけど、会社にとっては中堅社員一人分/年くらいの費用だもんな

974 :デフォルトの名無しさん:2020/09/11(金) 11:34:11.36 ID:LThuGd0x.net
解析・デバッグ・ドキュメント作成でひと声一千万?
じゃ、せっかく解析できたんだしそれをベースに新システム製作費は?
パッケージから大きく外れるものだったらオリジナル新規作成?千万? 都合?千万?

せっかく途中まで分析し始めたようだし「わたしに二千万ください、これやります」でいーじゃん

975 :デフォルトの名無しさん:2020/09/11(金) 19:07:30.23 ID:0mQCTSsr.net
>>974
日本語で

976 :デフォルトの名無しさん:2020/09/13(日) 14:01:55.06 ID:AJy8UwEC.net
>>974
やり方教えてくれww
まあ1千万超えは最低限な感じだね
今起きてる障害を直すだけだけどね

977 :デフォルトの名無しさん:2020/09/13(日) 18:15:28.87 ID:/EQXGeQJ.net
業務止まってるのにのん気だな
せめて地方と業務とアプリぐらい概略書けば誰かがどこかを紹介するかも知れんぞ
アプリはAccessと踏んだが、どう?
どうせこのご時世、近場でなくともZoomやらでリモートしたりでのサポートだろうし

978 :デフォルトの名無しさん:2020/09/16(水) 23:50:50.45 ID:249cxrEP.net
結局余所に投げる方向で解決した
乗り越えられるものとそうじゃないものを見極めるのも大切と思い込むことにした
なお費用は想定の2倍近くになる模様w
みんなアドバイスありがとう

979 :デフォルトの名無しさん:2020/12/20(日) 00:10:44.84 ID:14Mj/Q6q.net
>>965
> ループの中にgotoが入ってるやつ見たときはちょっと感動した

Continue 文が無いメジャーな言語があってな。
GoTo Continue1
とか、書くときの隔靴掻痒感と言ったらもう・・・。

980 :デフォルトの名無しさん:2020/12/25(金) 06:38:58.19 ID:wEXLIZpl.net
もしかしてフィルタで非表示になってるセルってVBAで値参照できない?

981 :デフォルトの名無しさん:2020/12/26(土) 04:11:48.30 ID:NJB8+QKa.net
>>980
自己解決

982 :デフォルトの名無しさん:2021/05/14(金) 13:33:45.79 ID:Kf/7Ycdt.net
WordのVBAで質問させてください。
文書内の2種類の括弧「」『』の中にある改行だけを削除するマクロを作りたいと思っています。

例えば以下のような文章に対してマクロをかけたときに
「み

ん」





「り




以下のような結果になるマクロです。
「みかん」





「りんご」

つづきます

983 :デフォルトの名無しさん:2021/05/14(金) 13:34:48.74 ID:Kf/7Ycdt.net
Sub 括弧内の改行を削除()
Dim myRange As Range
Set myRange = ActiveDocument.Range(0, 0)
With myRange.Find
.Text = "[「『""]*^13*[""』」]"
.Forward = True
.Wrap = wdFindStop
.MatchWildcards = True
Do While .Execute = True
With myRange.Find
.Text = "^13"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchFuzzy = False
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
DoEvents
End With
Loop
End With

Set myRange = Nothing
End Sub

984 :デフォルトの名無しさん:2021/05/14(金) 13:35:33.64 ID:Kf/7Ycdt.net
自分なりに以上のようなマクロを組んでみたのですが、実行してみると、
最初の「みかん」の改行は削除されるのですが、そのあとの「りんご」の改行が削除されません
やり方をお教えいただけると助かります。

985 :デフォルトの名無しさん:2021/05/14(金) 13:58:15.10 ID:dwsPOlKo.net
馬鹿には無理

986 :デフォルトの名無しさん:2021/05/14(金) 20:08:25.19 ID:YZr2qR8x.net
正規表現使えば一発じゃん。
VBAって正規表現使えるんだっけ?

987 :デフォルトの名無しさん:2021/05/14(金) 20:22:39.22 ID:pWuJPMFY.net
RegExpオブジェクトを使えば。
面倒だから俺はどうしてもというとき以外は使わない。

988 :デフォルトの名無しさん:2021/05/14(金) 20:24:37.07 ID:6X3W89ka.net
Wordなら最初から正規表現もどきが使えるから、Excel VBAよりはちょっとだけ楽に文字列操作ができる

989 :デフォルトの名無しさん:2021/05/15(土) 04:20:48.68 ID:rI+eK0KL.net
>>984
正規表現でマルチラインを設定して改行を空文字に置換
RegExpオブジェクトの使い方は、他の言語より面倒な書き方だったりするけど文字を操作するなら必須だと思うよ

990 :デフォルトの名無しさん:2021/06/10(木) 19:25:30.25 ID:CLREf/YK.net
splitでいい感じに分割して判定してreplaceで改行無くしてくっ付けろ
「」は自分でつけたせ

991 :デフォルトの名無しさん:2021/08/25(水) 17:06:39.36 ID:qYcBJ8fd.net
あんま実験してないから文句いうなよ
まずはさ、アホでも考えられるような地道な形でやるべきだと思うわ
そのあとに、効率性とか考えて無駄排除したりすればいいわ

Sub MainProcess()
Dim text As String
text = Sheet1.Cells(1, 1) 'A1に括弧が含まれる文字列をいれろ

Const right1 As String = "「"
Const left1 As String = "」"
Const right2 As String = "『"
Const left2 As String = "』"

text = MakeText(text, right1, left1)
text = MakeText(text, right2, left2)

'B1に結果が返ってくるぞ。途中結果はメッセージボックスで順次表示されるからループ終わるまで何度もOKおせ
Sheet1.Cells(1, 2) = text
End Sub

992 :デフォルトの名無しさん:2021/08/25(水) 17:06:59.82 ID:qYcBJ8fd.net
>>991の続き 
Function MakeText(text As String, rightChar As String, leftChar As String) As String
Dim startPosition As Integer
Dim endPosition As Integer

Dim InstrStartPosition As Integer
InstrStartPosition = 1

Do While InStr(InstrStartPosition, text, rightChar) <> 0
startPosition = InStr(InstrStartPosition, text, rightChar)

If startPosition <> 0 Then
endPosition = InStr(startPosition + 1, text, leftChar)
End If

Dim midText As String
midText = Mid(text, startPosition, endPosition - startPosition + 1)
Dim midTextChanged As String
midTextChanged = Replace(midText, vbLf, "")

text = Replace(text, midText, midTextChanged)

InstrStartPosition = startPosition + Len(midTextChanged)

MsgBox "無限ループになっちゃった時はctrl + Breakを押せ" & vbCrLf & vbCrLf & text
Loop
MakeText = text
End Function

993 :デフォルトの名無しさん:2021/08/25(水) 17:07:53.23 ID:qYcBJ8fd.net
つかさ、rightとleftが逆だったわ
まぁ動くからいいわ

994 :デフォルトの名無しさん:2021/08/25(水) 17:18:37.37 ID:qYcBJ8fd.net
あれだ、最期の方に「だけが単独であると無限ループだわな
ループの条件にその辺の修正いれておいてくれ

もう寝る

995 :デフォルトの名無しさん:2021/08/25(水) 17:34:31.79 ID:qYcBJ8fd.net
おっきした
>>992を↓に修正
Function MakeText(text As String, rightChar As String, leftChar As String) As String
Dim startPosition As Integer
Dim endPosition As Integer
Dim InstrStartPosition As Integer
InstrStartPosition = 1
Do While InStr(InstrStartPosition, text, rightChar) <> 0
startPosition = InStr(InstrStartPosition, text, rightChar)
If startPosition <> 0 Then
endPosition = InStr(startPosition + 1, text, leftChar)
End If
Dim midText As String
midText = Mid(text, startPosition, endPosition - startPosition + 1)
Dim midTextChanged As String
midTextChanged = Replace(midText, vbLf, "")
text = Replace(text, midText, midTextChanged)

InstrStartPosition = startPosition + Len(midTextChanged)
MsgBox "無限ループになっちゃった時はctrl + Breakを押せ" & vbCrLf & vbCrLf & text

Dim textForCheck As String
If textForCheck = text Then
MakeText = text
Exit Function
End If
textForCheck = text

Loop
MakeText = text
End Function

996 :デフォルトの名無しさん:2021/08/28(土) 10:10:42.16 ID:rHnN1cM5.net
動けば良いんだよ

997 :デフォルトの名無しさん:2021/08/28(土) 12:36:26.70 ID:3DqqBWFs.net
腕が重くて

998 :デフォルトの名無しさん:2021/09/01(水) 00:13:05.25 ID:7BIbcRgh.net


999 :デフォルトの名無しさん:2021/09/01(水) 00:13:11.43 ID:7BIbcRgh.net


1000 :デフォルトの名無しさん:2021/09/01(水) 00:13:18.16 ID:7BIbcRgh.net


1001 :デフォルトの名無しさん:2021/09/01(水) 00:17:13.66 ID:7BIbcRgh.net


1002 :小倉優子 :2021/09/01(水) 00:17:27.14 ID:7BIbcRgh.net
  ∧,,,∧ 
 (  ・∀・) 1000ならジュースでも飲むか
  (    ) 
  し─J 

1003 :2ch.net投稿限界:Over 1000 Thread
2ch.netからのレス数が1000に到達しました。

総レス数 1003
326 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★