Excel VBA 質問スレ Part57
レス数が950を超えています。1000を超えると書き込みができなくなります。
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part56
http://mevius.5ch.net/test/read.cgi/tech/1534976724/ >>887
基本情報はJavaやCできない文系カスならExcel選べばいいでしょ
ワークシート関数を使いこなせれば十分で、VBAなんか全く要らん マクロ起動でシートの切り変わりで画面がブレるというか、もう少しスムーズに動いて欲しいと感じます。
1行まるごとコピーしているので重いのでしょうか? 配列に入れるとか?
dim a
a = sheet1.Range("コピーしたい範囲")
sheet2.Range("sheet1と同じ大きさ") = a
シート切り替える必要あんの? 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 拡張子を.csvに変えてダブルクリックしてみよう
あら不思議! ちなみに拡張子をcsvにすると以下のような変な出力になる。
A B C
1 my name is taro
2 hello world""
3 hello,world "が一個足りない
csvで"をインポートするには
"を""にして
"でくくらないといけない 手順としては以下でよいか?
1. test.txtの中身を置換で「""」にマッチする箇所を「"""」として保存する
2. 拡張子をcsvにする。
期待値になったのでよしとする。
さらに一歩質問いいですか? 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にしたら、ちゃんと期待値になってた。。
んー、、途中で改行が入るケースではまってた記憶があったんだが、、、、。これでよしとするか。。 ああ、思い出した
"がつかないケースで、改行が入っている場合
test.txtの中身
1,my name
is taro
エクセルにして期待値として以下としたい
A B
1 (※)
(※)
B1セル内に
my name
is taro
が格納され、適切に改行が入っていることを期待。
拡張子をcsvに置き換える前に、"で囲むようにすればいいが、置換でなんとかならないものか。 なんかもう最初のカンマまでの文字数だけ切り取るほうがシンプルなんじゃ >>895
それのどこに配列が絡んでるんですかね? >>905
昔方法探したけどできなかった
陰線処理ってエロくないのにちょっとエロく思える単語だよな 質問する奴も答える奴も論外で草
質問する奴はそういうスレだからともかく
答える奴が池沼なのはもう少し何とかならないか?
VBAだから無理か >>907
えっ?
絡んで無いと思ってる?
今となっては初心者でも使う手法だと思うんだが。
それとも何か勘違いしてるのは俺か? >>907
変数代入のときにSetステートメント使ってないから、変数にはセル値の配列が入ってるぞ >>871,>>872
SQLServer側でセルの権限管理???
プロ?? プロさんにつっこんだらあかんやろ
暗黙のルールぐらい守れやカス そんなことより、XMLクライアントとしてのExcelを語ろうぜ >>914
セルの権限管理なんぞサーバーから見たら何の意味もないよ http://sagawa-oki.com/
ここにアクセスしたら不審サイトであると警告が出ました。
PCに詳しい人、これどういうしくみなんですか?
オレのPCは感染したのですか? >>918
もう手遅れですね
アマギフ送ってくれたら直してあげられるよ デザイナーが描くような美しいUMLのシェイプを生成するDSLライブラリはありませんか?
PlantUMLのエクセルバージョンのようなものを探してます データの持ち方はシンプルな方がいい
そうでないなら条件を明確に 901だが、
さらにおしえてほしい
textに
"please call a "phone"."
と書かれているケースがあり、これをcsvとして読みこませる前に
表記が崩れないように整形を加える。
最終的に1セル内に
please call a "phone".
が入っていればよいです。
上記を実現するための整形の流れとしてどうしたらいい?
整形後は、phoneの間に"をさらに追加する。端っこの"には手を加えない。
"please call a ""phone""."
手作業ではなく、置換で自動化したい そういうのはCSVとして読み込むんじゃなくて、自前で構文解析した方が良い。
この程度なら難しく無いでしょ。 >>925
正規表現置換の使えるエディタで
検索パターン
([^\,\"]+?)\"{1}([^\,\"]+?)
置換後
\1\"\"\"\2
などとすれば一応行ける 訂正
置換後
\1\"\"\2
だな、1個多かった 全く無知な自分にご教授下さい。
マクロでフォルダ内のエクセルのシート1をすべて結合するマクロを探しています。
ネットに転がってるのを実行してもうまくいかないです。
できればですが、シート名は統一していないないので、ブックないのシートのRange(A1)が日付だったシートのみを結合とか高度すぎて無理でしょうか。 >>929
私には可能ですし特に高度とも思いませんが、貴方にできるかどうかは知りません
少なくとも今目の前の問題を片付けたいだけであれば、諦めて手作業したほうが貴方にとっては早いでしょう ネットに転がってるのがあってもできないなら回答しても意味なくね?
ファイル名が統一されてないからうまく行かないんなら、フリーソフト拾ってきて一括リネームしたら済む話かもしれない
何を試みて何かどううまく行かなかったのか、真に目的を達成するには何がどうなっていればいいのか
それくらいは頭を整理して明記しなさい
何がわからないのか何がしたいのか自分でわからないけど親切に要件をヒアリングして代わりに作ってほしい、ならそこらへんのSIerに相談しなさい Dir
sheet(1)
IsDate
この辺りで調べてみればそこまで難易度は高くないと思う >>930
なるほど。難しいって事ですね。
>>933
sheet(1)だと中にはsheet(2)にデータがある場合があるんです。
なのでシートのA1が日付の時だけコピーとかしたかったのです。 for each ws in Worksheetsとif文が使えればできるよ 936ですが、
原因が分かりました。
([^\,\"]+?)\"{1}([^\,\"]+?)の後の半角スペースが入っていたので引っ掛からなかった。
半角スペース覗いたらできました。 >>925
1"2"3"4"5
これが君には、"24"、"3" の2つに見えるけど、
普通の人は、"2"、"4" の2つに見える
つまり、"3" がネスト・内側だとは判別できない。
内側を表すには、確実に、外側と区別できる方法が必要
例えば、""3"" のように、" が2個続いたら内側と解釈するとか、何らかの方法が必要だけど、
他に解釈されないような、特別な記号を作るのは難しい >>937
Excel vba にも正規表現による置換機能あるよね?その検索パターン、置換する文字列をそのまま使えるのか? こんばんは。質問させてください。
VBAでXMLファイルを作成したいのですが、MSXML2というパーサ(?)を使わないといけないのですか?
Printなどを用いてテキストファイルを作成し、拡張子を.xmlに変更して作成した場合、何か問題があるのでしょうか
XMLファイルはただのテキストファイルだという認識だったのですが、「VBA XML 作成」などと検索すると
ほぼ全てのサイトでMSXML2を用いた方法が紹介されているので混乱しています
よろしくお願い致します Ruby, Python, JavaScript など、すべての言語・コマンドでも、そう。
HTML, XML, JSON などは、それ用のライブラリを使う
勝手に作ったファイルは、パーサーで解析すると、
間違った形式・フォーマットで作られている、正しい形式ではない、という形式違反になる
正しい形式かどうかを、チェックするツールもある 以前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として扱うのは出来ないのでしょうか。 >>942
> MSXML2というパーサ(?)を使わないといけないのですか?
別にMSXML2なんて単なるライブラリだから使わなくてもいいよ
ただXMLにきちんと対応するのは面倒だからみんな使ってるだけ >>943
>>945
ありがとうございます
大変勉強になりました >>940
VBAでの後方参照(\1や\2のような)はExecuteメソッドが要る、
grepやpowershellみたいに簡潔にならんけどできないことはない
Set Matches = RE.Execute(対象文字列)
For Each Match In Matches
Match.submatch(0) & """""" & match.submatch(1)
Next Match 入力規則のリストでリストのいずれかを選択した時に
アクションを起こしたいのですが、方法はあるのでしょうか。
selection changeでは無理でした。 >>948
普通のWorksheet_Changeイベントを使う >>949
出来ました!
こんなに簡単なことを見落としていたなんて情けない・・・
ありがとうございました。 各部署向けのマクロを色々作ってたけど
そんなの企業次第だろ うちは個人での業務効率化が目的なら黙認されるのが実情だな
部署での正式な業務ツールとしてのマクロは情シス部で仕様として管理される事になるし、個人での作成も配布も禁止されてる ザルにもほどがあるやろw黙認とか一番あかんやつやんけw 以前は自由だったのが、誰かがミスするたびに禁止になって、今はほとんど何もできなくなった 情シス部にいるとマクロ作り放題(影響及ぼす範囲によるが) それで競争になるのか人事ながら心配
禁止なのはOfficeマクロだけってなら分かるけどさ セキュリテイ問題はVBAだけじゃない、今流行りのRPAだってハック悪用されちゃえば、情報流出し放題になる危険はある。
ただ情シスでVBAし放題って、仕事としては辛いなあ、VBAが好きならいいけど 情報流出のリスクって観点だったら自分の手元の端末でプログラミングする/しないなんてあんまり関係ないよなあ。
セキュリティ担当大臣のリテラシーがあれじゃ何言っても無駄かw うちの場合、初期導入済みのソフト・プログラム以外追加インストール禁止、
プログラムの自作禁止、バッチファイル等のスクリプトも自作禁止、
その他電算担当が意図しないものは禁止、
ただしExcel・Wordのマクロはプログラム外とおかしなやりとりさえしなければ自作可、だから、
お目こぼしいただいているといえばそうかも試練。 禁止いうても、コンペアツールや自動入力ツールの類を自作してこっそりローカルで使ってる人はいるわな。
個人で作成したマクロなんてそう大勢に普及させるもんでもないし。 >>961と同じような環境でパソコン操作ログも全て取られている。けどマクロは作り放題でこの会社どうかしてるなあと思う
管理できる範囲で使うようには心がけてる程度 すみません初心者です。
次のブログで紹介されているVBAを応用したいのですが、
ご助言をお願いしたく。
https://www.excel-prog.com/entry/outlook-mailitem2
現状は
「キーワードが含まれるファイルが見つからない場合は、ファイル添付しない」
という処理なのですが、
「キーワードが含まれるファイルが見つからない場合は、下書きを作成しない」
という処理に変更できないでしょうか。 >>966
質問以前の問題やけど言葉を途中できるな、失礼やぞ
「助言をお願いします」と言うもんや >>966
自分で勉強する気がないならRPAを買おう Windowsにも色々なコマンドラインツールが標準で付属してくるから
たいていのことは追加ソフトなしでできちゃうんだよな なんや、わいは>>966の言葉使いのバカさを諫めただけで質問の内容は否定しとらんで
わかる奴答えてやれや >>966
下書きを作成しないというか、要するにメールを書き起こさないようにすればいいわけだよな
ならば、メール作成箇所の前に一行
If SearchFile(フォルダパス,Keyword)="" Then Exit Sub
等と追加して、SearchFile関数の戻り値が空文字列ならメール作成しない処理にすれば良い
ただし、エクセルファイル以外のファイルの存在確認をするならSearchFile関数の修正が必要だし、パス長が255文字を越えるフォルダやファイルを検索する場合はFileSystemObjectを使ったりしなきゃならない >>969
powershellとbashのこと? >>967
そんなコマケーことが気になるなら匿名掲示板なんて見るなよ、馬鹿じゃねーの? >>972
Vista以降はコマンドライン版のC#コンパイラが標準で入ってるから、理論上はなんでも作れる
開発環境がないから手間はかかるけど コマンドライン版でないC#コンパイラなんて存在しませんw 流れを無視して急に知識自慢始めちゃうやつ
今の話題はアプリの追加インストールが禁止された環境で何が出来るか C#のコンパイラはVista以降なら追加インストール必要ないぞ C#は標準で使えるけどまともなエディタが無い
少なくともVSCodeは必須と言っていい
それと最新の言語バージョンにあげたいからSDKも合わせてインストールしたいね
本家Visual Studioは要らないけどプレインストールだけで戦えるほど簡単でもない
でもVBE+VBAと比べるとC# 5+メモ帳でもまあいっかーこっちのほうがまだマシかもなーという気持ちになることは認める >>979
書いてあるのに>>976みたいなこと言うやつがいるって話だろ >>978
Visual Studio Codeはまともじゃないと? VSCodeなんかフリーソフトのインストールに許可が要る会社で使うのは不可能だろ
C#の開発環境を整えようとしようものなら数百個のオープンソースライブラリが勝手に入ってくるから、
全部申請出して情シスにレビューさせたら何年かかることか >>984
そんな厳しいチェックしてる企業は実際にはないよ
Microsoftが出してるツールならMicrosoftを信用してMicrosoftが採用したオプソの依存関係も信用する
これぐらいのバランス感覚が普通じゃないかな 984じゃないけど、そら世間知らず過ぎだわ
どんだけセキュリティ弱い企業なのよ、うちだってまず無理だわ
だからこんな糞言語使ってるってのに いやいや
膨大な数のオプソのセキュリティをレビューできる専門家を何人も囲える企業ばかりじゃないだろ
囲える力があったとしてもそんな貴重な人材をツール申請のレビューアーとして使い潰す企業があったとしたらただのマヌケだわ Windowsのアプデで.NETライブラリを更新することにすら神経尖らす企業もいるし、VSCode使用は一般化できんね だから殆どの企業は判断基準として発行元はどこなのかということぐらいしかチェックしない
現実的に考えると企業としての信用で判断するしかないんだよ
そしてソースコードではなく信用で判断するなら信用した企業が信用した企業も再帰的に信用したって構わないだろ 前職は某外資Iのグループ会社にいたけど、Globalのルールだと
業務で使用するオープンソースライブラリは許可済みのもの(レビュー済の特定のバージョンに限る)以外は全てレビュー必須だったぞ
厳密に適用するとVSやVSCodeのパッケージマネージャで入ってくるような膨大な数のOSSライブラリは全てレビューが必要
まあ誰も守ってなかったがw >>989
それは違う理由で神経尖らせてるだけ
日本企業で.NETと言ったらVB.NETが代名詞になる
VBコミュニティのレベルの低さは底なしだ
彼らがVB.NETで作った業務システム(主にデスクトップアプリ)ってものすごく簡単に壊れるんだよ
OSやフレームワークの更新なんてしたらどうなるか分かったものじゃない
だから慎重になるの
オープンソースのセキュリティについて慎重になるのとはベクトルが違う レス数が950を超えています。1000を超えると書き込みができなくなります。