Excel VBA 質問スレ Part57

レス数が950を超えています。1000を超えると書き込みができなくなります。
2018/09/10(月) 21:42:39.57ID:K1uuwFLt
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK


※前スレ
Excel VBA 質問スレ Part56
http://mevius.5ch.net/test/read.cgi/tech/1534976724/
2018/11/07(水) 10:44:51.43ID:t8cEHMAy
>>889
\\端末a:\Users\Admin\Desktopみたいな感じですね、ありがとうございます

ちなみにこれは端末aでも端末a以外でもこの書き方一つで参照出来るんでしょうか
2018/11/07(水) 10:53:48.53ID:XvVrOgoe
>>890
端末aのフォルダを共有設定にしておかないとアクセスできない
共有になってれば、どのPCでもアクセスできる
エクスプローラーで共有フォルダを開いて、アドレスバーをコピペしてみると書き方が分かる
2018/11/07(水) 11:32:15.04ID:nZWGaJPv
会社なのに共有フォルダはないの?
2018/11/07(水) 11:34:31.05ID:+HyKX3eQ
>>887
基本情報はJavaやCできない文系カスならExcel選べばいいでしょ
ワークシート関数を使いこなせれば十分で、VBAなんか全く要らん
894875
垢版 |
2018/11/07(水) 20:36:23.84ID:TW51zyDp
マクロ起動でシートの切り変わりで画面がブレるというか、もう少しスムーズに動いて欲しいと感じます。
1行まるごとコピーしているので重いのでしょうか?
2018/11/07(水) 22:08:04.86ID:Qojc5OuV
配列に入れるとか?
dim a
a = sheet1.Range("コピーしたい範囲")
sheet2.Range("sheet1と同じ大きさ") = a
シート切り替える必要あんの?
896デフォルトの名無しさん
垢版 |
2018/11/07(水) 23:56:50.98ID:kdSj6Mns
text.txtの中身
1,"my name is taro"
2,""hello,world""
3,"hello,world"

これをエクセルに変換して期待値は以下としたい
どうしたらいい?

A B
1 my name is taro
2 "hello,world"
3 hello,world
2018/11/07(水) 23:58:12.32ID:Z9bNZaPm
拡張子を.csvに変えてダブルクリックしてみよう
あら不思議!
898デフォルトの名無しさん
垢版 |
2018/11/08(木) 00:00:20.32ID:+1CERcyT
ちなみに拡張子をcsvにすると以下のような変な出力になる。

A B C
1 my name is taro
2 hello world""
3 hello,world
899デフォルトの名無しさん
垢版 |
2018/11/08(木) 00:02:21.00ID:M68F6j6d
"が一個足りない
csvで"をインポートするには
"を""にして
"でくくらないといけない
900デフォルトの名無しさん
垢版 |
2018/11/08(木) 00:10:13.02ID:+1CERcyT
手順としては以下でよいか?
1. test.txtの中身を置換で「""」にマッチする箇所を「"""」として保存する
2. 拡張子をcsvにする。

期待値になったのでよしとする。
さらに一歩質問いいですか?
901デフォルトの名無しさん
垢版 |
2018/11/08(木) 00:19:54.15ID:+1CERcyT
test.txtの中身
1,"my name
is taro"
2,"""hello,world"""
3,"hello,world"

これをエクセルにして期待値として以下としたい

A B
1 (※)
2 "hello,world"
3 hello,world

B1セル内に
my name
is taro
が格納され、適切に改行が入っていることを期待。

が、csvにしたら、ちゃんと期待値になってた。。
んー、、途中で改行が入るケースではまってた記憶があったんだが、、、、。これでよしとするか。。
902デフォルトの名無しさん
垢版 |
2018/11/08(木) 00:35:58.02ID:+1CERcyT
ああ、思い出した

"がつかないケースで、改行が入っている場合

test.txtの中身
1,my name
is taro

エクセルにして期待値として以下としたい

A B
1 (※)

(※)
B1セル内に
my name
is taro
が格納され、適切に改行が入っていることを期待。

拡張子をcsvに置き換える前に、"で囲むようにすればいいが、置換でなんとかならないものか。
2018/11/08(木) 01:33:19.87ID:QHwNiY6E
ExcelのCSV読み込みでセル内改行がある場合

http://d.hatena.ne.jp/stealthinu/20170127/p1
2018/11/08(木) 07:54:15.59ID:u+iZKjOm
なんかもう最初のカンマまでの文字数だけ切り取るほうがシンプルなんじゃ
905デフォルトの名無しさん
垢版 |
2018/11/08(木) 11:52:01.74ID:rWQT8E4I
excelの3Dグラフで陰線処理ってできますか?
2018/11/08(木) 12:05:03.88ID:Yck2Cb0Y
陰毛処理?
2018/11/08(木) 14:33:21.43ID:3qqw0Iqx
>>895
それのどこに配列が絡んでるんですかね?
2018/11/08(木) 14:42:53.05ID:rBrrwKGn
>>905
昔方法探したけどできなかった


陰線処理ってエロくないのにちょっとエロく思える単語だよな
2018/11/08(木) 15:12:21.75ID:BZZI+ZYR
質問する奴も答える奴も論外で草
質問する奴はそういうスレだからともかく
答える奴が池沼なのはもう少し何とかならないか?
VBAだから無理か
910デフォルトの名無しさん
垢版 |
2018/11/08(木) 19:19:19.39ID:j6Jh7/pK
なんやプロさん同士で内紛勃発か?w
2018/11/08(木) 20:27:13.91ID:hKKyRwQm
>>907
えっ?
絡んで無いと思ってる?
今となっては初心者でも使う手法だと思うんだが。

それとも何か勘違いしてるのは俺か?
912デフォルトの名無しさん
垢版 |
2018/11/08(木) 20:30:22.05ID:j6Jh7/pK
>>911
おまえだけやプロさんw
2018/11/08(木) 20:41:38.00ID:vlGhAqs/
>>907
変数代入のときにSetステートメント使ってないから、変数にはセル値の配列が入ってるぞ
2018/11/08(木) 22:36:31.77ID:I6vRTJnd
>>871,>>872
SQLServer側でセルの権限管理???
プロ??
915デフォルトの名無しさん
垢版 |
2018/11/08(木) 22:38:08.36ID:j6Jh7/pK
プロさんにつっこんだらあかんやろ
暗黙のルールぐらい守れやカス
2018/11/08(木) 22:43:10.26ID:I6vRTJnd
そんなことより、XMLクライアントとしてのExcelを語ろうぜ
2018/11/08(木) 23:06:03.49ID:g1taMrfK
>>914
セルの権限管理なんぞサーバーから見たら何の意味もないよ
918デフォルトの名無しさん
垢版 |
2018/11/09(金) 10:17:43.12ID:46H7vVxk
http://sagawa-oki.com/
ここにアクセスしたら不審サイトであると警告が出ました。
PCに詳しい人、これどういうしくみなんですか?
オレのPCは感染したのですか?
2018/11/09(金) 10:21:06.82ID:mRKVO+Jg
yes
2018/11/09(金) 10:42:48.08ID:jWmpQO7/
>>918
もう手遅れですね
アマギフ送ってくれたら直してあげられるよ
2018/11/09(金) 14:25:59.43ID:xyt0IPos
>>916
これ興味あるんだよな
使いやすい?
2018/11/09(金) 22:13:18.94ID:GmFPY+rV
プロに聞いてみようぜ
2018/11/09(金) 22:36:34.07ID:dt2W+h7o
デザイナーが描くような美しいUMLのシェイプを生成するDSLライブラリはありませんか?
PlantUMLのエクセルバージョンのようなものを探してます
2018/11/10(土) 13:47:50.89ID:g7tZUN2t
データの持ち方はシンプルな方がいい
そうでないなら条件を明確に
925デフォルトの名無しさん
垢版 |
2018/11/12(月) 08:23:59.02ID:emJ6rSNr
901だが、
さらにおしえてほしい
textに

"please call a "phone"."

と書かれているケースがあり、これをcsvとして読みこませる前に
表記が崩れないように整形を加える。

最終的に1セル内に
please call a "phone".
が入っていればよいです。

上記を実現するための整形の流れとしてどうしたらいい?
整形後は、phoneの間に"をさらに追加する。端っこの"には手を加えない。
"please call a ""phone""."

手作業ではなく、置換で自動化したい
2018/11/12(月) 09:22:19.42ID:CGIJA+ER
そういうのはCSVとして読み込むんじゃなくて、自前で構文解析した方が良い。
この程度なら難しく無いでしょ。
2018/11/12(月) 09:52:07.52ID:zyHWT4B/
>>925
正規表現置換の使えるエディタで
検索パターン
([^\,\"]+?)\"{1}([^\,\"]+?)
置換後
\1\"\"\"\2
などとすれば一応行ける
2018/11/12(月) 09:53:55.26ID:zyHWT4B/
訂正
置換後
\1\"\"\2
だな、1個多かった
2018/11/12(月) 21:39:04.12ID:OsYv7RWH
全く無知な自分にご教授下さい。
マクロでフォルダ内のエクセルのシート1をすべて結合するマクロを探しています。
ネットに転がってるのを実行してもうまくいかないです。
できればですが、シート名は統一していないないので、ブックないのシートのRange(A1)が日付だったシートのみを結合とか高度すぎて無理でしょうか。
2018/11/12(月) 21:42:09.58ID:dMWbNPXa
>>929
私には可能ですし特に高度とも思いませんが、貴方にできるかどうかは知りません
少なくとも今目の前の問題を片付けたいだけであれば、諦めて手作業したほうが貴方にとっては早いでしょう
2018/11/12(月) 21:54:32.66ID:JxfhNlMu
ネットに転がってるのがあってもできないなら回答しても意味なくね?
ファイル名が統一されてないからうまく行かないんなら、フリーソフト拾ってきて一括リネームしたら済む話かもしれない
何を試みて何かどううまく行かなかったのか、真に目的を達成するには何がどうなっていればいいのか
それくらいは頭を整理して明記しなさい
何がわからないのか何がしたいのか自分でわからないけど親切に要件をヒアリングして代わりに作ってほしい、ならそこらへんのSIerに相談しなさい
932デフォルトの名無しさん
垢版 |
2018/11/12(月) 22:03:30.98ID:XDhm+jvj
>>930
バカはお口にチャックな
2018/11/12(月) 22:13:45.72ID:MyIa17Oe
Dir
sheet(1)
IsDate
この辺りで調べてみればそこまで難易度は高くないと思う
2018/11/12(月) 22:18:58.14ID:OsYv7RWH
>>930
なるほど。難しいって事ですね。
>>933
sheet(1)だと中にはsheet(2)にデータがある場合があるんです。
なのでシートのA1が日付の時だけコピーとかしたかったのです。
2018/11/12(月) 22:36:44.04ID:zyHWT4B/
for each ws in Worksheetsとif文が使えればできるよ
936デフォルトの名無しさん
垢版 |
2018/11/13(火) 00:16:47.48ID:6PLLlNb2
>>927
試したけど、grepにひっかからず。
937デフォルトの名無しさん
垢版 |
2018/11/13(火) 00:18:49.38ID:6PLLlNb2
936ですが、
原因が分かりました。
([^\,\"]+?)\"{1}([^\,\"]+?)の後の半角スペースが入っていたので引っ掛からなかった。
半角スペース覗いたらできました。
2018/11/13(火) 03:19:44.71ID:gWmuHRek
>>925
1"2"3"4"5

これが君には、"24"、"3" の2つに見えるけど、
普通の人は、"2"、"4" の2つに見える

つまり、"3" がネスト・内側だとは判別できない。
内側を表すには、確実に、外側と区別できる方法が必要

例えば、""3"" のように、" が2個続いたら内側と解釈するとか、何らかの方法が必要だけど、
他に解釈されないような、特別な記号を作るのは難しい
939927
垢版 |
2018/11/13(火) 07:16:41.37ID:xWZc78Mp
>>937
半角スペースはそちらでの混入かと
940デフォルトの名無しさん
垢版 |
2018/11/13(火) 21:19:22.76ID:8adn94NA
>>937
Excel vba にも正規表現による置換機能あるよね?その検索パターン、置換する文字列をそのまま使えるのか?
941デフォルトの名無しさん
垢版 |
2018/11/13(火) 21:22:12.20ID:Vxu3kwrv
>>938
長い、3文字で
942デフォルトの名無しさん
垢版 |
2018/11/14(水) 00:32:01.09ID:cWkoLxip
こんばんは。質問させてください。

VBAでXMLファイルを作成したいのですが、MSXML2というパーサ(?)を使わないといけないのですか?
Printなどを用いてテキストファイルを作成し、拡張子を.xmlに変更して作成した場合、何か問題があるのでしょうか

XMLファイルはただのテキストファイルだという認識だったのですが、「VBA XML 作成」などと検索すると
ほぼ全てのサイトでMSXML2を用いた方法が紹介されているので混乱しています

よろしくお願い致します
2018/11/14(水) 02:04:23.47ID:otO/yyOk
Ruby, Python, JavaScript など、すべての言語・コマンドでも、そう。
HTML, XML, JSON などは、それ用のライブラリを使う

勝手に作ったファイルは、パーサーで解析すると、
間違った形式・フォーマットで作られている、正しい形式ではない、という形式違反になる

正しい形式かどうかを、チェックするツールもある
2018/11/14(水) 03:54:10.85ID:KIwP1nqR
以前DOMについて質問させて頂いたものです。
前回はIEを直接開いて扱っていたのですが、
MSXMLという機能でIEを開かずにウェブサイトの情報を取得できると知り、
そちらの方が速そうだし面白そうなので挑戦しています。
そこで色々調べていたのですが、

http://d.hatena.ne.jp/end0tknr/20081115/1226755041

というブログに「MSXML2.DOMDocumentでxml responseをparseすることができます。」とあり、

Dim HttpReq As MSXML2.XMLHTTP
Dim DomDoc As MSXML2.DOMDocument
・・・
DomDoc.loadXML (HttpReq.responseText)

というコードが記述されていますが、ローカルウインドウを見るとXMLHTTP(XMLHTTP60)にresponseXMLというそれらしいプロパティがあります。
直接これをDOMとして扱うのは出来ないのでしょうか。
2018/11/14(水) 06:47:08.50ID:F2hyLHDL
>>942
> MSXML2というパーサ(?)を使わないといけないのですか?
別にMSXML2なんて単なるライブラリだから使わなくてもいいよ
ただXMLにきちんと対応するのは面倒だからみんな使ってるだけ
2018/11/14(水) 08:00:52.88ID:cWkoLxip
>>943
>>945
ありがとうございます
大変勉強になりました
2018/11/14(水) 09:35:48.86ID:JBsUV7Ak
>>940
VBAでの後方参照(\1や\2のような)はExecuteメソッドが要る、
grepやpowershellみたいに簡潔にならんけどできないことはない

Set Matches = RE.Execute(対象文字列)
For Each Match In Matches
Match.submatch(0) & """""" & match.submatch(1)
Next Match
2018/11/14(水) 21:48:32.31ID:X5SCw3Kf
入力規則のリストでリストのいずれかを選択した時に
アクションを起こしたいのですが、方法はあるのでしょうか。
selection changeでは無理でした。
2018/11/14(水) 23:16:38.95ID:Z7uIM71c
>>948
普通のWorksheet_Changeイベントを使う
2018/11/15(木) 01:04:33.76ID:pL2ZxAKh
>>949
出来ました!
こんなに簡単なことを見落としていたなんて情けない・・・
ありがとうございました。
2018/11/15(木) 22:05:17.67ID:xj1JjGGB
上場企業ってポリシーでマクロとか止められてない?
2018/11/15(木) 22:08:32.25ID:60AqZ+Uz
各部署向けのマクロを色々作ってたけど
そんなの企業次第だろ
2018/11/15(木) 22:14:10.97ID:Q+Sfzbdk
うちは個人での業務効率化が目的なら黙認されるのが実情だな
部署での正式な業務ツールとしてのマクロは情シス部で仕様として管理される事になるし、個人での作成も配布も禁止されてる
954デフォルトの名無しさん
垢版 |
2018/11/15(木) 23:27:40.32ID:sS26qanx
ザルにもほどがあるやろw黙認とか一番あかんやつやんけw
2018/11/15(木) 23:59:31.43ID:lTdn/5mU
マクロは申請が必要で保存場所は限定だわ
2018/11/16(金) 04:45:29.00ID:1oL4uemZ
以前は自由だったのが、誰かがミスするたびに禁止になって、今はほとんど何もできなくなった
2018/11/16(金) 07:12:21.93ID:B19KzSp6
情シス部にいるとマクロ作り放題(影響及ぼす範囲によるが)
2018/11/16(金) 09:34:05.81ID:iyDekcJ2
それで競争になるのか人事ながら心配
禁止なのはOfficeマクロだけってなら分かるけどさ
959927
垢版 |
2018/11/16(金) 09:43:44.02ID:fQoG7lNZ
セキュリテイ問題はVBAだけじゃない、今流行りのRPAだってハック悪用されちゃえば、情報流出し放題になる危険はある。
ただ情シスでVBAし放題って、仕事としては辛いなあ、VBAが好きならいいけど
2018/11/16(金) 11:24:37.60ID:iyDekcJ2
情報流出のリスクって観点だったら自分の手元の端末でプログラミングする/しないなんてあんまり関係ないよなあ。
セキュリティ担当大臣のリテラシーがあれじゃ何言っても無駄かw
2018/11/16(金) 13:07:59.03ID:+iwVt0B0
うちの場合、初期導入済みのソフト・プログラム以外追加インストール禁止、
プログラムの自作禁止、バッチファイル等のスクリプトも自作禁止、
その他電算担当が意図しないものは禁止、
ただしExcel・Wordのマクロはプログラム外とおかしなやりとりさえしなければ自作可、だから、
お目こぼしいただいているといえばそうかも試練。
962デフォルトの名無しさん
垢版 |
2018/11/16(金) 20:12:20.13ID:HodhQ/sE
>>960
おまえも大差ないけんどねw
2018/11/17(土) 12:59:10.62ID:rrttmrGF
htmlでも作れるよ
2018/11/17(土) 16:28:27.01ID:avlCLAGR
禁止いうても、コンペアツールや自動入力ツールの類を自作してこっそりローカルで使ってる人はいるわな。
個人で作成したマクロなんてそう大勢に普及させるもんでもないし。
2018/11/17(土) 19:32:22.12ID:afjAxwZo
>>961と同じような環境でパソコン操作ログも全て取られている。けどマクロは作り放題でこの会社どうかしてるなあと思う
管理できる範囲で使うようには心がけてる程度
2018/11/17(土) 23:34:31.53ID:kPyd3h/H
すみません初心者です。
次のブログで紹介されているVBAを応用したいのですが、
ご助言をお願いしたく。
https://www.excel-prog.com/entry/outlook-mailitem2

現状は
「キーワードが含まれるファイルが見つからない場合は、ファイル添付しない」
という処理なのですが、
「キーワードが含まれるファイルが見つからない場合は、下書きを作成しない」
という処理に変更できないでしょうか。
967デフォルトの名無しさん
垢版 |
2018/11/17(土) 23:37:15.00ID:eQWBxdMf
>>966
質問以前の問題やけど言葉を途中できるな、失礼やぞ
「助言をお願いします」と言うもんや
2018/11/17(土) 23:39:40.85ID:rc62Vrp5
>>966
自分で勉強する気がないならRPAを買おう
2018/11/17(土) 23:48:28.07ID:Q6MHNsVE
Windowsにも色々なコマンドラインツールが標準で付属してくるから
たいていのことは追加ソフトなしでできちゃうんだよな
970デフォルトの名無しさん
垢版 |
2018/11/18(日) 00:19:50.58ID:RRVp+pUX
なんや、わいは>>966の言葉使いのバカさを諫めただけで質問の内容は否定しとらんで
わかる奴答えてやれや
2018/11/18(日) 00:50:35.06ID:WoNYW9mY
>>966
下書きを作成しないというか、要するにメールを書き起こさないようにすればいいわけだよな
ならば、メール作成箇所の前に一行


If SearchFile(フォルダパス,Keyword)="" Then Exit Sub


等と追加して、SearchFile関数の戻り値が空文字列ならメール作成しない処理にすれば良い

ただし、エクセルファイル以外のファイルの存在確認をするならSearchFile関数の修正が必要だし、パス長が255文字を越えるフォルダやファイルを検索する場合はFileSystemObjectを使ったりしなきゃならない
2018/11/18(日) 07:35:49.85ID:ZUPq3iVE
>>969
powershellとbashのこと?
2018/11/18(日) 08:50:18.78ID:fvzyxXyq
>>967
そんなコマケーことが気になるなら匿名掲示板なんて見るなよ、馬鹿じゃねーの?
2018/11/18(日) 09:39:49.09ID:xm+TdzEk
>>972
Vista以降はコマンドライン版のC#コンパイラが標準で入ってるから、理論上はなんでも作れる
開発環境がないから手間はかかるけど
2018/11/18(日) 09:44:41.41ID:31bgLNRt
コマンドライン版でないC#コンパイラなんて存在しませんw
2018/11/18(日) 10:02:01.46ID:1SW2m7ab
流れを無視して急に知識自慢始めちゃうやつ
今の話題はアプリの追加インストールが禁止された環境で何が出来るか
2018/11/18(日) 10:52:24.32ID:agYaFy5y
C#のコンパイラはVista以降なら追加インストール必要ないぞ
2018/11/18(日) 11:13:46.24ID:PoFSPoaK
C#は標準で使えるけどまともなエディタが無い
少なくともVSCodeは必須と言っていい
それと最新の言語バージョンにあげたいからSDKも合わせてインストールしたいね
本家Visual Studioは要らないけどプレインストールだけで戦えるほど簡単でもない
でもVBE+VBAと比べるとC# 5+メモ帳でもまあいっかーこっちのほうがまだマシかもなーという気持ちになることは認める
2018/11/18(日) 11:14:53.56ID:Nq43WKFY
>>977 3つ上に書いてある
2018/11/18(日) 11:20:20.73ID:SwY+rtAE
>>975
アスペ乙
2018/11/18(日) 11:24:42.28ID:SwY+rtAE
>>979
書いてあるのに>>976みたいなこと言うやつがいるって話だろ
2018/11/18(日) 11:59:22.66ID:ve9l0Wxi
>>978
Visual Studio Codeはまともじゃないと?
2018/11/18(日) 12:08:47.18ID:PoFSPoaK
>>982
??
あれはいいエディタだよ
2018/11/18(日) 12:15:47.10ID:31bgLNRt
VSCodeなんかフリーソフトのインストールに許可が要る会社で使うのは不可能だろ
C#の開発環境を整えようとしようものなら数百個のオープンソースライブラリが勝手に入ってくるから、
全部申請出して情シスにレビューさせたら何年かかることか
2018/11/18(日) 12:23:37.60ID:ve9l0Wxi
>>983
ああ日本語の問題ね
2018/11/18(日) 12:31:26.14ID:PoFSPoaK
>>984
そんな厳しいチェックしてる企業は実際にはないよ
Microsoftが出してるツールならMicrosoftを信用してMicrosoftが採用したオプソの依存関係も信用する
これぐらいのバランス感覚が普通じゃないかな
2018/11/18(日) 12:35:06.02ID:zyj02y5w
984じゃないけど、そら世間知らず過ぎだわ
どんだけセキュリティ弱い企業なのよ、うちだってまず無理だわ

だからこんな糞言語使ってるってのに
2018/11/18(日) 12:45:51.12ID:PoFSPoaK
いやいや
膨大な数のオプソのセキュリティをレビューできる専門家を何人も囲える企業ばかりじゃないだろ
囲える力があったとしてもそんな貴重な人材をツール申請のレビューアーとして使い潰す企業があったとしたらただのマヌケだわ
2018/11/18(日) 12:47:52.42ID:VUJKeY9L
Windowsのアプデで.NETライブラリを更新することにすら神経尖らす企業もいるし、VSCode使用は一般化できんね
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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