X


Excel VBA 質問スレ Part69

レス数が1000を超えています。これ以上書き込みはできません。
2020/12/13(日) 00:22:23.67ID:Fd224klc0
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付ける

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

※前スレ
Excel VBA 質問スレ Part68
https://mevius.5ch.net/test/read.cgi/tech/1598756127/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2020/12/13(日) 00:40:59.48ID:3UupZiaXa
いちおつ
2020/12/13(日) 02:05:02.07ID:8gJ86P5y0
3次元配列
2020/12/13(日) 09:38:15.23ID:d7KSZ/+i0
>>1

>>991です
スレ変わったのでわかる人お願いします

Excel関数のHyperLinkの処理を置き換え(APIHookのような処理)はどうすればできますか?

目的としてはHyperLink関数では一部のURLの表示が遅い(Excel自体のタイムアウト待ち?)ので
直接「CreateObject("WScript.Shell").Run URL文字列」の処理をさせたいのです
関数名はHyperLinkのままにしたいのでAPIHookのような処理ができればいいのですが
5デフォルトの名無しさん (ワッチョイ 67f1-k4Kn)
垢版 |
2020/12/13(日) 09:44:53.59ID:QAnzRvam0
Office田中のおじいちゃんはなぜ突然Youtubeの更新が止まったの?
2020/12/13(日) 09:58:52.02ID:8gJ86P5y0
ヒント:最初からコメント欄封鎖で察し
2020/12/13(日) 10:04:09.41ID:8gJ86P5y0
他のExcel YouTuberを遠回しでディスったり他の講師を素人呼ばわりしてるから警告されたとか??
8デフォルトの名無しさん (ワッチョイ 7f63-JIxf)
垢版 |
2020/12/13(日) 18:01:59.62ID:cE4yrWjc0
田中はクソみたいなコードを広めるのやめて欲しい
2020/12/13(日) 18:27:45.70ID:+kVWWkIy0
>>8
俺は見てないがもし糞みたいなコードがあるなら本人に「ここの部分はこうした方がいい」と伝えるか
正しい糞ではないコードを自分で広めるなりすればいいんじゃね
2020/12/13(日) 20:21:47.50ID:RLxnk1oS0
>>9
サンプルにバグを見つけて伝えたことあるけど無視された
そのまま放置
2020/12/13(日) 22:55:06.01ID:8gJ86P5y0
質問掲示板(多分知恵袋)にVBAの質問してもちゃんと答えられる人は少ないですキリッ
なぜなら彼らはVBの上級者であってエクセル上級者では無いからです!ドヤッ

これ、マジであの人が発言したからね。
ここの住人の方が詳しいと思われ
2020/12/14(月) 12:29:36.45ID:7J3AXcIkH
なんとかのネタ帳の方が分かりやすい
13デフォルトの名無しさん (ワッチョイ 67f1-k4Kn)
垢版 |
2020/12/14(月) 13:10:44.97ID:v8F0AU2W0
あのExcelしか知らないのが超糞偉そうにしてるのを見るのもショーみたいで面白い。
周りに初心者がたくさんいるのだろうな。
そして小さなExcelの世界しか知らないから天狗のようになって自分が神であるかのように勘違いしてる。
14デフォルトの名無しさん (ワッチョイ e701-LBAI)
垢版 |
2020/12/14(月) 15:02:42.82ID:SoqrBv/c0
Excelはすべての会社員が使っているので、会社員の頂点に立つ男!みたいな気分なんだろな。
2020/12/14(月) 18:25:01.11ID:+U5ugI250
ラーメン屋のオヤジがウチのラーメンが世界一だと言ってるようなもんだろ
ほっとけばいいのに
2020/12/14(月) 20:45:35.63ID:1UTk6KL+0
一応、MS本社に認められたんだよね日本人初のMVP受賞とか
間違っていたらすまそ
17デフォルトの名無しさん (ワッチョイ e701-LBAI)
垢版 |
2020/12/14(月) 22:49:22.85ID:SoqrBv/c0
じゃあ世界一って事か。
2020/12/14(月) 23:00:48.78ID:1UTk6KL+0
どーなんだろ??
あの人、あまり手の内見せないぽいから
最終的には自分で考える事が大事と良く言ってるし。

MSからマクロ作成の依頼されたことあるらしいし。
2020/12/15(火) 18:46:27.43ID:/G3Q8qXw0
日本人初=世界一 ってのはどうかな
普通にできる人より詳しいのは認めるが
2020/12/16(水) 05:13:46.62ID:OBuLFyvl0
本人来てるなw
2020/12/16(水) 06:08:28.27ID:5QiC3fDMx
vbaでホットキーの下線を引くのってどうやるの?
captionに(&Q)って入れたらそのまま"(&Q)"って表示されてしまうんだが
2020/12/16(水) 18:46:12.78ID:T3OIGsjX0
フォントかも?
2020/12/17(木) 15:35:36.14ID:vxWFGGLL0
>>8
まぁ一見糞だけど知りたいところをスパッと見て
取れるように組んであるみたいだね
あれを素晴らしいと見るのは初級者
糞と見るのは中級者
ああ、仕方なかったんだろうなぁと見るのが
上級者だろうね
2020/12/17(木) 17:44:01.81ID:H5UCfbuzp
具体的なコードもなしにそんなことを言ってみても意味なくない?
2020/12/17(木) 18:18:37.46ID:HhGRrbK00
具体的に行動で示さなければ意味がないとも言えなくもないな
2020/12/17(木) 19:29:42.36ID:fIVTHnC60
意味を具体的に言ってくれないと行動で示したことにならなくもないな
2020/12/17(木) 21:10:06.33ID:HhGRrbK00
意味なんかなくてもいいな、いい意味で
2020/12/17(木) 23:03:41.69ID:xFG/tErCd
示す行動しない意味が言って具体的にない
2020/12/18(金) 00:01:06.37ID:pmAsW6cw0
VBAのソースからエクセルを開き、
ある一つのセルに
メールアドレスを2つ
;でつないで入れようとしています。

動作中にデバッガで止めて見たときは
2つとも入ってるのに
処理終了後に保存したファイルを開くと
最初の一つしか入ってないです。
;以降が消えています。

保存処理はコレです。
Wb.SaveAs fullPath & "\" & newfilename, FileFormat:=xlWorkbookDefault

どうすればメールアドレスを2つとも保存できるでしょうか。

セルに手入力して保存して開きなおした場合は
2つとも残っています。
2020/12/18(金) 05:56:32.93ID:MHBgXHLC0
>>29
その保存処理の行にブレークポイントを仕掛けて、保存直前のセルの内容を確認した?
2020/12/18(金) 11:37:45.35ID:zcOsQbRrx
シートに多数配置されたフォームボタンの余白を一括で変えたいんですが
これはどこのプロパティに入ってるんでしょうか?

図形ボタンならばTextFrameにありますが、
フォームコントロールボタンには無いので困っています
2020/12/18(金) 12:18:56.87ID:zcOsQbRrx
自己解決?
階層のかなり深いところあって正しいかどうかわからないけれど
目的のmargintopは変えられたのでよしとします
2020/12/18(金) 21:20:27.27ID:2qJVkyjrr
>>29
fullPathの中身は確認した?
34デフォルトの名無しさん (ワッチョイ 9763-6v7E)
垢版 |
2020/12/18(金) 21:24:38.24ID:d7JsJWQH0
>>30
してませんでした
してみたら上書きしちゃってことが発覚
すみませんでした
2020/12/18(金) 21:26:41.06ID:tZwK+Ox70
Fullい、アルPathの中身〜 
2020/12/18(金) 21:31:55.70ID:2qJVkyjrr
>>35
隠れてー
2020/12/18(金) 22:42:55.21ID:wJm+i3S50
2013でセキュリティがウンコとか言われずにシートにブラウザ埋め込む方法ない?
2003使えってのは無しで。
2020/12/18(金) 22:44:42.88ID:wJm+i3S50
あとフォーム使えってのも無しで。
フォームをシートに埋め込めるならフォームでも良いけど。
2020/12/19(土) 08:46:18.20ID:I2l+BhY+0
正規表現使ったら複数あったIf文がひとつにまとまって便利だわ
2020/12/19(土) 09:12:21.18ID:61b7WmYd0
>>37
Activex コントロールの追加
41デフォルトの名無しさん (ブーイモ MMd6-EfRV)
垢版 |
2020/12/19(土) 09:13:26.65ID:XKRgJ0KSM
性器表現使ったら警察に通報されたわ

ω
42デフォルトの名無しさん (ワッチョイ a301-Gz4g)
垢版 |
2020/12/19(土) 09:17:51.58ID:yZxXMpJa0
ろくでなし子さんか。
2020/12/19(土) 09:18:25.16ID:61b7WmYd0
あ、フォームしか使えんのか、やっぱ無理
2020/12/19(土) 10:42:01.25ID:bPXc2una0
vbsの質問スレってありませんか?
2020/12/19(土) 12:26:52.95ID:/kQ9IsbnM
vbsってなぁに?
2020/12/19(土) 13:55:17.82ID:B7wez7Ce0
vibes
2020/12/19(土) 14:26:52.27ID:apUbT12I0
>>44
馬鹿は死ね
2020/12/19(土) 15:28:53.56ID:0faaSRGa0
>>39
どんな感じ?興味ある。
エクセルで式長いと読む気なくすから
2020/12/19(土) 19:29:28.19ID:alzND/kd0
新しく入った部署に一連の処理をまとめた動作が一時間かかるマクロがあったのですが
途中でたまにALTキーを押して動作が止まってないかみたほうが良いといわれましたが
ALTキーにそういう使い方がありますか?

コードを見ると2つのブック間での大量の転記がメインでしたがselectで行ったり来たりしてるのと
do eventsが目につくのと画面更新が停止になっていないのが気になりました
2020/12/19(土) 19:38:18.28ID:xrHuR8aPM
一から作り直してやれよ
2020/12/19(土) 19:39:14.70ID:61b7WmYd0
>>49
スクリーンセーバーとかで画面が消えているときに画面を表示させるってことじゃね
気になるなら言ったやつに聞けよ
2020/12/19(土) 19:42:46.83ID:LkhtCrGt0
途中で止まってないか確認が必要なツールってなんだそれww
2020/12/19(土) 19:46:02.83ID:61b7WmYd0
SHIFTだった、ALTはメニューのショートカットが出るので固まっているかどうかわかるんだな
2020/12/19(土) 19:46:14.78ID:KLAxshEw0
関数式びっしりのリスト表はINDIRECT関数でシート名を21年度にしたらまともに動かないようにしといた
俺の最後のあがき
2020/12/19(土) 19:50:43.64ID:alzND/kd0
オフィスがアップデートされてからめちゃめちゃ重くなったらしくて(多分2010以前から2016)
コードは流し見してみてもactivate、selectの連続なので書き方としてはダメなのは分かるのですが
オフィスのアップデートでマクロの処理時間に影響してるのはどの辺りかとおもってまして
2020/12/19(土) 19:55:12.16ID:alzND/kd0
>>53
なるほど!ありがとうございます
2020/12/19(土) 19:58:20.64ID:xrHuR8aPM
転記マクロなんて本来速いはずなんだがな
数万行のVLOOKとかならともかく
2020/12/19(土) 19:59:38.59ID:LkhtCrGt0
vlookは速い
だめなのはコピペ
2020/12/19(土) 20:05:32.11ID:4RWx2e/N0
メモリが足りてへんだけやろ
200x使ってたっていつのPCやねん
2020/12/19(土) 20:06:11.88ID:xy5yRKkZ0
>>57
作り方による
初心者はセル一つ一つに入れていくような処理を普通に作ったりする
2020/12/19(土) 20:14:37.97ID:alzND/kd0
>>57
コード読みのしんどくて処理を追うの断念しました
2020/12/19(土) 20:24:14.95ID:xrHuR8aPM
>>58
VLOOKは時間かかるよ
参照先が数万行あるからね
そういう前提
2020/12/19(土) 20:55:46.21ID:61b7WmYd0
別ファイルへのリンクは遅い
2020/12/20(日) 00:11:18.42ID:sV78pExa0
>>55
ネッワークがヘボだと、ファイルの読み書きで止まるのも遅くなるのも普通にある。
65デフォルトの名無しさん (ワッチョイ 6a01-Gz4g)
垢版 |
2020/12/20(日) 00:39:42.92ID:j7lOdAJ40
>>64
ネットワークフォルダにあるファイルの読み書きという意味でよいですか?
2020/12/20(日) 07:19:21.13ID:9C3kHidD0
>>49
DoEventsとかScreenUpdatingの停止は多分普段コードに触れない人も操作する事を想定しているのだと思う。
より時間がかかったとしても画面に変化があった方が時間が短く感じるらしいよ。
67デフォルトの名無しさん (ワッチョイ 6a01-Gz4g)
垢版 |
2020/12/20(日) 08:42:07.93ID:j7lOdAJ40
>>66
そういうこともあるのですね
2020/12/20(日) 08:42:23.86ID:sV78pExa0
>>65
そう。
読み込み途中で止まっちゃって、キャンセルボタンを押すと動きだしたり。
逆に、あーまた止まったと思ってキャンセル押すと、読み込みに失敗することも。(この場合止まってるのではなく遅いだけ)
ネットワーク関係ないなら、xlsがxlsxになった影響かも。
zip圧縮してるせいで、容量が大きいと遅くなる。
69デフォルトの名無しさん (ワッチョイ 6a01-Gz4g)
垢版 |
2020/12/20(日) 09:05:36.29ID:j7lOdAJ40
>>68
私は入ったばっかりのですが確かにネットワークのフォルダの挙動がおかしいと感じてはいます
フォルダに入ろうとすると権限メッセージが出て弾かれる、二回目はすんなり入れるなど

2、3年前にオフィス移転(システム的にも変更?)してから動作が不安定らしいです

こういう場合必要ファイルを一旦ローカルに保存してから処理を実行などの方が早いかもしれませんね
2020/12/20(日) 10:43:45.19ID:Ac0m1tee0
コードの各所にdebug.printで処理名と時間出すようにしてイミディエイトウィンドウが見える状態でマクロ実行したらどこで固まってるか分かると思うけど
2020/12/20(日) 12:10:16.68ID:nJ21/AVE0
Debug.PrintってVBEを開かないと見えないじゃん
素人対策ならどっかのセルの数字とか色を適当に変化させた方がいいかも
2020/12/20(日) 12:59:56.30ID:CqvjoJZt0
今度はそこでバグるんですね
73デフォルトの名無しさん (ワッチョイ f3f1-EfRV)
垢版 |
2020/12/20(日) 13:14:04.40ID:6+Wk6JOS0
今度はそこでハゲるんですよ
2020/12/20(日) 23:10:55.45ID:gTVP+0oL0
Application.StatusBar がとっても便利
2020/12/21(月) 11:54:50.24ID:bZ3GkeZc0
全体の処理数がわかるなら、残り(未処理)が何件あるかを表示すると多少イライラが解消される
76デフォルトの名無しさん (ラクッペペ MMe6-LgW4)
垢版 |
2020/12/21(月) 12:30:22.40ID:uS6jpmSaM
途中でクリップボード使ったら
卑猥な言葉が混入しまちた!
2020/12/22(火) 00:13:23.28ID:lruv7PIH0
ミスターTか。この人の経営してる会社、実態が無いと聞いたが
娘と親子でExcelのセミナー会社経営らしいが
2020/12/22(火) 03:50:30.98ID:rWw9Je1ea
娘何歳?
2020/12/22(火) 06:18:34.01ID:NAGl+KXI0
すみません教えてください
Option Explicit
Private Sub UserForm_Initialize()
Dim r As Long
ComboBox1.ColumnCount = 2
For r = 1 To Range("A" & Rows.Count).End(xlUp).Row
ComboBox1.AddItem Range("A" & r).Value
ComboBox1.List(r - 1, 1) = r 'リストの2列目にシートの何行目かを記憶
Next
End Sub

Private Sub ComboBox1_Change()
Dim r As Long
Dim c As Integer
r = ComboBox1.List(ComboBox1.ListIndex, 1) '選択したリストの2列目(シートの何行目か)
ComboBox2.Clear
For c = 2 To Cells(r, Columns.Count).End(xlToLeft).Column
ComboBox2.AddItem Cells(r, c).Value
Next
End Sub

上記コードだとシート1のデータがコンボボックスに反映されるんですが
シート2のデータを反映したくて色々試したんですが解決できず
詳しい方がいましたら教えてください
2020/12/22(火) 07:33:43.93ID:mqeQ3pSMd
単にRangeやCellsと書いたのではアクティブなシートしか参照しない
複数シートを使わない場合であっても単純なエラーを防ぐ意味でシートを指定したほうがいいと思いますよ
2020/12/22(火) 07:51:09.62ID:k2dAsx4kx
名前付きセルを参照する時、Range("名前")だけだとVBEから実行するときに
他のブックがアクティブになっていて"名前"のセルが無いエラーが出るんで
ThisWorkbook を指定したいんですが、RangeオブジェクトがSheetにしか無いんで
名前指定しているにも関わらず
ThisWorkbook.Sheets("sheet1").Range("名前")
みたいにするしか無いんですが

これシート指定の部分を任意にすることは出来ないんでしょうか?
2020/12/22(火) 07:54:48.95ID:asPFS5mN0
出来る出来ないで聞かれたら出来る
2020/12/22(火) 10:21:28.79ID:Lmg+KcEvM
ツリーからシートを選んでプロパティからオブジェクト名をよく見てみると良いよ。シート名とオブジェクト名が切り離されてる事に気付くから。
そしたら【オブジェクト名】.Cells([RowIndex],[ColumnIndex])とか【オブジェクト名】.Range(“名前”)とかでやってみ。
2020/12/22(火) 10:41:24.56ID:kzqT97dS0
>>81
あとになって自分のコードが理解できなくなるに1ガバチョ
2020/12/22(火) 14:37:29.68ID:sqvmca9RM
>>81
別にそれでいいじゃんよ
2020/12/22(火) 14:44:06.90ID:sqvmca9RM
>>79
そもそもシート1とかシート2とか何を言ってるんだ?

シート1というシート名のシートがあるなら、
Sheet("シート1")と指定すればいいだけだろうに、それがプログラム中に無いぞ。
2020/12/22(火) 16:07:51.53ID:wg95/wQDd
いつものあいつがコピペしただけのものでは?
2020/12/22(火) 20:57:51.79ID:zqIv26bj0
質問です。

シート 1〜 最終シート全ての
「B列の14行目」 から
「B列の値のあるまとまりの最終セルの一つ前まで」
のセルの値をクリアしたいです。

下のコードで試してみたのですが、アプリケーション定義またはオブジェクト定義のエラーと出てしまいます。
VBA覚え始めたばかりの完全初心者でどこが違うのか分からないです
すみませんが、教えてもらえませんでしょうか

Sub test()
G = Sheets.Count

For H = 1 To G
Sheets(H).Range(Range("B14"), Range("B14").End(xlDown).Offset(-1, 0)).ClearContents
Next

End Sub
2020/12/22(火) 21:29:14.42ID:sqvmca9RM
Dim G As Integer, H As Integer

を冒頭に入れてもダメかえ?
2020/12/22(火) 21:43:02.14ID:zqIv26bj0
入れてみましたがダメでした…
OptionExplicitも外してますので宣言の問題ではないようです
でも宣言はすべきですね…
2020/12/22(火) 21:47:05.04ID:sqvmca9RM
そういやクリアコンテンツって
シートの選択から直は無理だったような?w

Sheet(H).Select

を行で独立させてみたら?
2020/12/22(火) 21:50:43.47ID:sqvmca9RM
すまん

Sheets

ね。s抜けたわ。
2020/12/22(火) 21:55:05.91ID:zqIv26bj0
すみません、自己解決しました…
色々ありがとうございます。

Rangeの範囲指定の中のRangeにSheets(H).が抜けていたのが原因でした。
For Nextでシートが移ってもSheets(1)のRange範囲を参照するようになっていたようです・
2020/12/22(火) 22:02:13.02ID:sqvmca9RM
あ、その罠かw
レンジレンジでやるとそこめんどくさいんだよな
Cellsのがいいと思う
あと>>91でもいけるんじゃないかな
2020/12/22(火) 22:08:35.35ID:AEyd3vLu0
アクティブじゃないシート上の画像のサイズ変更すると想定と少しずれるんですが原因分かりますか?
サイズ変更する前にシートをアクティブにすると全て同じ大きさになるのでコードは合ってると思います
2020/12/23(水) 05:25:00.77ID:j3OsNt/k0
>>80
早速の回答ありがとうございます

For r = 1 To Range("A" & Rows.Count).End(xlUp).Row

For r = 1 To Sheet("1" & Rows.Count).End(xlUp).Row
に変更したらいいのでしょうか?

初心者ですいません
2020/12/23(水) 06:50:55.19ID:xBPwPYbC0
>>96

For r = 1 To Sheet1.Range("A" & Rows.Count).End(xlUp).Row
2020/12/23(水) 11:44:28.79ID:j3OsNt/k0
>>97
ご教授ありがとうございます
初心者じみた質問で申し訳ありません!

ComboBox2.AddItem Sheet3.Range(r, c).Value

Sheet3を参照できないのですがどこが間違っているのか理解できません
わかる方いましたらよろしくです
2020/12/23(水) 11:46:56.79ID:o2ScoeZIM
>>98
RangeをCellsに変えてみ
2020/12/23(水) 15:07:17.52ID:Xl4mgk4Md
いつものあいつ確定
2020/12/23(水) 15:43:35.91ID:FcIaoKlm0
いつものあいつが好きな奴確定
2020/12/23(水) 15:51:50.15ID:Xth9/5BD0
いつものあいつは人気者
https://store.line.me/stickershop/product/1265677/ja
2020/12/23(水) 18:16:20.38ID:j3OsNt/k0
>>99
ありがとうございます
2020/12/23(水) 18:19:10.98ID:j3OsNt/k0
>>98
早速変更したらできました!!
本当に感謝します
自分の初心者じみた凡ミスですね
ありがとうございます
こころの優しい御仁
2020/12/23(水) 20:48:51.52ID:ZakT/bFP0
初心者じみた…?
2020/12/23(水) 21:42:26.23ID:+z0aXtBh0
ネタかと思って傍観していたが、久しぶりに質問スレっぽくてホッコリしたわ
2020/12/23(水) 23:00:34.90ID:igbw91HoM
完全にいつものあいつじゃん
2020/12/23(水) 23:04:58.03ID:ZakT/bFP0
一見相手を持ち上げてるようで馬鹿にしてるいつもの感じ
2020/12/24(木) 18:03:54.48ID:ib8ApZa60
xlsで共用管理してた物品リストを
現場に飛ばされて激怒した仕事できないおばちゃんが
シートの保護にパスワードをかけてそのまま年末休みに入った
ネットで拾ったプロージャで
パスワードを解除した俺が神扱い
2020/12/24(木) 19:35:35.16ID:i3RIeYBl0
ならこんなところで虚しいアピールしなくていいよ
2020/12/24(木) 20:31:22.57ID:OvKwRG9WM
首案件か…
2020/12/24(木) 21:20:52.76ID:6nJjzXUX0
保護かけただけなら実害ないじゃないか
2020/12/24(木) 23:15:25.57ID:ViSodmdc0
許可なく改竄するのってどうかな
2020/12/25(金) 00:16:09.85ID:OfYljKJA0
ユーザーフォーム1のボタンを押すと開始する処理をユーザーフォーム2から起動する方法ってない?
クラスに書いとかんとだめなのかな
2020/12/25(金) 02:22:11.64ID:Zgx05nqca
書く場所かえればいいのに、いつもの人か?
2020/12/25(金) 02:34:13.17ID:oy51KHzs0
標準モジュールに書いてCallではダメか?
2020/12/25(金) 04:03:39.34ID:OfYljKJA0
>>116
そっか、たしかに標準モジュールに移植すれば良かったか
2020/12/25(金) 19:42:46.45ID:M+L+LuRT0
>>117
Privateを取っ払ってただのSubにすれば、
UserForm1.ボタン_Clickで実行できる。
119デフォルトの名無しさん (ワッチョイ 8b63-p1zl)
垢版 |
2020/12/26(土) 11:08:58.12ID:xVJ70HL70
どなたかお教えください。
e-Gov法令検索
https://elaws.e-gov.go.jp/
というサイトでエクセルにリスト化されている法令を検索し,
ダウンロードすることを試みたいと考えております。
.Navigate でサイトを開き,
.document.getElementById("searchTextBox").Value = "法令名"
.document.getElementById("searchBtn").Click
で,該当の法令を検索させるまではできました。
その後,検索結果を見つけてURLを取得するところでつまずいております。
.document.getElementsByTagName
とかをどのように指定したらよいのでしょうか?
どうぞよろしくお願いいたします。
2020/12/26(土) 13:00:08.72ID:JDXDJsEV0
>>119
そよのサイトでリスト化されているもののダウンロードはエクセルには向いてないので
手作業でやったほうがいいだろう
2020/12/26(土) 14:44:21.47ID:1Jq10AwVM
Javaを覚えろってことか
122デフォルトの名無しさん (ワッチョイ 97f1-evwY)
垢版 |
2020/12/26(土) 14:52:02.96ID:CuJQon1q0
Javaを覚えろってことよ
123>>119 (ワッチョイ 8b63-p1zl)
垢版 |
2020/12/26(土) 15:35:46.04ID:xVJ70HL70
>>120
アドバイスありがとうございます。
しかしながら100件くらいあって,定期的にチェックして(法令が更新されることがあるので)ダウンロードするとなると
つらいです。
なんとかどうぞお願いします。
2020/12/26(土) 16:34:12.06ID:AsvwShK0H
>>123
ちょっとやってみるから、何か一つ検索キーワード教えて
あと検索条件はデフォルトのままでいいの?
125>>119 (ワッチョイ 8b63-p1zl)
垢版 |
2020/12/26(土) 18:32:04.58ID:xVJ70HL70
>>124さん
どうもありがとうございます。
キーワードは
予防接種法
検索条件はデフォルトのままでいいです。
お願いします。
2020/12/26(土) 21:38:03.20ID:AsvwShK0H
>>125
ざっくり見たところ、そのサイトはスタイルシートで検索結果を渡してWebAPIでダウンロードする方式だからGetElementsなどは使えないしURLもどこにも書いてない
WebAPIを呼び出すフォーマットは、例えばこんな感じになってる
https://elaws.e-gov.go.jp/download?law_unique_id=323AC0000000068_20150801_000000000000000&;file_type=PDF_H1
このURLをブラウザのアドレスバーに入れるとPDFのダウンロードが始まる

VBAでできないことはないけど難易度はけっこう高い
素人にはおすすめしない
2020/12/27(日) 00:06:28.37ID:V6kYHqJF0
Ruby なら、curl コマンドとか、open-uri でダウンロードできる

require 'open-uri'

html = `curl ttps://何々`

url = "ttps://何々"
html = open( url )
puts html.read
128デフォルトの名無しさん (ワッチョイ 51da-64+e)
垢版 |
2020/12/27(日) 01:58:09.26ID:s6cy7Ti00
なぜVBAスレでrubyが
2020/12/27(日) 05:17:11.18ID:V6kYHqJF0
Windows 10 にも、curl が入った

コマンドプロンプトで、
where curl
と入力すると、

C:\Windows\System32\curl.exe
2020/12/27(日) 08:26:34.69ID:CaXXLtf40
なら、
コマンドプロンプト
require
この3つをNGワードに追加。捗る。
2020/12/27(日) 08:54:36.12ID:73ofl+2yH
URLを指定してダウンロードする方法の質問なんか誰もしてないのに、いきなり独り言
ルビー使いはあたおかだとよくわかる
2020/12/27(日) 09:21:25.61ID:iG00duHM0
名門校で球拾いより弱小校でエースのほうが楽しいから
まあ関係のない部活に来てたらウザがられるだけだが
2020/12/27(日) 09:39:02.91ID:DRufeyQV0
初心者がもの凄いものをいきなり作ろうとしてここに質問すればできると思っているいつもの人
2020/12/27(日) 10:57:38.42ID:Km9iTMMx0
>>118
おおおお、そういうことかー
これなら標準モジュールに移植しなくても別のユーザーフォームから起動できるね
ありがとうございます!こういう豆知識待ってました
135デフォルトの名無しさん (ワッチョイ 47e6-+OY0)
垢版 |
2020/12/27(日) 18:38:53.38ID:kvcCvRIC0
privateの意味は豆知識ではなく一般常識ては?
2020/12/28(月) 00:09:12.39ID:eYw4/aNg0
ユーザーフォーム2からユーザーフォーム1
ボタンを押したようにできることが豆知識だったのよ
自分にとってはね
2020/12/28(月) 02:13:46.08ID:zq2Mh9UF0
>>133
初心者ではなく初心者から脱却する気の無い人間が
2020/12/28(月) 11:52:39.77ID:D2Ae0vPz0
>>136
分かりにくくなるだろうな
そのフォーム1の処理の中にフォーム2の処理が混ざっていて・・・みたいな
2020/12/28(月) 12:18:01.21ID:tqv11FjK0
単体で使いたい時もあるけど
ある処理の部品としても使いたいとかかな
2020/12/28(月) 12:46:17.64ID:2cxQATNW0
それなら共通部品として切り出して
フォーム1から呼ぶ、2から呼ぶってしないと後々メンテで死ぬパターン
141デフォルトの名無しさん (アウアウウー Saed-ls+h)
垢版 |
2020/12/28(月) 20:20:11.64ID:VGvj7ZmYa
今FTPするのに諸事情あってwininetを利用してるんだけど
これってファイルのディレクトリ移動は無理?
ちなみにLINUXサーバ

例えば
/work/testdir/test.log

/work/movetodir/test.log
って感じで移動したい
コピーした後deleteすればいいのでコピーでもオッケー
今はスマホからならなので詳細ソースは勘弁して

試したのはFtpPutFileやFtpGetFileで
fromとtoをそれぞれファイル名やフルパスで入れ替えたりしてみたんだけど
まぁだめだった
FtpMoveFile的なものはないですか?
142デフォルトの名無しさん (アウアウウー Saed-ls+h)
垢版 |
2020/12/28(月) 20:23:27.00ID:VGvj7ZmYa
ちなみにBASPやWINSCPとかは規約上使用できないです
ない場合はローカルに一時的にgetした後別のディレクトリにPutすると言う力技も考え中
143デフォルトの名無しさん (アウアウウー Saed-ls+h)
垢版 |
2020/12/28(月) 20:51:35.01ID:VGvj7ZmYa
なんとなく自己解決
やはりFTPの仕様上Moveはダメっぽい
力技しか無いかなぁ
2020/12/29(火) 04:24:04.54ID:r4ksfnFx0
シートを開いたときにシート上のコンボボックスにリストを読み込ませたいんですけど、
シート上にある文字列を読み込むのではなくマクロのみで特定の文字列を読み込ませることって出来ますか?
2020/12/29(火) 04:50:38.55ID:r4ksfnFx0
DirectXのコンボボックス使えば一発でした……すみません……
2020/12/29(火) 06:16:00.81ID:r4ksfnFx0
ActiveXのコンボボックス2つを設置し、以下のようにシートのところに記述後、ComboBox1のプルダウンボタンをクリックすると、

実行時エラー "380":
Valueプロパティを設定できません。プロパティの値が無効です

と表示され、「ComboBox2.Value = "G6"」がハイライト表示になるのですが、対処法が分かりません。ご教授お願い致します。

---------------------------------------------------

Option Explicit

Private Sub ComboBox1_Change()
ComboBox2.Value = "G6"
End Sub

Private Sub ComboBox1_DropButtonClick()
ComboBox1.List = Array("A", "B", "C", "D")
End Sub

Private Sub ComboBox2_DropButtonClick()
If ComboBox1.Value = "A" Then
ComboBox2.ListFillRange = "G6:G9"
Else
ComboBox2.ListFillRange = "G6:G8"
End If
End Sub
2020/12/29(火) 06:25:34.42ID:r4ksfnFx0
すみません、Stylesプロパティが2 - fmStyleDropDownListだったからValueに代入できなかったんですね……
ComboBox2.ListIndex = 0 にしたら直りました。お目汚しすみません。
2020/12/29(火) 15:15:22.81ID:eRbfzaAa0
コンボ1→鈴木一郎
コンボ3→鈴木専務
      鈴木部長
      須藤係長
      杉村課長
コンボ3には先頭一致で「す」を検索し絞り込みで表示したいのですがむずかしいでしょうか?あるいは漢字一文字で検索でもいいのですがMatchFound関数を使用するのではないかと思うのですが検討もつきません
Option Explicit
Private Sub ComboBox2_Change()
End Sub
Private Sub UserForm_Initialize()
Dim r As Long
ComboBox1.ColumnCount = 2
For r = 1 To Sheet3.Range("A" & Rows.Count).End(xlUp).Row
ComboBox1.AddItem Range("DB!A" & r).Value
ComboBox1.List(r - 1, 1) = r 'リストの2列目にシートの何行目かを記憶
Next
End Sub
Private Sub ComboBox1_Change()
Dim r As Long
Dim c As Integer
r = ComboBox1.List(ComboBox1.ListIndex, 1) '選択したリストの2列目(シートの何行目か)
ComboBox2.Clear
For c = 2 To Sheet3.Cells(r, Columns.Count).End(xlToLeft).Column
ComboBox2.AddItem Sheet3.Cells(r, c).Value
Next

End Sub
2020/12/29(火) 15:20:48.46ID:xvN7YPpo0
インデントしてない時点で(キリ
2020/12/29(火) 15:24:36.38ID:1ep2xIo7M
>(キリ
ウザっ
2020/12/29(火) 16:02:20.40ID:NKmqU0kK0
>>148
リスト全部チェックして一致したものを追加するなりシート上でフィルタした結果を追加するなりしたらいいんでないの
2020/12/29(火) 16:26:47.99ID:NKmqU0kK0
思ったんだが、そのコード自分で読み込んだり動き確認したりしてないだろう…
2020/12/29(火) 16:30:16.32ID:9/T630Lp0
質問するのが趣味なんだろ
2020/12/29(火) 16:53:27.47ID:dODwImwo0
読み仮名でソートすればいいんでないの
エクセルの並び替えもこうなるし


大学(おおきいで変換)


大学(だいで変換)
2020/12/29(火) 18:16:49.35ID:eRbfzaAa0
すいません!
質問するレベルにも到達してなくて
シート上で一致させるなら簡単ですね
質問が趣味ではないのですが
業務で必要なもので初心者ながら悪戦苦闘しています
質問のしかたが悪かったと思います
ちょっと考えて質問したいと思います
2020/12/29(火) 18:20:31.42ID:U6Tn+IN30
いつものあいつだろ
2020/12/29(火) 18:24:55.74ID:NKmqU0kK0
いつものやつだった・・・
2020/12/29(火) 18:26:09.51ID:eRbfzaAa0
前に質問した時も
誰かと勘違いされたような・・・
誰ですか?
VBAスレには
4回ぐらいしか書き込んだりしてないのですが?
どういった人と勘違いしてるんですか?
荒らしみたいな人いるんですか?
2020/12/29(火) 18:57:29.26ID:lS8hY7UX0
話題に上ると嬉しそうに反応すんなよw
2020/12/29(火) 20:40:10.06ID:eRbfzaAa0
>>159
だからここには4回ぐらいしか来たことない
どういったら信じてくれるのかな
初めてだわ
荒らしと間違えられたの
どんな荒らしなの?
普通に書き込んでるつもりなんだけど?
何か気に入らなかった?
3日前ぐらいに書き込んだ時も勘違いされたけど
ホント勘弁して
2020/12/29(火) 22:12:23.41ID:DC9TsoaB0
荒らしと同じようなことを書くから間違われるのでは?
2020/12/29(火) 22:16:06.03ID:mchvBN/f0
真っ赤な帽子にキラリとヒカル
2020/12/29(火) 22:16:31.70ID:eRbfzaAa0
>>161
どこがどう悪かったのか教えてください
2020/12/29(火) 22:29:26.63ID:dODwImwo0
おかしな事言う人がいるな
でスルーしてたらいいと思うよ
今のままだと思うツボ
2020/12/29(火) 23:51:56.35ID:xvN7YPpo0
>>78
わからぬ。ホムペとかに時々セミナーの写真とか載ってるからそれを見て判断
性格まで瓜二つだからすぐわかるぜw
2020/12/30(水) 01:27:15.02ID:RXqudRq00
俺も前になんかの質問したときにいつものアイツって言われた事があったから逆になんでもかんでもいつものアイツって言いたがる荒らしが常駐してるもんだと思ってた
2020/12/30(水) 01:52:55.19ID:Oh92F1JH0
シートを開くと「オブジェクトが必要です。」だの「メソッドまたはデータメンバが見つかりません。」だのと表示されるんですけど、特に修正することもなく動作している(ように見える)んですけど、これ何が悪いんですかね?
2020/12/30(水) 03:31:25.87ID:AqLm+Pp2M
PERSONALに余計な書き込みしちまっつてるんじゃね。
再表示させて全部消すんだ。
2020/12/30(水) 03:53:07.20ID:Oh92F1JH0
Personal.xlsですかね?
探しましたがそもそもファイル自体存在しないみたいです……
2020/12/30(水) 03:58:33.29ID:Oh92F1JH0
なんかよく分かんないんですけどエラー行で指定してたコンボボックスを消して再設置したら直りました
助言ありがとうございました
2020/12/30(水) 05:38:22.32ID:AqLm+Pp2M
毎回コンボボックス言ってるなあんた
2020/12/30(水) 05:47:42.87ID:Oh92F1JH0
なんかコンボボックスってクセ強くないですか?
すごく弄りにくくてややこしいです
2020/12/30(水) 08:41:09.68ID:mfFqR3/N0
クセ強いって言うか、1クリックで2回イベント発動するのがなぁ・・
いちいちIf Flag Then Exit Sub とかいれて、
無理矢理1回しか動かないようにしてるけど、
他にいい方法ないもんかね
2020/12/30(水) 08:43:56.99ID:mfFqR3/N0
あ、直前に Flag = Not Flag な
2020/12/30(水) 11:23:33.25ID:hFnpG/QKH
>>173
イベントハンドラは必ず先頭でEnableEvents=Falseするんだよ
そして時間のかかる処理はハンドラの中へ書かずに別プロシージャに飛ばす
2020/12/30(水) 13:02:57.82ID:mfFqR3/N0
>>175
ごめん、1クリックで2回じゃなくて、
選択肢の表示で1回、選択で1回で計2回の間違い
なのでイベントOFFで逃げられない
2020/12/30(水) 16:14:15.56ID:8iwO+LiN0
状態管理用のフラグ作って管理している
2020/12/30(水) 23:59:22.86ID:Oh92F1JH0
>>173
マジすか
もしかしてDropButtonClickイベントに.Clearと.AddItemを入れたら選択してもボックス内に表示されなかったりするのって原因それですかね
2020/12/31(木) 08:04:03.76ID:qAEGulJg0
>>178
そういうの作りながら動作確認しないの?
2020/12/31(木) 08:17:09.79ID:sAh4R5unH
ネットにサンプルがいくらでも転がってんだから、素直にコピペしとけばいいのに
2020/12/31(木) 08:39:17.53ID:5hauEQny0
直ぐにネットの野良コードを見て何も考えずにコピペコピペする人は決して【上級者】ではありません!(キリ
2020/12/31(木) 10:43:23.83ID:yfYCC+Dx0
>>178
多分そう

>>179
最初はそんな罠があると思わないからな
俺は、間にMsgBox入れたら2回出たのでやっと気づいたわ
2020/12/31(木) 10:53:25.38ID:8vAoqqdn0
罠なんてのは理解してる人間が陥るものであってただの知識不足には何の関係もない
想定の動きしなかったら一つ一つ確認するのは最低限のことだ
2020/12/31(木) 11:11:12.57ID:sAh4R5unH
プログラムは決して思った通りには動かず、書いた通りにしか動かない
思った通りに動かない時、それは思った通りに書けてない時
2020/12/31(木) 11:33:07.51ID:yfYCC+Dx0
いや、Windows Update直後に動かなくなるとか普通にあるから

あとVBSだが、最近InputBoxで第1引数の文字が出ないことがある
どこかのファイルから文字を読み込んでるとかじゃなく、
引数に直接指定してるのに
起動しなおすと出るから間違ってはいない
2021/01/01(金) 09:42:29.21ID:Sutdgdij0
間違っているのではなく見落としているんじゃね
2021/01/01(金) 17:08:38.32ID:PXRj0cmP0
そりゃPGの動作ってのは環境含めてだからな
2021/01/02(土) 20:54:06.70ID:gYfsTimq0
不具合がわかっていて放置できるとかうらやましいな
2021/01/04(月) 03:24:12.12ID:SOcZuJtz0
>>125
検索結果はARTICLEタグの1番目から3番目迄(0番目は検索結果とは違うものに使用されてる。)。
その下のクラス名LawDownloadの下にクラス名pdfFileが幾つか見つかるが、その直ぐ下にAタグにhref=で始まるURLが見つかる。

どれもGetElements系で取得出来る。
最後はURLDownloadToFile使えば良いんじゃね?
190デフォルトの名無しさん (ワッチョイ 41ad-qBFf)
垢版 |
2021/01/04(月) 16:03:39.37ID:P/FS/eNz0
バッチでデスクトップを再起動する人もあまりいないと思うが
デスクトップを再起動するプロシージャ内でExcelをQuitすると、Excelが勝手に再起動する
という現象が起きるので一応報告しとくね

環境によるかも
最初からWin10のPCで、Excel2019
(Win8からのアプデPCで、Excel2013では起きなかったかも)

デスクトップを再起動するコマンドを実行してるのはShell関数
Shell関数は非同期のはずだが、その同一プロシージャ内では、APIのSleepで5秒待っても駄目
DoEventsも駄目
そのプロシージャを一旦抜けて、タイマーで5秒後にQuitを実行すればExcelが再起動しない

デスクトップを再起動するのは、とあるツールの強制終了で残るタスクバーアイコンをクリアするためで
そんな用事のある人も滅多にいないだろうけど(クリアしなくても問題があるわけでもないし)
191デフォルトの名無しさん (ワッチョイ 41ad-qBFf)
垢版 |
2021/01/04(月) 16:52:13.02ID:P/FS/eNz0
Access VBAに比べるとExcel VBAは随分安定してるが
それでもゴリゴリ開発を繰り返すと、謎の実行エラーは起きるよね
ソースを全部エクスポートしてインポートし直すと直るやつ
結構有名なはずだが
謎は実在するのにないと言い張るのは、経験不足なだけ

話題の動作を確認したわけじゃないがね
2021/01/04(月) 18:20:52.45ID:WAisD+UGM
あまり何もかもをまとめて処理するのはリスキー過ぎる
小分けにして段階を踏め
2021/01/04(月) 21:23:02.41ID:XJuzf2wY0
VDI環境でメモリ4ギガしか振られてないんだけど、グローバル変数を4つくらい作るとメモリ不足エラーが出て不安定になります。
割り当てるメモリを増やせばエラー収まりますか?
2021/01/07(木) 11:25:47.54ID:vMxmEGnU0
質問というか相談です
フォーム上のテキストボックスを右クリックした時、元の背景色が通常色の場合は黄色に、黄色の場合は通常色にと切替を行い、塗り潰しチェックの様な事が出来るようにした物を作りたいです
なのでMouseDown若しくはMouseUpで拾ってButton=2の場合に、テキストボックスの背景色を切り替える方向で行こうと考えました
MouseDownは1度のクリックで2度処理を行ってしまう為、MouseUPを使用しようと思いましたが、
正直押した瞬間ではなく離した時点なのが至極個人的に違和感バリバリなのでMouseDownでどうにか処理できないかと考えています
その場合、静的変数を用いて2回目かどうかの判定を行うのが良いのでしょうか
2021/01/07(木) 12:14:22.04ID:lqyAMCWOM
Timerで1秒以内の2回目は止めたら
2021/01/07(木) 13:06:20.76ID:LEN4uLCLd
for eachでフィルターがかけられた列をコレクションし、現在のセルと一つ下のセルの値を比較しようと思ったのですが、offsetだと隠れた行の数値が参照されてしまいます。
フィルタリングして可視状態の一つ下のセルを参照するには、どうすればよいのでしょうか。
197デフォルトの名無しさん (ラクッペペ MM26-9Wmm)
垢版 |
2021/01/07(木) 15:55:15.71ID:JVCs6nJOM
無理だな
一つ上のを覚えといて比較しな
2021/01/07(木) 17:04:40.85ID:lqyAMCWOM
該当セルから下方向に、
VidibleがTrueなセルに当たるまで探せば
2021/01/07(木) 20:16:51.59ID:GNpPPMMj0
>>194
マウス離した時に実行するのがExcelに限らず一般的な動作だと思うが
2021/01/07(木) 23:26:20.22ID:q8h4Rq+X0
確かに
↓\→ 弱ボタン離す、でも波動拳出るな
2021/01/07(木) 23:51:53.97ID:CAJlIzxl0
はどうけんてなんですか
2021/01/07(木) 23:59:30.52ID:GNpPPMMj0
イギリスのロックバンドのことです
203デフォルトの名無しさん (アウアウウー Saa3-AlJ8)
垢版 |
2021/01/08(金) 07:36:54.65ID:/1SPkI99a
行とか列のデータのある範囲を選択するメソッドありますか?
currentregionの1行だけみたいなイメージで
今思いつくのは無理くり
Range("C5").CurrentRegion.Offset(略).Resize(略〜
ないしは
Endとかで割り出してから選択する
とかなんですが
なんかもう少しスマートな書き方があれば知りたいです
204デフォルトの名無しさん (アウアウウー Saa3-AlJ8)
垢版 |
2021/01/08(金) 07:38:15.90ID:/1SPkI99a
説明捕捉
>>203
の表の列はAからD以上まである感じです
2021/01/08(金) 08:45:53.52ID:F7dsXzNTM
columnsとかrowsプロパティで範囲から希望の列や行を取り出すじゃ駄目なの?
206デフォルトの名無しさん (アウアウウー Saa3-AlJ8)
垢版 |
2021/01/08(金) 09:53:03.11ID:/1SPkI99a
>>205
いや、rowsだと行全体が選ばれてしまうので

例えば
1行目は4列
2行目は5列
とデータの入っている列数がバラバラな場合
(値は全て入っているものとして)
それぞれ4列とか5列分ぴったりに選ぶメソッドは無いものかと
C列基準とかで選べたら一番いいけど
A1選んで「ctrl+shift+→」と同じ結果でもいいです
207デフォルトの名無しさん (アウアウウー Saa3-AlJ8)
垢版 |
2021/01/08(金) 10:06:49.06ID:/1SPkI99a
すみません
>>205
のヒントで自己解決しました

Range("C5").EntireRow.SpecialCells(引数)
でいけました
失礼しました
2021/01/08(金) 10:12:04.47ID:0GZaxWieH
>>206
一発で求めるメソッドやプロパティはない
たとえば3行目だけ選択だと、たぶんこれが最短
Range([A3], [A3].End(xlToRight)).Select
209デフォルトの名無しさん (アウアウウー Saa3-AlJ8)
垢版 |
2021/01/08(金) 10:18:16.84ID:/1SPkI99a
>>208
ありがとうございます
やっぱり1発ではないんですね
自分が書いたspecialcellも定数と数式とが混在してると
やはりUnionで繋ぐなどしかないので
煩雑になるなあと思っていたので
その書き方の方が良さそうですね
2021/01/09(土) 19:33:14.89ID:tpxthpMW0
Dirコマンド、
コマンドプロンプトに直書きだとローカルもネットワークも取れるのに、
VBAからWSHで取ると、ローカルしか取れないのは何故?
2021/01/09(土) 22:38:35.27ID:sDO7vtGda
理由は知らないけど、コマンドプロンプトのDIRコマンドと、VBAのDir関数は別物です
2021/01/09(土) 22:40:13.80ID:sDO7vtGda
あ、失礼いたしました
VBAのDirでなく、スクリプト経由なのか
1つ前のレスは撤回します
2021/01/10(日) 01:05:09.81ID:kg6XuktW0
>>210
まあユーザ認証回りだとおもうけど
ちょっとコード晒してみて
2021/01/10(日) 01:13:14.86ID:4Xu9louP0
>>213
これそのまま
http://officetanaka.net/excel/vba/tips/tips27.htm

sCmd = "dir [ローカル]" だとOKで、
sCmd = "dir [ネットワーク]" だと取れない
Len(Result)で調べると0文字になってる

コマンドプロンプトでやると取れるから、打ち間違いじゃないと思うんだけど
2021/01/10(日) 01:40:53.81ID:bwHYpHvWH
>>214
手動でコマンドプロンプトからネットが見えるか再確認した?
Windows Updateするとファイル共有が勝手にoffにされることがけっこうあるよ
2021/01/10(日) 02:36:39.33ID:CEBDD+E50
>>215
そんなことねーよ
死ね
2021/01/10(日) 08:23:59.20ID:4Xu9louP0
>>215
確認した
\\ネットワークにChr(34)入れて"\\ネットワーク"にしてもダメ
         (↑半角だと書き込めない)
2021/01/10(日) 08:51:06.81ID:kg6XuktW0
>>214
[ネットワーク]の指定方法正しいか?
\\サーバ\共有名 でないと、\\サーバ だけではだめだぞ

手元で試したけど、うちではUNCパスでもネットワークドライブでもちゃんと動いた
ただし、パスワードは事前に保存済み
パスワード保存してないリソースはテストしてない
2021/01/10(日) 09:02:01.60ID:qJ1NhQml0
ネットワークパス使ってファイルアクセス可能かまず調べる
2021/01/10(日) 09:03:56.67ID:4Xu9louP0
>>218
\\サーバ\共有名って、\\サーバ\共有されてるフォルダ名?
それなら合ってる
ちなみに\\アドレスの数字\共有されてるフォルダ名ってのも試した
パスワードは、エクスプローラーから開くときにパスワード入れなくていい状態になってるから、
保存済だと思う
2021/01/10(日) 11:56:30.27ID:bwHYpHvWH
うちではサンプルのままで問題なく共有フォルダのファイル一覧が出るからWSHのせいではないと思う
エラーコードやエラーメッセージは何も出てない?
Windowsのシェルを置き換えるとか、何かマニアックなカスタマイズしてる?
2021/01/10(日) 12:45:12.99ID:4Xu9louP0
>>221
いや、サンプルのC:\"を\\〜に変えただけ
エラーも何もなく0文字で返ってくる
強いて言えば、試したのがVPN環境
後でVPNなしでどうなるか試してみるけど
2021/01/10(日) 14:01:53.42ID:bwHYpHvWH
>>222
ホスト側のOSはWindows?双方にSMBは間違いなくフルセットで入れてある?
2021/01/10(日) 16:37:15.38ID:4Xu9louP0
>>223
Windows
SMBがどうとかは、IT部門じゃないからわからない(会社の)
2021/01/10(日) 17:55:38.15ID:kg6XuktW0
エラー(メッセージ)が出てないのはたぶん標準出力しかひらってないから
標準エラー出力になんか出てると思われ
2021/01/10(日) 18:05:33.95ID:kg6XuktW0
つかここまでしてわざわざDirコマンド使う必要あるのか
何がやりたいんだ
2021/01/10(日) 20:17:18.14ID:4Xu9louP0
>>226
サーバーの空き容量調べたいだけなんだけどね
方法は他にもあるけど、いちいちドライブ文字設定しなきゃいけないとか、
何かアドインみたいなの入れなきゃいけないとかあるし
Dirコマンドが一番シンプルだし、
batでテキスト出力するのは問題なくできるから、
それを直接変数に入れられないかなと思ったんだけど
2021/01/10(日) 20:39:03.57ID:kg6XuktW0
>>227
WSHつかうならDriveオブジェクトがUNCパスいけるっぽいけど
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/drive-object
2021/01/10(日) 23:21:47.74ID:CEBDD+E50
馬鹿が聞いて馬鹿が答えるスレ
2021/01/10(日) 23:32:18.31ID:LL6dwzdY0
>>229
お前は馬鹿馬鹿いうだけの馬鹿だな
2021/01/11(月) 22:06:06.53ID:pqPOJoG50
このスレでお世話になりまくった者だけど
金欲しさに工場部門の夜勤に今年から異動したからVBA触ることももうない
数年後間接部門に戻れるかわからんけど
いや戻れないだろうけど
スレの全員に感謝だわ
本当に色々教えてもらったし構文そのまま頂けた
本当にありがとう
2021/01/11(月) 23:57:28.02ID:pfNMzUxK0
生産管理でまた使うことになったりして・・・
2021/01/12(火) 01:59:02.62ID:OTa0Zw/f0
VBAに触らなくて良くなるだけで羨ましいわ
2021/01/12(火) 19:01:11.25ID:dCVmoeOp0
>>231
製造現場になじめないで会社辞めるに1ガバチョ
2021/01/13(水) 19:37:02.44ID:lspxZscb0
Dirコマンドの件で回答くれた皆さん

パスにUTF-8で文字化けする文字を含んでいたのが原因だったわ
しょうもないオチでごめんなさい&ありがとう
2021/01/13(水) 20:54:16.63ID:aeNWg8u3H
UTF-8からシフトJISに正しく変換できない文字かあ
葛飾区とか草薙とか色々あるよな
記号も〜とか¥とか半角スペースとかマイナスとか、よく使うのに化けるのがたくさんある
237デフォルトの名無しさん (スッップ Sd9f-ZaM3)
垢版 |
2021/01/14(木) 02:22:27.50ID:JNzdWMyDd
>>235
それを解決できない馬鹿が中途半端に書き込むなよ
2021/01/14(木) 05:19:52.68ID:ecyWCD0F0
知恵袋よかこっちの方がよほど親身なのは住人が優しくてイイ人ばかりだからでつか?
2021/01/14(木) 07:59:40.60ID:gDZI6jyWr
=TEXT(ROUNDDOWN(a1,1-INT(LOG(a1))),IF(1-LOG(a1)>0,"0."&REPT(0,1-INT(LOG(a1))),"0"))

をVBAで記述するとどうなるのか教えて欲しいです。よろしくお願いします。
2021/01/14(木) 12:22:18.25ID:YIqcuI1O0
a = [TEXT(ROUNDDOWN(a1,1-INT(LOG(a1))),IF(1-LOG(a1)>0,"0."&REPT(0,1-INT(LOG(a1))),"0"))]
2021/01/14(木) 12:56:03.99ID:YzBTA1U5H
>>240で解決してたけど、一応正攻法みたいな物

Sub 有効数字2桁()
  Dim A1 As Double
  Dim L As Integer
  Dim S As String
  Dim F As String
  A1 = Range("A1")
  L = 1 - Int(Log(A1) / Log(10#))
  If L > 0 Then
    F = F & "." & String(L, "0")
  Else
    F = "0"
  End If
  S = Format(WorksheetFunction.RoundDown(A1, L), F)
  Debug.Print S
End Sub
2021/01/14(木) 18:59:26.33ID:+2NwXrek0
>>240
マジか・・
普通に書くか、いちいちWorksheetfunctionとか書いてたわ
2021/01/14(木) 20:01:26.65ID:SduAKFWs0
質問です。

シートモジュール内で、

Private Sub Worksheet_Change(ByVal Target As Range)
For Each test In Range("他シートにある名前付きセルの名前")
Next test
End Sub

これで実行時エラー”1004” ’Range’メソッドは失敗しました:WorkSheetオブジェクト が出てしまうのですが、原因は何でしょうか。
Publicを取ってみたり、シートを指定しみたりしたんですが、変化ありません。
標準モジュールに記述してF5で実行した場合はエラー発生しません。
宜しくお願い致します。
2021/01/14(木) 20:33:06.60ID:gxjpIPZs0
シートを指定する
名前の適用範囲を確認する
2021/01/14(木) 20:38:30.13ID:SduAKFWs0
>244
名前の適用範囲を変えてみたりもしたんですが、だめでした。
2021/01/14(木) 20:52:33.18ID:SduAKFWs0
>>244
すみません、解決しました。
名前の適用範囲を参照範囲のシートあるいはブックにして、且つVBAでそのシート指定すればいけました。
2021/01/14(木) 20:55:12.26ID:yNTWs1ET0
>>243
In Rangeの範囲がそのシートだから、そこに名前付きセルはない
その範囲のあるシートがわかってるなら、In 他シート.Range("... のように指定するか
同一ブック内ならIn ThisWorkbook.Names("名前付きセルの名前").RefersToRange
とかでいけんじゃね
2021/01/15(金) 07:45:14.16ID:fl9fRXksr
>>240
>>241
ありがとうございます。
2021/01/16(土) 04:08:04.09ID:wM/4uvwh0
@Set DB As CurrentDb

ASet DB As CurrentDb()

この二つに使い分ける意味はありますか?
2021/01/16(土) 10:41:53.52ID:MRodpgDG0
ないと思う
2021/01/16(土) 16:36:07.57ID:SaJeHrUX0
@はカッコつけたい時
Aはキーボード打つのめんどくさい時
2021/01/16(土) 19:03:22.47ID:wM/4uvwh0
>>250>>251
ありがとう。教本読んだら2種類出てきたので、
何か違いはあるのかと思いまして。
同じだったのか…。
2021/01/16(土) 19:33:57.85ID:MRodpgDG0
同じではない
必要性を感じないというだけ
2021/01/16(土) 20:50:02.04ID:wM/4uvwh0
必要ないのを同じと表現したの
2021/01/16(土) 21:12:53.28ID:haZmUiAy0
>>253
使い分ける意味がないのに同じでないのはないってどういう意味?
2021/01/16(土) 21:22:36.09ID:BbkPLu/V0
ExcelのVBAにCurrentDbなんてないのは置いておくとしても
その文ってどっちもエラーになると思うんだが
2021/01/16(土) 21:38:23.62ID:wM/4uvwh0
あ、すみません…
AccessVBAのスレってあったんですね。
申し訳ない。
あと1As」 って書いちゃってたけど「=」
2021/01/16(土) 21:39:02.86ID:wM/4uvwh0
訂正
あと「As」って書いちゃってたけど当然「=」でした
2021/01/16(土) 21:59:42.58ID:BbkPLu/V0
Accessで試したけどどっちも通って同じ結果だな

俺の予想では2はデフォルトプロパティの呼び出しになると思ったんだが
引数省略したら、かっこそのものも除去されて評価されてるのかもしれん

つかその教本ってなんだ?
2021/01/16(土) 22:14:43.61ID:BbkPLu/V0
>>255
この例は同じ結果になってるけど、その二つはまったく同じではないよ
Accessで違いが出る例
Dim DB
Dim CurrentDb As Database
Set CurrentDb = Application.CurrentDb

Set DB = CurrentDb
MsgBox TypeName(DB)

Set DB = CurrentDb()
MsgBox TypeName(DB)

まあCurrentDbとかいう変数名は少なくともVBAではお勧めできないけどな
2021/01/16(土) 22:21:15.40ID:wM/4uvwh0
CurrentDb自体を変数にするとか、それはもう別の話では
2021/01/16(土) 23:00:55.60ID:BbkPLu/V0
前提を絞らなければ、動作に違いが出るかどうかの話だから別の話じゃない
変数名の良し悪しに関してはまあ別だが

つかその教本とやらを曝せ
俺的にはデータベースのインスタンスを取得する目的で後者の書き方とかなら、そっちのほうが問題だわ
2021/01/17(日) 05:07:21.78ID:Bpeq2DcA0
実際にはやらない無理な方法で無理矢理話を混ぜ返したいだけで、
そもそも意図を汲んでない
2021/01/17(日) 18:18:57.16ID:6FyugFd+d
初心者です
オートシェイプの名前を検索して置換できるコードを教えてください
調べてもオートシェイプ内のテキスト変換しかありません
お願いします
2021/01/17(日) 20:37:25.77ID:EfLIE7TKH
>>264
オートシェイプの個数は
sheets("Sheet1").shapes.count

名前は
sheets("Sheet1").shapes(1).name
2021/01/17(日) 21:03:01.02ID:Bpeq2DcA0
それはすでに使ってるシェイプの名前だろう
使ってない奴から選びたいんだろう
2021/01/17(日) 21:25:06.25ID:6FyugFd+d
>>265
返信ありがとうございます
下記のオートシェイプに入力されたテキストを検索して置換するコードじゃなくてオートシェイプの名前を検索して置換したいのですがどこを直せばいいのでしょうか
Sub 置換() Dim tbox As Object Dim findStr As String Dim replaceStr As String Dim count As Long Dim i As Long Dim myDocument As Worksheet findStr = InputBox("置換対象文字列") replaceStr = InputBox("置換文字") Set myDocument = Worksheets(1) myDocument.Shapes.SelectAll
For i = 1 To myDocument.Shapes.count If myDocument.Shapes(i).Type = msoGroup Then Selection.ShapeRange.Ungroup.Select For Each tbox In Selection.ShapeRange tbox.TextFrame.Characters.Text = _ Replace(tbox.TextFrame.Characters.Text, findStr, replaceStr)
Next Selection.ShapeRange.Regroup.Select Else
Set tbox = myDocument.Shapes(i).TextFrame tbox.Characters.Text = _ Replace(tbox.Characters.Text, findStr, replaceStr)
End If
Next
End Sub
2021/01/17(日) 21:32:27.18ID:sTdEmPzt0
聞く気ないだろw
2021/01/17(日) 22:02:29.00ID:Bpeq2DcA0
そのようだなw
270デフォルトの名無しさん (ワッチョイ 6e8e-gw59)
垢版 |
2021/01/17(日) 22:10:02.50ID:vD50J/Wf0
適当にコードをコピペして聞きだそうとする手口
2021/01/17(日) 22:23:21.58ID:gYjAP2D00
質問です。よろしくお願いいたします。
VBA でスクレイピングを行っています

対象ページ:https://www.rakuten-sec.co.jp/web/market/data/rub.html ‥@
取得したい要素、 CSS セレクタで記載:document.querySelector("#cFx > table:nth-child(6) > tbody > tr:nth-child(1) > td.cell-02 > em").innerText  ‥‥A

しかし、Aは google chrome では取得できて、しかもコンソールでAを指定した場合も目的の値を取得できていますが、
Aを IE11 ->F12 で表示できるコンソールに食わせても、目的の値を取得できません。

質問1:google chrome におけるページ@のCSSセレクタAは、IE11 ではどのようになるのでしょうか?‥‥B
質問2:IE11 でBを取得する方法はどのようなものでしょうか?

以上よろしくお願いいたします。
272デフォルトの名無しさん (ドコグロ MMca-gKIs)
垢版 |
2021/01/17(日) 23:48:28.14ID:7Jg8yd50M
>>267
いろいろと修正箇所が多いので
https://qiita.com/Umaremin/items/b7726fa7340c7f175e77
このサイトのコードの
4行目の後に
Dim findStr As String, replaceStr As String
findStr = InputBox("置換対象文字列")
replaceStr = InputBox("置換文字")
'各Shapeに対する処理の2箇所に
shp.Name = Replace(shp.Name, findStr, replaceStr)
を追加すればうまく出来ると思う

ちなみに、理由は知らないけどリボンのページレイアウトの中のオブジェクトと選択と表示のシェイプの名前を変えずにデフォルトのままだとVBAが出す名前が英語表記になるので注意
2021/01/18(月) 02:58:44.09ID:pyrT8iNXH
ちょっとソースを整理

Sub 置換()
  Dim tbox As Object
  Dim findStr As String
  Dim replaceStr As String
  Dim count As Long
  Dim i As Long
  Dim myDocument As Worksheet

  findStr = InputBox("置換対象文字列")
  replaceStr = InputBox("置換文字")
  Set myDocument = Worksheets(1)
  myDocument.Shapes.SelectAll

  For i = 1 To myDocument.Shapes.count
    If myDocument.Shapes(i).Type = msoGroup Then
      Selection.ShapeRange.Ungroup.Select
      For Each tbox In Selection.ShapeRange
        tbox.TextFrame.Characters.Text = Replace(tbox.TextFrame.Characters.Text, findStr, replaceStr)
      Next
      Selection.ShapeRange.Regroup.Select
    Else
      Set tbox = myDocument.Shapes(i).TextFrame
      tbox.Characters.Text = Replace(tbox.Characters.Text, findStr, replaceStr)
    End If
  Next
End Sub
2021/01/18(月) 06:51:20.31ID:hmFdo1dud
>>272
言われた通りにやったら出来ましたありがとうございます。
自分がやりたかったことと同じでした。
>>273さんも整理してくれてありがとうございます。
2021/01/18(月) 12:58:34.46ID:JT9EgKXH0
>>271
漏れが、Ruby, Selenium WebDriver, Chrome でアクセスしたら、空要素が返ってきた

CSS の :nth-child() 擬似クラスは、
兄弟要素のグループの中での位置に基づいて選択します

https://developer.mozilla.org/ja/docs/Web/API/Document/querySelectorAll
Document.querySelectorAll()

elementList = parentNode.querySelectorAll(selectors);
指定された selectors が CSS 擬似要素を含む場合、返されるリストは常に空になります

エラーログ

"jQuery.Deferred exception: Cannot read
property 'msie' of undefined TypeError: Cannot read property 'msie' of undefined

at HTMLDocument.<anonymous> (https://www.rakuten-sec.co.jp/web/shared/js/app/jquery.share-button.js?20160125:5:415)
at l (https://www.rakuten-sec.co.jp/web/shared/js/jquery.js:2:29375)
at c (https://www.rakuten-sec.co.jp/web/shared/js/jquery.js:2:29677) undefined",
source: https://www.rakuten-sec.co.jp/web/shared/js/jquery.js (2)

ひょっとして、そのサイトがバグっているのかも?
それかログインなど、特別な認証が必要なのかも?
2021/01/18(月) 13:03:01.53ID:JT9EgKXH0
それか、

jquery.share-button.js
と書いてあるから、

jQuery で作った画面か何かの、ボタンをクリックするなどの、
人間による操作が必要なのかも?
2021/01/18(月) 13:14:48.80ID:ipljQC5/a
まあでもVBA関係ないな
2021/01/18(月) 13:39:24.37ID:JT9EgKXH0
そのサイト固有の問題かも。
それに、IE 11 はサポート切れで、多くのサイトで、まともに動かない

基本、Chrome しか動かない。
Chrome以外のブラウザは、まともに動かない
2021/01/18(月) 23:04:09.16ID:lUOrFzyB0
>>275,276,278
検証いただきありがとうございます
なにぶん、単に株価等をスクレイピングするためだけに年始から web スクレイピングを始めたばかりなので、難しいことはよくわかりません‥‥
やっぱり HTML5/CSS の基礎本からじっくりやるしかないでしょうか

引き続き、なにかコメントがありましたらよろしくお願いいたします‥‥

>>277
VBA で
Dim objIE As InternetExplorer
Set objIE = New InternetExplorer
objIE.navigate ur
時間待ちl
Dim htmlDoc As HTMLDocument
Set htmlDoc = objIE.document
Dim elementText As String
elementText = htmlDoc.querySelector("#cFx > table:nth-child(6) > tbody > tr:nth-child(1) > td.cell-02 > em").innerText
と書いていますが、それでもやっぱり VBA は関係ないのでしょうか?
2021/01/18(月) 23:19:34.42ID:froKP66m0
スクレイピングが目的なら悪いことは言わないから大人しくpythonあたりにしとけ
281デフォルトの名無しさん (ドコグロ MMca-2/Tp)
垢版 |
2021/01/19(火) 00:16:19.06ID:9X7jktdiM
今月からpythonを始めてサイトから文字を取ってきてエクセルにぶち込むくらいなら一週間で出来たな
その後のエクセルの処理はもちろんVBAだけどなw
2021/01/19(火) 00:26:22.17ID:i//ZhdNzH
最近のホームページはブラウザごとに動作が違うから、本などを参考にするなら同じブラウザを使わないと、
本質と無関係なところではまって時間を無駄にすることになる

あと株価なんかスクレイピングしてもまったく意味ないぞ
どんだけ大量の数字を集めたところで、それで利益が出せると思ったら大間違いだからな
2021/01/19(火) 01:15:30.84ID:LIV1Afk50
>>282
>どんだけ大量の数字を集めたところで、それで利益が出せると思ったら大間違いだからな
そのとおりだと私も思います、ただし、さや取り(裁定取引)を米国株に適用するのなら商機あり、とみています
さや取り(裁定取引)とは:https://investars.jp/sayatori.php
2021/01/19(火) 06:36:37.01ID:6NIqY8sOM
そもそも自動売買に使う頻度でスクレイピングって規約確認したのか?
2021/01/19(火) 07:21:09.11ID:JrdPscbl0
>>275
を修正

275は、ヘッドレスモードで動かしたので、エラーになったけど、
表示させて動かしたら、エラーにならなかった

でも、要素は取得できなかった

IE11 は、もうサポート切れじゃないの?
使わない方が良い

基本、Chrome を使うべき!
2021/01/19(火) 07:23:53.98ID:JrdPscbl0
勝手に頻繁にスクレイピングしたら、業務妨害で逮捕されるよ

基本、どの会社のサービスでも、
相手と契約して、API を使わないといけない
2021/01/19(火) 07:51:13.37ID:JrdPscbl0
そもそも、そのページ内に、id="cFx" が存在しない

var elems_1 = document.querySelectorAll( '#cFx' );
var elems_2 = document.querySelectorAll( '#cFx > table:nth-child(6) > tbody > tr:nth-child(1) > td.cell-02 > em' );
console.log( elems_1, elems_2 );

Chrome のF12 開発者ツールで実行しても、どちらも取得できない
2021/01/19(火) 08:28:20.74ID:JrdPscbl0
Chrome のF12 開発者ツールのコンソール画面を開くと、幾つかエラーが出てる

ログインしてるとか、営業時間内とか、
何かの条件が揃わないと、

そのページ内に、id="cFx" が現れないのかも
2021/01/19(火) 23:14:02.19ID:LIV1Afk50
>>286
IB証券との契約を検討中です
nyse と nasdaq 両市場の全上場株式を取得する必要はありますが、頻度は一社につき一日に一回だけでいいのが裁定取引のいいところだと思っています
2021/01/20(水) 06:54:28.87ID:sOzWFlEJ0
エンジニアチャンネル・粟島が、
2つの取引所の価格差を利用して、Ruby で鞘取りしてる

【検証】プログラミングでビットコインを自動売買すると一週間でいくら稼げるのか?
https://www.youtube.com/channel/UCMMjv61LfBy5J3AT8Ua0NGQ
2021/01/20(水) 19:14:01.82ID:WKaEu4ler
初心者です。
質問をさせてください。
A列のデータをソートして、境目に改ページを適用するVBAを組みました。
その後にもう1つ動作を組み込みたいのですが、可能でしょうか?
組み込みたい動作は、
改ページの境目の1つ上のC列の内容をF1セルに都度反映させる。
イメージとしては、改ページで分けた内容ごとにタイトル行の一部を変えたい、といった感じです。
例:都道府県別に改ページをし、
東京の場合はタイトル行に東京と入れ込む。
そもそも無理なのかもしれませんが、お伺いしたく。。

長文失礼しました。
ご教示いただけますよう、お願いいたします。
2021/01/20(水) 20:49:26.31ID:j7C4dot+0
まずその通りやってみればいいのに
2021/01/20(水) 20:58:51.72ID:TIrvz66u0
>>290
面白い動画を紹介いただきありがとうございました。
しかし裁定取引では、売りと買いの両方ができないと実現は困難かと考えています
BTC を売りから入ることは、たしか、まだできなかったのではないかと思います
2021/01/21(木) 21:48:26.77ID:YIL/x+Jj0
ソルバーが全然うまくいかないし会社の人も誰もソルバー自体知らんかった
マイナーか…
2021/01/22(金) 02:14:04.86ID:JMbV/GNCa
何て会社?
2021/01/22(金) 02:36:21.59ID:hl68e8TDH
ソルバーは基本原理がわかってないと、どんな計算でもできると思い込んでるとはまる
2021/01/22(金) 08:31:07.53ID:2tHgWLf00
上司と折りがあわずに部署異動になったのに
その職場の連中がlineでマクロが使えんくなったとか簡単に直せるかとか聞いてきて本当にうざい
自分も覚えてないの一点張りで返してるけど
Excelの数式すらまともに使えずに開発タブもチェックしてない連中に直せんわ
連絡してくんなよ
2021/01/22(金) 08:35:33.62ID:+nZCsLp6M
で、質問は何ですか?
299デフォルトの名無しさん (ワッチョイ 5f7f-rvE3)
垢版 |
2021/01/22(金) 08:41:50.70ID:hJPaHw/b0
すいません、教えてください。
Excel VBAでIEを制御しています。IEからデータをもって来てExcelに書き込んだり、
逆にExcel上のデータをIEに書き込んだり。
で、そろそろIEも駆逐されるみたいなのでEdgeとかChromeに対応させなくてはなりません。
そのままでは無理で、Web Driverとか、Selenium Basicが必要。
ここまであってますか?
で、これでEdgeとかChromeに対応した.xlsmを作ったとして、配布するとしたら、配布された側のPCにも
Web Driverとか、Selenium Basicをいれないといけないですか?
2021/01/22(金) 10:48:34.97ID:NBj8+FQEd
エクセル VBA マクロで良い参考書はありますか?
2021/01/22(金) 10:54:17.14ID:Ti3taKZXr
まだブラウザ操作しようなんてとこあるのか
2021/01/22(金) 12:22:32.49ID:I4Aue8uTa
>>296
できると思ってんだけどなー、できないやつなのかもしれんな
303299 (ワッチョイ 5f7f-rvE3)
垢版 |
2021/01/22(金) 14:11:09.33ID:hJPaHw/b0
>>301
Excel と IE というどのPCにでも入っているもので使えるので、5年前くらいからやってます・・
今回、PCに何かインストールしないとできなくなるみたいなので、どうしようかと・・
304デフォルトの名無しさん (ワッチョイ 7f8e-09qk)
垢版 |
2021/01/22(金) 14:15:47.27ID:y6abuyBz0
どうしようもないだろ
はい、次
2021/01/22(金) 14:41:53.73ID:hl68e8TDH
>>303
何も追加インストールせずにEdgeをコントロールする方法ならここに書いてある
サンプルは32bit版だけどPtrsafe追加だけで64bitでも動く
https://www.ka-net.org/blog/?p=7921

ただしこの方法はWindowsやEdgeのバージョンが上がると使えなくなる可能性があるので注意
2021/01/22(金) 15:06:57.75ID:KA18g7jM0
Ruby, Selenium WebDriver, Chrome が一般的
307299 (ワッチョイ 5f7f-rvE3)
垢版 |
2021/01/22(金) 16:52:44.80ID:hJPaHw/b0
>>305
ありがとうございます。最新のChromeベースのEdgeでは使えないことが判明しました・・

>>306
rubyというのを使う場合、実際に動かすときはxlsmファイルと別に何かプログラムを記載した
ファイルを準備し、そのファイルを実行するというイメージになるのでしょうか?
2021/01/22(金) 17:48:37.37ID:KA18g7jM0
例えば、ヤフーに自動ログインするなら、
ユーザー名を入力して、ボタンをクリック、
パスワードを入力して、ボタンをクリック

以下のコードを、a.rb に書いて、ruby a.rb みたいに実行する。
パソコン内に、Ruby の実行環境を構築しないといけないけど

require "selenium-webdriver"

options = Selenium::WebDriver::Chrome::Options.new
options.add_option( :detach, true ) # ブラウザを切り離す
options.add_argument( '--start-maximized' ) # 画面最大

driver = Selenium::WebDriver.for :chrome, options: options
driver.manage.timeouts.implicit_wait = 10 # default timeout

driver.navigate.to "https://login.yahoo.co.jp/config/login_verify2?.src=ym";

element = driver.find_element(:id => "username")
element.send_key "ユーザー名"

driver.find_element(:id => "btnNext").click # ボタンをクリック

element = driver.find_element(:id => "passwd")
element.send_key "パスワード"

driver.find_element(:id => "btnSubmit").click # ボタンをクリック
2021/01/22(金) 19:04:19.47ID:fPx0q4lA0
>>308
アホか?
WebDriver使って良いならVBAだって出来るだろwww
2021/01/22(金) 19:10:53.50ID:AXkriLC/M
seleniumでググるとPythonのほうが出てくると思うんだが本当にRubyのほうが一般的か?
2021/01/22(金) 19:14:00.08ID:j9mQzeTK0
狭い世界を一般的という人はどこにでもいる
2021/01/22(金) 19:26:14.35ID:AXkriLC/M
環境のこと考えるならGASかpowershellを検討してみては?
2021/01/22(金) 23:52:36.81ID:hl68e8TDH
>>307
最新のEdge (バージョン88.0.705.50 Chromium) で動いた
2021/01/23(土) 00:14:35.39ID:tp3qQjJz0
>>313
それEdge じゃねえだろ。
今のEdgeはInternet Explorer_Server無いぞ。
2021/01/23(土) 04:24:33.18ID:W5gOUdwX0
できる奴はネットも本も見ない、わからない事はF1押して調べるだけ

これ定説
2021/01/23(土) 04:56:15.16ID:xJNbQORc0
みんながそんな熟練者じゃないんだし
俺みたいなど初心者をここで助けてくれた人もいる
平和にいこう
2021/01/23(土) 09:29:09.37ID:W5gOUdwX0
そうですよねやっぱ
どこかの知恵袋と違って、ここはみんな優しく解説までしてくれる。器大きいぜ
2021/01/23(土) 11:21:37.02ID:XQqwzCqOd
どの方法だってバージョンアップで使えなくなる可能性はある
CSSやJavaScriptが必要なければXHRオブジェクトが無難

完全にデファクトスタンダードと言えるブラウザが今は存在しないから、VBAでスクレイピングは鬼門になりつつある
今はまだWindowsマシンには必ずIEが入ってるから、しばらくはIEでやってくのがいいんじゃないかなあ
2021/01/23(土) 12:55:12.09ID:E44LngeNd
俺が昨日、勉強したことを共有するぞ
VBAの記述の仕方は、オブジェクト.プロパティの順番だ
覚えておけよ
2021/01/23(土) 12:56:50.53ID:E44LngeNd
MsgBox でTESTと表示できたときの感動ったらなかったね!
これから、少しずつ勉強するぞ
2021/01/23(土) 18:45:02.47ID:H5pOJUEN0
>>305
それIEでも使うな。
よくわからんけど、F12で中が見られない子ウインドウが出るサイトとかある。
2021/01/23(土) 21:45:57.51ID:AoWSUa07d
>>321
それ単なる画像じゃね?
2021/01/23(土) 23:31:46.72ID:H5pOJUEN0
>>322
ObjectFromLresultとgetElementByで値取れるから画像じゃないと思う。
どういう仕組みのウインドウなのか知らんけど。
2021/01/24(日) 05:01:50.09ID:O96X//w/0
田中君
広瀬君
桜井君
松岡君
2021/01/24(日) 11:41:17.66ID:NPfUvm+L0
>>323
それで取れるならF12でも取れるんじゃね?
それかF12押してる対象が違うか。
2021/01/25(月) 00:06:00.16ID:bvf1oedN0
>>325
クリックして、アクティブ&最前面にしてF12押しても何も出てこないんだよね。
2021/01/25(月) 01:12:50.11ID:YwFiLI6Vd
>>326
エロサイトでも怒らないから、ちょっとそのサイト晒して
2021/01/27(水) 02:51:52.41ID:jiG8/Aof0
>>326
Fが12個表示されてないか?
2021/01/27(水) 08:04:15.56ID:rs7ltanux
F*ck F**k FFFFF**k
2021/01/27(水) 16:24:41.99ID:q3mmuO0LH
下記の4行で問題なくIEでURL開けたのですが、

Dim objIE As InternetExplorer
Set objIE = New InternetExplorer

objIE.Visible = True
objIE.Navigate "http://aaa.com/bbb.html";

保存する部分のプログラムがネット上で見つかりません。
hogehoge.htmlでc:\でもエクセルファイルパスでも。

開ききるまでの Do Loop とか、参照の追加とか、
他の必要な事項はわかったのですが、「保存」だけがわかりません。

お願いします。
2021/01/27(水) 16:48:32.96ID:PEXoVVseH
>>330
URLDownloadToFile
https://tonari-it.com/excel-vba-windowsapi-urldownloadtofile/
2021/01/27(水) 19:08:59.20ID:SKP56GPf0
コレクション便利すぎワロタ
333299 (ワッチョイ 5f7f-oOJr)
垢版 |
2021/01/27(水) 23:35:24.32ID:L0AdvpAm0
とりあえず個人のPCでSelenium BasicとChrome Driverをダウンロードして、VBAでChromeを操作してみました。
構文の違いを理解するのにちょっと時間がかかりましたが、VBAでIE操作と同じようなことができました。
しかし、IEに比べてかなり遅いですね。。
とくにFor-nextとかFor eachとかで複数個あるClassを一個ずつ取得してくのがかなり遅い・・。
2021/01/28(木) 05:46:17.68ID:u8tdLuFb0
>>330
最近のWindows には、curl コマンドも入った

コマンドプロンプトで、where curl
と入力すると、
C:\Windows\System32\curl.exe

これとは別に、PowerShell にも、curl コマンドがあるけど、
これは別のコマンドのエイリアスだけど
2021/01/28(木) 10:11:50.01ID:ecmWwtyQH
>>331
ありがとうございます。無事目的は果たせました。
ただし、2点、罠が潜んでました。解消しましたので謎解きは不要です。

1 コピペで張り付けたとき、URLを指定してる行が赤くなって、VBAに否定されました。
  URL"のあとのセミコロンがお気に召さなかったようです。削ったら赤い表示は消えました。
  コピペしたときに改行コードがかわった?

2 取りに行く相手が社内サーバのドメイン持ちだったのでドメイン指定したら、なんかダメで、
  MACも以前そんな反応したことを思い出して、IPアドレス(192.168.*.*)で指定したら動きました。

>>334
curl について調べましたが、数か所で見た説明自体がわかりませんでした。(泣)
お手数かけました。
2021/01/28(木) 10:21:40.83ID:8thmnp2a0
>>315
熟練者はそれだけ分かるのかー
そもそもvbaのマニュアルというものがないしやりたいことのプロパティやメソッドは皆どうやって調べてるのか気になる
まあ今はネットあるけどネット普及してなかった90年代はF1で調べてた?
2021/01/28(木) 10:58:39.20ID:3f25njR4H
>>336
90年代はみんなマニュアル本を買ってた
中身は英語のオンラインヘルプを翻訳して印刷しただけの物なんだけど、誤植と誤訳だらけ
VBAに限らず、1冊3000円〜8000円ぐらいのぶ厚い本が大きい本屋のパソコンコーナーに並んでた
2021/01/28(木) 11:18:10.18ID:3f25njR4H
こういう辞書みたいなやつ、みんな持ってた
https://i.imgur.com/D0Vbidw.png
2021/01/28(木) 11:56:54.04ID:RkzGmpaJd
あ、そうなのか
こうゆう辞書みたいな本はマイクロソフトから情報もらって作ってたのかなね
英語ヘルプで試行錯誤で作ってたのかね
2021/01/28(木) 11:58:15.69ID:8m13k+420
これじゃないけど分厚いの1冊持ってるわ
341デフォルトの名無しさん (ラクッペペ MM8f-rma+)
垢版 |
2021/01/28(木) 15:38:23.08ID:jA4rpiExM
今のExcel VBAって日本語ヘルプ付いてないの?
2021/01/28(木) 15:51:32.46ID:zfNxSqnZd
>>339
発売前に英語版のヘルプが入ったCDをMSから送って貰って、それを手分けして翻訳した
Officeじゃないけど翻訳のバイトしてた

>>341
あるけど、今はオンラインヘルプに飛ばされるからネット環境がないと見れない
昔のバージョンはローカル化できたけど今は無理だと思う
2021/01/28(木) 15:53:40.51ID:8m13k+420
F1ヘルプはあんま役に立たない
2021/01/28(木) 15:55:46.33ID:8thmnp2a0
>>342
バイトすごいですね
今は何の職業?
2021/01/28(木) 19:35:23.37ID:1VXsvNu50
Excelのハイパーリンクをクリックするたびに

MSのサイトにアクセス先の情報を送って
そこからリダイレクトしていたという
衝撃の事実を今日知った。

10年以上つかってて気が付かなかったよ
死ねこいつら
2021/01/28(木) 20:13:31.96ID:RkzGmpaJd
>>345
え、これマ?
2021/01/28(木) 20:18:19.29ID:cYs3zIiO0
ソースを
2021/01/28(木) 20:26:06.12ID:1+p+qv3s0
これ買っとけばいいみたいなど定番の本はある?
ネットでやりたいことをちょこちょこパクって繋げてるけど限界だわ
汎用性の高い一つの大掛かりなVBAを組もうとしたら圧倒的に知恵がない
2021/01/28(木) 20:34:03.81ID:8m13k+420
ネットで調べても書き方が人それぞれだったりちゃんと整理されれなかったり
肝心の自分の目的を書いてなかったりそんなんばっかだからな。
それらの無駄とストレスを減らすために、辞書は1冊あった方がいいな。
書き方と順序が統一されてるだけでも有用。
2021/01/28(木) 20:35:31.88ID:8m13k+420
できる大辞典は定番ではある
他の本はいらん
これにないなら諦めて他で調べればいい
2021/01/28(木) 20:54:55.16ID:8thmnp2a0
vbaでIEとかChromeとか操作できるのは最近分かったけど(やったことはない)、他に操作できるアプリってどのくらいあるの??
2021/01/28(木) 20:55:48.34ID:8m13k+420
エッジもできる
2021/01/28(木) 21:05:03.93ID:8thmnp2a0
あ、ブラウザー以外でおねがいしゃす
2021/01/28(木) 21:09:54.36ID:eBfsAdOM0
>>345
それExselとか書いてないかい?w
2021/01/28(木) 21:27:46.20ID:1VXsvNu50
https://superuser.com/questions/444984/excel-hyperlink-not-redirecting-properly-bug


This is a known Microsoft bug where hyperlinks are redirected to another page if:

You are using Microsoft Internet Explorer:
with a proxy server
while using a firewall that does not allow HTTP requests on your local network
Internet Explorer is not your default browser.
The ForceShellExecute registry key is not present or is not set to 1

You can apply the fix from here:

http://support.microsoft.com/kb/218153

バグなんてもんじゃねえ
2021/01/28(木) 21:31:23.39ID:ABoKcn6c0
>>351
参照設定の中に入ってるのは普通に動かせるし、
WindowsAPIとUIAutomationとSendKeysがあるから、
マウスとキーボードで動かせるようなものなら大抵。
極端な例を言うと、VBAで仮想のファミコン(エミュ)を作ってマリオ動かす人もいる。
357デフォルトの名無しさん (ワッチョイ 7f8e-09qk)
垢版 |
2021/01/28(木) 21:34:15.56ID:46r/uxOM0
>>348
「一度死んでみた」
2021/01/28(木) 21:37:00.50ID:ABoKcn6c0
って書いてて思ったんだけど、
IRモジュール使ってVBAでテレビとかエアコン動かせる人いる?
2021/01/28(木) 21:50:11.88ID:O9WqV6fA0
俺さ、VBAのソース書いてて
インテリセンスが糞だと思ってたけど
上には上があるんだなぁ

今ClassicAspとかいう昔の組んでるんだけど
HTMLとJavaScriptとVBScriptで出来てて
テキスト編集ツール使って
テキストファイルで作ってる
もちろんインテリセンスなんて全く効かない

そうなると一番怖いのが文法エラー
VBAなんかだと一発で分かるけど
最初っからコンパイル自体されないので
どこでエラーになっているか
全く分からない
2021/01/28(木) 21:57:01.68ID:SI9VK8hs0
ブラウザの開発ツールの使い方を知らないだけでは
2021/01/28(木) 21:58:09.32ID:8thmnp2a0
>>356
vbaでエミュってエミュをvbaで起動してるってことではなく?
何をどうやったら作れるのか不思議
vbaでIoTの組み込みや操作も可能なのだろうかー
2021/01/28(木) 22:02:50.14ID:TxA55uF+M
元々仕事でなんとなしに触らざるを得なくなってコピペやらその場限りのググりで生きながらえてきたんだけどちゃんと筋道立てて1から勉強したいというときに適した本やサイトはありますか?
2021/01/28(木) 22:04:15.85ID:8m13k+420
本はある
サイトはない
2021/01/28(木) 22:04:36.53ID:8m13k+420
本も当然、1冊では終わらん
入門編から順に買うことになる
365デフォルトの名無しさん (ワッチョイ 7f8e-09qk)
垢版 |
2021/01/28(木) 22:05:55.11ID:46r/uxOM0
>>359
馬鹿は黙っていればいいのに
2021/01/28(木) 22:49:59.34ID:TfrdJEz20
>>362
慣れてきて半人前くらいになってきたな、と思うならこの本

入門レベルでは決して足りない実務に必須のスキルとは ExcelVBA 実戦のための技術
2021/01/28(木) 23:07:43.56ID:ABoKcn6c0
>>361
VBAでエミュ。
今は消えてるけど、以前ここにワードで動かしてる動画があった。
https://www.nicogame.info/ja/watch/sm28022855

UPされた当時は実機並みのスピードは出てなかったけど、
今のハイスペックPCで動かしたらどうだったか・・。
2021/01/28(木) 23:11:02.95ID:8thmnp2a0
>>367
謎技術
2021/01/29(金) 00:41:18.26ID:R2RLQXG+0
VBAって当たり前だろうけどエクセルの基本的な知識がないと使えないよね?
エクセル全然知らないから大変だな…
2021/01/29(金) 00:42:02.94ID:SG5MocSx0
それじゃ役に立てる場所がないじゃん
実践で使わないと上達しないぞ
2021/01/29(金) 00:49:19.50ID:SG5MocSx0
未来の開拓のため!つっても普通
「よし、エクセルを覚えるぞ」からだろそれは…
PCにエクセルをインストールしてエクセル入門の本を買うところからだな
書式とか関数とかピボットとかスイスイできるほどに覚えてからだなVBAは
でないとプログラムの意味も理解できない
2021/01/29(金) 01:35:07.55ID:R2RLQXG+0
>>371
助かります!
2021/01/29(金) 02:08:08.30ID:R2RLQXG+0
エクセル初歩から覚えるなら絶対買っとけ!って書籍やサイトはありますか?
2021/01/29(金) 02:35:09.20ID:SG5MocSx0
「絶対」は無い。
まあ「絶対ではないがまったり普通に」、
FOM出版のよくわかるシリーズでいいのでは。
当然最初は基礎編ね。
スレ違いだからこれ以上は然るべきところで聞くのがいいと思う。
2021/01/29(金) 03:41:44.14ID:IWwHfNXwH
>>373
入門サイト
https://excel-ubara.com/excelvba1/
2021/01/29(金) 03:58:52.37ID:R2RLQXG+0
>>374
>>375
ありがとう!!
とりあえず神髄を参考にしていきます
2021/01/29(金) 08:15:50.80ID:Xkyf+iIu0
>>369
いや、Excelの知識無くてもVBだけでExcelを動かしてる人いますぜ
その人当然ワークシート関数をろくに知らない
378デフォルトの名無しさん (ワッチョイ b501-qCTK)
垢版 |
2021/01/29(金) 09:35:52.52ID:Llo2P1qs0
昭和の頃は、Excel講座に通うサラリーマンはバカにされてたけど、同時にvi使える人が達人として尊敬されてた。

どう考えてもテキストエディタより表計算のほうが技能必要だけど。
379デフォルトの名無しさん (ワッチョイ b501-qCTK)
垢版 |
2021/01/29(金) 09:38:10.99ID:Llo2P1qs0
日本の成長に脅威したCIAが、たいていの問題に対して使える優秀な製品を貶し、使いどころの限られる古いテキストエディタユーザーを神扱いしたのではないか?
2021/01/29(金) 09:40:46.74ID:higCsMc/M
そもそもVBAは最後の手段であって、それを活用することは決して褒められたものじゃない
ワークシートの機能で簡単にできることを知らずにシコシコ馬鹿みたいにVBA書いてるアホは多い
381デフォルトの名無しさん (ワッチョイ b501-qCTK)
垢版 |
2021/01/29(金) 09:44:43.17ID:Llo2P1qs0
結果、CIAの思惑通り、標準的な日本人はviを使いこなせるが、Excelを使いこなす日本人は少ない。
Excelを使いこなせた方が絶対便利なのに。
2021/01/29(金) 09:55:51.98ID:eIG6sa+UM
テキストエディタはC++やJava などでプログラム開発するためのただの道具だけどな
むしろ本格的なプログラム組むならVBAは汎用性に欠ける
2021/01/29(金) 10:15:15.81ID:9nrwkhnr0
>>378
昭和にExcelあったっけ?
2021/01/29(金) 10:17:07.73ID:9nrwkhnr0
最近はSheetというかExcelの外でのExcelVBAの活用方法を知りたい
2021/01/29(金) 10:28:32.08ID:Hw3psapAM
Excelと他のアプリを連携するにしてもある程度の規模になるとVBAではなくてOffice add-ins(JavaScriptまたはTypeScript)やVSTO(C#)の利用をMicrosoftは推進してる
あくまでVBAはMS Officeのシステムの枠内で処理の自動化を実施するための道具
2021/01/29(金) 11:18:05.10ID:smfBIAno0
>>383
Excel 自体は存在したけど日本語版じゃないしMac用だからリーマンが講座に通うとかはありえんだろうな
アメリカのリーマンかも知れんがw
2021/01/29(金) 11:33:25.67ID:IWwHfNXwH
一番最初にMac版が発売されたのは昭和60年9月、ただしこの時点ではマクロは使えなかった
Windows版は昭和62年10月発売で、ここからマクロ機能が搭載された

この時代だと、viが使える人は別に尊敬されてない
そもそもほとんど知られてなかったんだから、使える人がすごいとか判断すらできなかった
2021/01/29(金) 13:42:22.04ID:Xkyf+iIu0
知人がYouTubeで表計算なりVBを勉強したいと言っているが、同志達からみてどのチャンネルがおつつめ?
金子?ユースフル?たてばやし??
自分、YouTubeであまりExcelの参考にはしないから誰が優秀か全然わからん
2021/01/29(金) 13:44:47.29ID:IzzhGfbbM
つべを見ないのが1番参考になる説
2021/01/29(金) 13:46:17.88ID:Xkyf+iIu0
知人いわく、金子ていうあんちゃんがやたら人気あると聞いてさ
でもプロではないと思うから自分なら観ない
2021/01/29(金) 15:03:44.68ID:XKqQMMzPd
お前ら化石みたい頭してそうだもんな、youtuberとか頑なに受け入れられないんだろうな
俺は金子見て勉強してるよ
2021/01/29(金) 15:07:49.71ID:hZ93xN6Od
Exportasfixedformatメソッドでpdfを出力するとき、そのファイル名にセルの値を参照してるのですが
セルの値が改行されているとエラーが出ます。
エラーを出さず改行を無視してファイル名をつけたいのですが、どうすればよいでしょうか?
2021/01/29(金) 16:22:00.18ID:SG5MocSx0
コード見せてよ
2021/01/29(金) 16:32:12.51ID:wsDc5NzC0
改行の記号忘れたけど
あれをReplaceで消せばいいだけじゃね
2021/01/29(金) 16:36:09.23ID:SG5MocSx0
vbCrとvbLfとvbNewLineを空文字化すればいけるかな?
2021/01/29(金) 16:52:50.17ID:ur5sUiDWd
s = Replace(Replace(Replace(Replace(s, vbCr, ""), vbLf, ""), vbCrLf, ""), vbNewLine, "")
2021/01/29(金) 17:07:40.77ID:8cihH0fua
vbNewLine は vbCr と vbLf の組み合わせか、いずれか一方だから、vbCr と vbLf だけでもいいかも
2021/01/29(金) 17:08:58.02ID:8cihH0fua
そんな定義はないか…
2021/01/29(金) 17:32:34.00ID:wsDc5NzC0
396を関数に
Private Function Getファイル名(byval s as string) As String
Getファイル名 = Replace(Replace(Replace(Replace(s, vbCr, ""), vbLf, ""), vbCrLf, ""), vbNewLine, "")
End Function
2021/01/29(金) 19:31:25.44ID:Xkyf+iIu0
田中派と金子派がハッキリ別れてるわ自分の界隈は
401デフォルトの名無しさん (ラクッペペ MM3e-mj3q)
垢版 |
2021/01/29(金) 20:44:38.50ID:Wez0GYRkM
他のダメ文字は来ないことをお祈りか
2021/01/29(金) 21:10:33.96ID:IWwHfNXwH
youtubeができる前に基本は覚えたから今さら見る気になれないなあ
だからどっちがどうとかも興味ない
2021/01/29(金) 21:43:57.23ID:MBltpUk80
>>399
全部空文字にするなら、置換する元のリストをArrayでくくって、lbound(配列)〜ubound(配列)でその配列の中身ループさせればいいだけじゃん
それ可読性悪すぎ
2021/01/29(金) 21:55:58.53ID:IWwHfNXwH
要素がもっと多いと配列にした方がメンテ性は良くなりそうだけど、4つだと微妙だなあ
個人の好みで片付けたくなる

For Each x In Array(vbCr, vbLf, vbCrLf, vbNewLine)
  s = Replace(s, x, "")
Next
2021/01/29(金) 21:59:33.79ID:IWwHfNXwH
あとForで回すと微妙に遅くなるんで、関数化(ブラックボックス化)して大量のデータを処理するなら1本の式にまとめた方がいいかもしれない
2021/01/29(金) 22:14:22.45ID:SG5MocSx0
つまり403は考え足らずだったと
2021/01/29(金) 23:07:49.79ID:GBOzgJJf0
CreateObject("VBScript.RegExp")で探すのも大差ない?
408デフォルトの名無しさん (ワッチョイ 1163-bDzS)
垢版 |
2021/01/30(土) 00:02:38.07ID:U1XssVyb0
w、Wsは不用です。
あるシートの
w.Cells(1, "B")には000001234や000001234-1などの文字列が入っています。
ハイフンなしの場合は下7桁を。
ハイフンありの場合は-より左の下7桁と-以降を抜き出して
別のシート.同じ行のA列に入れたいです。
下記の処理でelse節を通る場合、
Rightしたときに前ゼロが消えちゃう(1234だけになる)んだけど
消えないようにするにはどう書けばいいですか。
(If節を通る場合は消えません)

If InStr(1, w.Cells(1, "B"), "-", vbTextCompare) >= 1 Then
Dim sNo() As String
sNo = Split(w.Cells(1, "B"), "-", , vbTextCompare)
sNo(0) = Right(sNo(0), 7)
Ws.Cells(gyo, "A") = Join(sNo, "-")
Else
Ws.Cells(gyo, "A") = Right(w.Cells(1, "B"), 7)
End If
409デフォルトの名無しさん (ワッチョイ 1163-bDzS)
垢版 |
2021/01/30(土) 00:03:27.01ID:U1XssVyb0
間違えました
w、Wsは不用です。

w、Wsはシートです。
2021/01/30(土) 01:01:10.51ID:5ChT/CTU0
>>403
>>404
なるほど勉強になるわ
いろんな書き方があるからプログラムは面白いな
スマホで打つの面倒くさいからコピペしたけど自分ならReplaceを4行に分けて一個ずつ処理してたわ
2021/01/30(土) 01:07:22.27ID:6QDP6TPLH
>>408
Else
  Ws.Cells(gyo, "A").NumberFormatLocal = "@"
  Ws.Cells(gyo, "A") = Right(w.Cells(1, "B"), 7)
End If
2021/01/30(土) 02:17:52.72ID:O2YJs/tfd
>>336
言っとくが、本気にするなよw
熟練者はネットも本も見るぞ。
ま、本に関してはVBAの本は見ないかも。
2021/01/30(土) 02:23:06.62ID:O2YJs/tfd
>>385
???
そうか?
VSTO廃れてるように見えるが。
情報少ないし。
2021/01/30(土) 02:42:40.27ID:fm9PSZiO0
>>408
単にWsのA列の表示形式が文字列じゃないだけじゃね
415デフォルトの名無しさん (スフッ Sd0a-Dh1+)
垢版 |
2021/01/30(土) 02:48:37.26ID:qXiZMF+3d
>>392
これ面白そうだったから調べてみた。
s = worksheetfunction.clean(s)
でいけるっぽい
2021/01/30(土) 07:14:33.38ID:1M+OYc940
VBAがそのうち廃止されると噂聞くけど無くなったらExcelじゃなくて良いね
キングとかジャストの安い互換ソフトで十分
それとPython
2021/01/30(土) 07:28:22.98ID:O0XirISQ0
そんなのきいたこともない
2021/01/30(土) 07:31:09.77ID:inFBwlEk0
上にExcel使いこなしてる奴少ないとあるが、事務歴長いおばちゃんとか操作長けてるイメージあるけどどうなの??
2021/01/30(土) 07:45:37.30ID:JU3c6HAP0
>>397-398
> vbNewLine は vbCr と vbLf の組み合わせか、いずれか一方だから、vbCr と vbLf だけでもいいかも
それでいいと思う
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/miscellaneous-constants
2021/01/30(土) 08:19:24.57ID:5ChT/CTU0
>>415
MS様の関数を使うのが一番きれいか
2021/01/30(土) 08:27:30.21ID:jJ/MoYJX0
>>418
テンキーだけ速い。
2021/01/30(土) 08:28:40.37ID:fCdLLOZj0
ワークシートの関数とか基本的なものしか知らないな
知ってると便利そうね
2021/01/30(土) 08:43:21.65ID:BrDW2qLKd
>>418
小企業で事務が2人ぐらいのとこだと、速いけどたいがい変な自己流
いわゆるExcel方眼紙を素早く作って定型文書を作ってしまうとかそんなイメージ
もちろんよく勉強してる人もいるが
2021/01/30(土) 08:54:12.58ID:BrDW2qLKd
[A2] = [Clean(A1)]
2021/01/30(土) 09:29:14.83ID:inFBwlEk0
テンキー速いのは良いね
電卓も得意そうだし
方眼紙はアカンど、あれ考えた人天才かファホどちらかだな
そういうおば様が引き継ぎにくいシートを大量生産しとるんだねうちみたいに
2021/01/30(土) 10:10:18.97ID:1M+OYc940
VBAはいつまで使えるんだろう?
あと15年は大丈夫かね
2021/01/30(土) 10:35:24.24ID:rbovmPt/a
おー、ありがとございまーす‼︎
2021/01/30(土) 10:37:11.90ID:rbovmPt/a
>>419
おー、ありがとうございます‼︎
429デフォルトの名無しさん (ワッチョイ 6d63-IZeX)
垢版 |
2021/01/30(土) 10:41:58.65ID:b7Gs8Wa80
>>408
です

>>411
>>414
ありがとうございます、おっしゃる通り数字扱いになっているのだと思います。
>>411さんの方法でやってみます
2021/01/30(土) 11:30:40.53ID:1M+OYc940
最近、Excel + Pythonとか耳にするけどVBAより何が良いんだろー?
2021/01/30(土) 11:46:57.12ID:O0XirISQ0
ExcelVBAのひどさは文法よりライブラリのひどさにある
言語だけ変えてもあんまり解決しない

丸々置き換えた外部ライブラリならもっと楽にプログラムできるかもしれない
2021/01/30(土) 12:27:45.49ID:1M+OYc940
そうなのかー
2021/01/30(土) 13:08:59.54ID:Jfm3X56+M
Pythonみたいな外部環境使う時は、エクセルを操作って言うより作成する時が多そう
入出力ともにエクセルならVBAの方が手っ取り早いでしょ
2021/01/30(土) 13:24:52.13ID:Au3KeWLZM
というかVBA使ってるのは他に開発ツールが無いからなんだよ
Pythonインストールできる環境ならそもそもVBAなんか使ってない
2021/01/30(土) 13:37:40.94ID:fCdLLOZj0
最近VBA描けるようになって嬉しいけどここ見てると終わってる言語みたいだな...
2021/01/30(土) 13:44:55.44ID:inFBwlEk0
古い言語だからでは?
昭和の定年ジジババがどや顔で昔からプログラミングやっていたと若者にマウント取ってくるのは大抵VBAが大半
2021/01/30(土) 13:51:30.45ID:Jfm3X56+M
終わってる言語だけど、代わりに仕様変更がない安心感はある

諸悪の根源は仕事の効率化って名目でVBA押し売りするサイトやら講師やらだな
はよくたばれ
2021/01/30(土) 14:05:31.86ID:xS3gwMFJ0
今VBA押してるか?
Pythonばかりステマされてる気がする
2021/01/30(土) 14:46:55.21ID:Au3KeWLZM
>>435
今でも使われてるしVBAしか開発環境のない職場も多いし、
いつも手作業で気合いで乗り切るって人より遥かにマシだから引き続き学習進めていいと思うよ
ただ余裕があれば自宅でPythonとかHTML+JavaScript辺り触っとくといいかも
2021/01/30(土) 16:29:08.79ID:Jfm3X56+M
Vbaしかないってどんな状況だよ
2021/01/30(土) 16:33:11.52ID:rDRgl3OZ0
よくあるだろ。
オフィス系を主体に普通に手作業メインで事務やってるとこは。
2021/01/30(土) 16:33:53.70ID:c0t4Oketd
>>434
Pythonインストールできる会社って少ないの?
なにか引っかかるの?
2021/01/30(土) 16:36:47.91ID:rDRgl3OZ0
余計なものはインストールしちゃいけないことになってる
2021/01/30(土) 16:59:35.87ID:SAK/nUhP0
良かれと思って勝手にやって怒られても嫌だしな
2021/01/30(土) 17:00:42.77ID:KmRaLG0X0
規約で使っていいツールが決まってる
2021/01/30(土) 17:06:41.65ID:Jfm3X56+M
何で勝手にインストールするのが前提なんだよ
上に相談すればいいじゃん
それすら出来ない融通の効かない会社なら、そもそもマクロなんか絶対許さないだろ
2021/01/30(土) 17:13:45.33ID:Rr8OfpXod
ウチの会社は全く融通きかない
Alt+F11で上司の上司から呼び出し食らったの思い出しましたわ
2021/01/30(土) 17:17:25.24ID:rDRgl3OZ0
>>446
上に相談で通るって、どんだけ小さい企業を想定してるんだよと
2021/01/30(土) 17:24:56.08ID:SAK/nUhP0
>>446
お前の知ってる会社が世の中のすべてじゃないってことだよ
2021/01/30(土) 17:24:58.39ID:Jfm3X56+M
上に相談するのに企業規模関係なくね?
2021/01/30(土) 17:30:12.43ID:Jfm3X56+M
まぁどうせ無理だろって思い込みでやってるから、
そういう状況なんだろうな

行動しないかやっても中途半端なくせに上司や会社への愚痴は一人前
2021/01/30(土) 17:43:22.21ID:SAK/nUhP0
そうやって思い込みで批判してるお前も思い込み仲間だな
2021/01/30(土) 17:47:12.97ID:6QDP6TPLH
相談するかどうかには規模は関係ない
許可されるかどうかも規模は関係ないかな
相談のしやすさだけは違うかも
454デフォルトの名無しさん (ブーイモ MM8e-PvQU)
垢版 |
2021/01/30(土) 18:58:14.37ID:vCh93ej0M
会社PCでPython+Excelなんて非現実的すぎるよな
相談しても「余計なことしなくていい」で終わり
でもExcelは最初から入ってるからVBAなら無問題
未だに使われてるのはそれが最大の理由
一時期「ExcelでPython使えるようになる」みたいな話があって期待してたけど立ち消えで残念
2021/01/30(土) 19:17:07.76ID:inFBwlEk0
そもそもExcel使いの中でのVB人口が少ないわな
職場によっては白い目で見られる事あるみたいだし。。。
2021/01/30(土) 19:23:25.71ID:rDRgl3OZ0
>>454
うちと同じ
厳格で神経質な大企業だわ
2021/01/30(土) 19:57:40.31ID:O0XirISQ0
python入ってたらpip installぐらいさせてくれるだろ
2021/01/30(土) 20:20:54.08ID:JU3c6HAP0
>>434
Excel関係ないならPowerShellでいいだろ
気合いるけどC#, VB.netだって使えるし
2021/01/30(土) 20:25:06.96ID:VxE/916e0
>>454
えっ、ExcelにPython搭載の話は無くなったの?
2021/01/30(土) 20:38:13.29ID:j+igCUSpM
>>459
ExcelにPythonが搭載?その後
https://qiita.com/yniji/items/b38bc312e860027108ac
2021/01/30(土) 21:00:39.22ID:aByJMjeF0
>>458
PowerShellは軽く調べたことあるけどそんなに便利なの?
C#とかVB.netってのは追加インストールなしでできる?

今のところうちの会社で出来そうな言語は↓

・VBA(Office)
・VBS(WSH)
・Jscript(WSH)
・JavaScript(webブラウザ)
・PowerShell
2021/01/30(土) 21:22:07.64ID:xS3gwMFJ0
VBAで簡単なアプリ開発ってできるの?
tefuくんの体脂肪測定器みたいな
2021/01/30(土) 21:22:48.91ID:O0XirISQ0
いくら便利でも所詮はシェルだし
体系がわかりやすくなっても
いったん古い体系になじんでたら覚える手間増えるだけだし
劇的に安全になったり間違いが減ったり作業が減るわけじゃない
今から入る人以外やる人いるのか?
2021/01/30(土) 21:23:28.18ID:aByJMjeF0
VBAは極めれば当然事務系のシステムはもちろんアクションゲームやシューディングゲームも作れる
開発効率は知らん
2021/01/30(土) 21:35:23.25ID:xS3gwMFJ0
>>464
簡単なアプリ作るのに初心者から何年ぐらいかかるな
2021/01/30(土) 21:40:45.18ID:aByJMjeF0
>>465
ジャンルは?
2021/01/30(土) 21:41:39.22ID:aByJMjeF0
ああ、上に書いてあるようなやつか
人によるけど半年〜1年くらいじゃね?
2021/01/30(土) 21:59:47.48ID:xS3gwMFJ0
>>467
tefu君たいしてすごくないな
ありがとう!
2021/01/30(土) 22:54:30.67ID:inFBwlEk0
昭和の頃からExcelできる=パソコンできる
パソコンできる=Excel Wordできる
この固定観念は不変だいまだに
何故なんだや?
2021/01/30(土) 23:08:10.45ID:O0XirISQ0
だれの概念だ
おれはしらんぞ
2021/01/30(土) 23:08:37.64ID:XeNTB87Q0
固定観念ではなく社会に出てPC使う上で一番必要になるから
2021/01/30(土) 23:14:56.21ID:xzjRtN8LM
昭和だと8bitパソコンの全盛期か?
2021/01/31(日) 01:25:22.99ID:SqzzHClod
>>460
えっ!Excelにjavascript搭載?!
2021/01/31(日) 03:01:40.77ID:Y3xOrDkq0
そもそもアプリがEXCEL何だから何が搭載されようがパフォは大差無いだろうな
それならブックが超軽いとかの方が恩恵あるわ
2021/01/31(日) 10:40:24.97ID:/4jghnKY0
昭和だからMS-DOSって奴か
定年して10年位の近所の爺がやたらExcelの話しだけは詳しかったわ
平成初期って今みたいにpcが普及していたイメージ無いのだがね
2021/01/31(日) 10:44:54.99ID:LH9Tecev0
平成初期は家庭の普及は少ないかもしれないが学校でPCの授業はある時代
2021/01/31(日) 11:12:38.97ID:eXchLs/k0
平成初期頃ならPC-9801+MS-DOS上で一太郎とロータス123の時代
2021/01/31(日) 12:51:12.93ID:LqdlwBTz0
FileSystemObjectのOpenTextFileで開いたファイルのポインタを最初の行に戻す方法ってありますか?
ADOのMoveFirstメソッドみたいな感じの。
2021/01/31(日) 13:05:56.87ID:tZ/FxqNKd
Windows版Excel(もちろん英語版)が最初に発売されたのは一応昭和時代の終わり頃だよ
日本で使ってた人はほぼいなかったと思うけど

使い物になる日本語版が登場したのは平成5年の秋
2021/01/31(日) 14:29:00.06ID:BqVAUrnsx
Excel 95か97は持ってたはずだが…どこいったかな
Excel2000は現役?で使ってたりするw
現代のPCで動かすと爆速だから
2021/01/31(日) 15:54:08.87ID:/4jghnKY0
2000て今のパソコンで動くのか知らんかった
サンクス!
2021/01/31(日) 15:56:11.00ID:1T3G+5lu0
3.1も動くんじゃね?
2021/01/31(日) 16:01:12.88ID:xa1uSfuZH
Excel2000とWindows2000を勘違い
2021/01/31(日) 19:37:03.65ID:U4PZxrG+d
>>435
色んな言語やって適材適所。
VBAの場合、特殊な環境なのでVBAが有利だけど出来ないことも結構ある。
2021/01/31(日) 19:38:49.07ID:U4PZxrG+d
>>451
足らないなら作れば良いってのもある。
バイナリエディタぐらいなら2時間もあれば作れるだろ。
2021/01/31(日) 19:41:00.82ID:MeuEia/rM
足らないなら
足りないなら
2021/01/31(日) 19:42:32.36ID:U4PZxrG+d
>>461
問題はさ、結局VBAから呼び出す形じゃピタゴラスイッチみたいになるし、外部からExcel操作するようなのは、元々VBAでやる必要のない処理なので競合にならないということ。
2021/01/31(日) 20:16:56.70ID:7WfxADLN0
ワード97のイースターエッグでピンボールが遊べた重いで
エクセルは迷路だっけか
2021/01/31(日) 21:05:00.18ID:zGey4MUp0
冴子先生
2021/01/31(日) 21:39:17.09ID:xa1uSfuZH
カイル
2021/02/01(月) 10:35:57.85ID:vqEWjed4a
64bit対応をしてるんですが、素人なのでポインタ/ハンドルとそれ以外の区別が難しいです
GetInputStateはlongptrではなくlongで良い(実際どちらでも動くことは動きました)と思うのですが、合ってるでしょうか?

Private Declare PtrSafe Function GetInputState Lib “USER32” () As Long

(そもそも、パラメータや引数がないのに、何故型宣言が必要なのかからしてよく分からないのですが…)
492デフォルトの名無しさん (ラクッペペ MM3e-mj3q)
垢版 |
2021/02/01(月) 13:32:29.40ID:0pAIWcaIM
https://docs.microsoft.com/ja-jp/windows/win32/api/winuser/nf-winuser-getinputstate

検索しろよ
BOOLだからLONGでいいんじゃねえの?
493デフォルトの名無しさん (ワッチョイ 668e-RKRS)
垢版 |
2021/02/01(月) 15:05:09.75ID:cziAKMq/0
>>491
そんなことがわからない馬鹿はAPI使うなよ
494デフォルトの名無しさん (ワッチョイ 7d01-unxX)
垢版 |
2021/02/01(月) 16:35:31.74ID:4U/YDNuw0
ど素人の質問で大変申し訳ないのだけど、教えていただけないでしょうか。


Sub test()
Dim s As Worksheet

Set s = Worksheets.Add

Debug.Print "ActiveSheet.CodeName : " & ActiveSheet.CodeName
Debug.Print "s : " & s.CodeName
End Sub

というコードで、ワークシートを1枚追加してそのワークシートのコード名を取得しようとしたところ、
VBEを開いているときは問題なくコード名を取得できるのですが、
VBEを開かずに開発タブからマクロを実行させると、ActiveSheet.CodeName も s もブランクとなり、コード名を取得できません。
(VBEを開いた状態であれば、開発タブから実行させても取得できる)

何か追加で設定しなければならないことなどあるのでしょうか?

Excelのバージョンは 2019MSO(16.0.13530.20418)32ビット です。
2021/02/01(月) 17:21:35.68ID:90ziZ1xl0
Debug.PrintじゃなくMsgBoxにしても無理?
2021/02/01(月) 17:26:28.07ID:4U/YDNuw0
>>495
MsgBoxにしてみましたが、変わらずブランクのままでした…
2021/02/01(月) 17:33:05.91ID:90ziZ1xl0
CodeNameプロパティは
VBE閉じてると取得できないみたいね
https://social.msdn.microsoft.com/Forums/ja-JP/d8862af1-4790-44a8-a6b8-89fc9681f7af/excel-12398-codename?forum=officesupportteamja
2021/02/01(月) 17:40:51.41ID:vqEWjed4a
>>492
>>493
ありがとうございました
他人のコードを意味も分からず流用してました
戻り値なんですね
2021/02/01(月) 17:52:09.95ID:GaUVwnAZH
>>497
これまじかー
イベントを起動するシート判定に使おうと思ってたから痛いな
配布する前でよかったのが救いか
2021/02/01(月) 17:58:19.66ID:s7QwQuf00
Nameは使える
2021/02/01(月) 18:31:44.12ID:4U/YDNuw0
>>497
ありがとうございます!
おかげさまで解決しました!
ものによってはVBE閉じていると取得できないということもあるんですね…勉強になりました…
2021/02/01(月) 19:44:46.16ID:x4MWOITLH
497は既存のオブジェクトは大丈夫みたいだな
良かった
2021/02/01(月) 23:01:45.15ID:neAX3K2a0
VBAでIoT、たとえば防犯カメラを特定の時間稼働させることできる?
2021/02/01(月) 23:03:50.03ID:cgpbZmzy0
知らんけど何故VBAでやるの?
2021/02/01(月) 23:04:15.16ID:neAX3K2a0
もしくはラズベリーパイ動かせたりする?
2021/02/01(月) 23:04:51.14ID:neAX3K2a0
>>504
できるのかなと思て
ただの興味本位
2021/02/01(月) 23:11:41.22ID:KRwxYz520
できない
2021/02/02(火) 01:35:01.99ID:eRozloyAH
もちろんできるが
2021/02/02(火) 02:35:02.20ID:K9rz1pjI0
VBAなんか使わなくてもできるだろ
2021/02/02(火) 03:35:20.04ID:CQc47MX20
VBA以外のもんでも使ってりゃいいよね
511デフォルトの名無しさん (ワッチョイ 668e-RKRS)
垢版 |
2021/02/02(火) 05:46:24.43ID:rAxQwi5Z0
こんなこともわからない馬鹿には無理
2021/02/02(火) 07:45:22.80ID:k1bhpTE6x
複数のユーザーフォームをボタンと紐付された関数ごと
別のフォームのマルチページの一つのページとして統合したいんだけど
どうやったらいい?

コントロールのコピーしたら関数まっさらになってしまう
2021/02/02(火) 08:44:36.43ID:xrgeUBRvM
コードもコピペしてオブジェクト名整えれば?
2021/02/02(火) 09:39:10.72ID:k1bhpTE6x
すまん
問題はオブジェクト名にあった

コントロールをコピーして貼り付けるとコピー元とは無関係に
左上から連番でオブジェクト名が新規に付けられてしまう
それで元のコードとの相関性がグチャグチャに

他のフォームからコピーするとオブジェクト名の重複が発生するから
しょうがないとは思うが…

複数フォームを一つのフォーム内ページで管理出来たらコンパクトでいいと思ったが甘かったか
2021/02/02(火) 09:52:43.44ID:k1bhpTE6x
ボタンのオブジェクト名をマクロで変更するにはどうしたらよいかわかる?
2021/02/02(火) 12:07:20.51ID:K9rz1pjI0
素人が作るからそいういう糞システムになる
2021/02/02(火) 13:21:01.13ID:1bf+ts0k0
え?
まさかみんなプロなのここ??
2021/02/02(火) 13:30:17.30ID:k1bhpTE6x
仕事で使っちゃあいるが
ほぼ趣味だな
一度も仕事としてコーディングしたことはないな
2021/02/02(火) 14:20:46.66ID:CQc47MX20
言葉遊びどーでもいい
2021/02/02(火) 20:44:18.05ID:gUgxJ4hN0
VBAで何か生活の役にたつアイデアある?
家計簿しかり、体脂肪計しかり。他には?
521デフォルトの名無しさん (ワッチョイ 2ae6-mj3q)
垢版 |
2021/02/02(火) 20:55:15.73ID:9gegCBvb0
アンケートならもっと人のいるところでやりましょう
2021/02/02(火) 21:54:41.99ID:6HeFUyi4M
扱いたいデータ次第でしょ
スマートメーターとか
デジタル温湿度計とか
インプットのデータが多様であればあるほど
得られる成果の種類も増えるというもの
2021/02/02(火) 22:01:58.54ID:6HeFUyi4M
素人質問
VBSで正規表現の(肯|否)定(先|後)読みが出来ないっぽいんだけど
気のせい?
2021/02/02(火) 22:07:07.66ID:/jXNxNj70
VBAを生活に役立てるとかいう発想が的外れすぎる
Officeでやりたいことを実現する為のものってことすら理解してない
2021/02/02(火) 22:11:21.43ID:CQc47MX20
そんなの正規表現じゃないからできないよ
もちろん一番肝心なVBAにとってのね
2021/02/02(火) 22:11:57.41ID:CQc47MX20
>>524
いまいち理屈になってないな
2021/02/02(火) 22:26:20.10ID:aIKF9fP10
俺はVBAで彼女できたし宝くじも当たった
死んだばあちゃんまで生き返って超ハッピーだわ
2021/02/02(火) 22:27:38.52ID:CQc47MX20
で、オフィス365で結婚できたんだろ?w
2021/02/02(火) 22:46:41.30ID:gUgxJ4hN0
競馬当てるアプリ作れないかなあ
2021/02/02(火) 22:59:13.66ID:IsWRFffm0
まず、「当てるアルゴリズム」を考えなきゃだなw
2021/02/02(火) 23:44:33.28ID:gUgxJ4hN0
ExcelVbaでコロナ撲滅できないかなあ
2021/02/03(水) 00:08:17.17ID:Yvoh8zTm0
感染者の数字をいじればあら不思議
2021/02/03(水) 00:13:00.26ID:IsA8Nz810
>>532
最近、感染者数を少なく発表して緊急事態事態宣言の効果だと思わせてるように感じるわ
でもそれで皆が緊張感を持てば本当に少なくなるわ
2021/02/03(水) 00:22:42.50ID:IsA8Nz810
数字の操作ってゆうか
2021/02/03(水) 00:25:44.87ID:LtKIm7ALM
>>525
意味がわかりません
2021/02/03(水) 09:12:57.83ID:oZwwFQVT0
>>532
なんだEXCELのおかげで減ったのかw
2021/02/03(水) 15:27:10.82ID:+BSqfKukd
感染者数、重症者数、検査数の計算に100パーセントExcel使ってるだろう
2021/02/03(水) 15:33:21.67ID:OWg+mFa00
公務員はエクセル使えるほど有能じゃないよ
2021/02/03(水) 15:43:30.53ID:+BSqfKukd
じゃどうやって計算するんだ
2021/02/03(水) 15:43:54.79ID:OWg+mFa00
電卓
2021/02/03(水) 15:47:57.83ID:vHpfqXCDM
役所の資料落としたら実数入ってることあったけど
関数での計算結果を貼り付けた訳じゃなかったのか
まぁ役所なら只管電卓叩くのはありそうだけど
2021/02/03(水) 15:48:46.57ID:pCF2gtkpM
公務員は電卓使えるほど有能じゃないよ
2021/02/03(水) 17:11:17.18ID:NujmcxqJ0
計算できるとこに丸投げ
2021/02/03(水) 19:08:06.27ID:3ZiqWZ4T0
>>539
算盤
2021/02/03(水) 20:08:10.32ID:N+D/8PXWM
国家公務員ですがVBAとADO(+SQL)でAccessや業務システムからデータ引っこ抜いて統計資料作ったりしてます
前任者は紙に印刷して正の字書いたり交通調査で使うカウンターみたいので数えてました
他にも色々業務楽にしましたが報告すると人が減らされるので、
隠しておいて余った時間に資格試験の勉強とかしてます
2021/02/03(水) 20:31:35.92ID:OWg+mFa00
手作業が当たり前の公務員の職場環境で
マクロ使うとめっちゃ時間余るわな
2021/02/03(水) 20:32:39.17ID:OWg+mFa00
結局>>545もやってる仕事は
効率化なぞしてない無能公務員のままってことなんだから
2021/02/03(水) 21:04:10.99ID:8fFe9VfNM
VBAによる小手先の自動化により無駄な業務の整理や業務フローの見直し、システム改善などの本質的な業務改善のモチベーションが失われ、
結果的に業務効率を下げているというのはVBAあるある
2021/02/03(水) 21:24:07.09ID:pw5uMyFVM
dictionaryに一括代入ってできますか?
2021/02/03(水) 21:29:55.02ID:u9u/PMRw0
>>541
只管とかよくすらっと出てくるね。
2021/02/03(水) 21:31:21.01ID:u9u/PMRw0
>>545
待てこら、それ税金…
2021/02/03(水) 23:26:22.08ID:IsA8Nz810
>>545
周りのひとはvbaやマクロの存在を知らない
業務ではほぼエクセルを使用
そんな企業に転職したい
2021/02/03(水) 23:34:48.39ID:OWg+mFa00
一般事務になるね
マクロできて当然の職場よりは時給下がると思う
2021/02/03(水) 23:54:01.09ID:KaBI8RGU0
結局そういうアナログな企業は、効率化か進まないしそんな脳みそじゃ事業の収益性も低い。よって給料も少ない。
2021/02/04(木) 00:29:12.39ID:EDgIUA7r0
そりゃそうだ
VBA出来て作業効率高い方が給料も高いわな
ただ単純に考えればVBAを
生業にしている奴より
VBAを補佐的に使って実際にはJavaや
C++、C#、Ruby等で大きなシステムを
作れる奴の方が給料は高い
下を見てもきりがないが
上を見てもきりがないのだよ
2021/02/04(木) 05:41:02.93ID:k/pdvxcQM
>>547
抜本的な改革は現場じゃできないです
国家公務員なんで法律や規則、本省が定めた通達や事務連絡、業務システム等を使うことは義務付けられていて、
特段の定めのない部分を各自の裁量の範囲内で工夫するしかない
そしてその範疇ですらある程度の規模の改革をしようとすると根強いアナログ派に今の業務を変える必要がないと反対されます
2021/02/04(木) 08:45:54.79ID:EDgIUA7r0
>>556
全く
それで糞国家公務員の糞議員が
こんなこと言ってるんだから笑える

【科学】「技術先進国とは呼べなくなった日本…デジタル化は20年遅れ、未知数の研究への投資にも消極的」 元内閣府副大臣が警鐘 ★6 [ボラえもん★]
https://asahi.5ch.net/test/read.cgi/newsplus/1612392403/
2021/02/04(木) 12:43:48.65ID:HL3/AUUDa
システムは作るのが目的ではなく、運用してなんぼ
2021/02/04(木) 16:00:33.10ID:UCczH9pi0
政治家が無理矢理変えてあげないとダメなままってことだね。
しかもいい方向に変えようとすると文句を言うほどの無能の二乗。
政治家の改革に公務員は文句を言ってはならないという法律を作らないとな。
2021/02/04(木) 18:23:19.39ID:Si5WR9J9M
予算分捕るためのシステム構築だからいざ運用しようとすると結局人を介しての無駄な作業になってる
561デフォルトの名無しさん (オッペケ Srbd-akYw)
垢版 |
2021/02/04(木) 18:37:47.68ID:FKk50fHur
Open、put といったバイナリーファイル作成するコマンド類使ってファイル書き出したら、
破損しているとメッセージが出る。
それでも修復して開くと元ファイルと同じような感じなのですが、破損されないやり方ってありますか?ちなみにWordやエクセル形式でなってます。
2021/02/04(木) 19:17:39.93ID:4EyDekmA0
民営化勧めた結果だろ
国が技術に直接投資できる機会が減っただけ
2021/02/04(木) 19:49:33.76ID:oAeYA3FP0
誰かVBAでココア作ってやれよ
2021/02/04(木) 19:53:24.63ID:hiF+rUbe0
VBAでモバイル向けアプリは不可能
2021/02/04(木) 20:04:35.91ID:Gq769HFz0
スレチ
2021/02/04(木) 20:22:03.56ID:txoKZHIlx
>>553
東証一部上場のnot ITな技術職だけど
周りびっくりするほどマクロ使える人居ないよ
スクリプトの存在知ってる人で10人に一人くらい
年齢層高くてWindowsupdateも怖いってな感じな
アナログ昭和な雰囲気が色濃く残る
でも儲かってんだからあんまり気にしないって感じでな
2021/02/04(木) 21:59:36.09ID:SP6gWQY80
>>566
よその会社がどんなだろうとわしらに関係ないし
2021/02/05(金) 00:16:00.19ID:7kBPI4G70
HashiCorp の時価総額は5,000億円、GitHub は8,000億円で、

Shopify は15兆円で、
Airbnb は10兆円で、米ホテル大手3社の合計を超える

Ruby on Rails だと、社員1,000人で、1兆円ぐらい行く。
他の言語の10倍ぐらい高い感じ
2021/02/05(金) 01:22:13.93ID:iyRthznT0
だからなに
2021/02/05(金) 11:14:22.52ID:s99X7duh0
何かいているんだろうね
誤爆かな
2021/02/05(金) 19:34:57.84ID:6dLnjK/10
お前が死ぬ?
だからなに?
2021/02/06(土) 07:31:11.79ID:h7KDjzAUa
たらばがに?
2021/02/06(土) 10:04:32.10ID:vJxzd/Np0
タラバガニはカニとつくがヤドカリの仲間
2021/02/06(土) 10:30:51.90ID:V74K/t/p0
前レスにあったVBAでChromeのWEB操作って安定するの?
2021/02/06(土) 10:31:59.83ID:V74K/t/p0
今流行りのRPAってVBAのsendkeyみたいなもんなのかなー
2021/02/06(土) 16:20:00.03ID:Dqii0zXCd
>>575
全然違うw

VBAでも同じことが出来るがSendkeys使うのは、かなりレベルが低い。

普通はUIAutomationか古くからのウィンドウハンドルにコントロール毎の個別メッセージ投げる方法。
2021/02/06(土) 16:31:09.62ID:V74K/t/p0
UIAutomationはじめてきいたよ
検索したら結構すごいな
ありがとうだよ
2021/02/06(土) 19:33:52.07ID:fN47MGl7x
UIAutomation不安定で使いにくいよ
2021/02/06(土) 20:06:48.07ID:V74K/t/p0
あ、そうなの
安定は何?
2021/02/06(土) 20:46:25.88ID:Ye4r/rjw0
Hand
2021/02/06(土) 21:31:42.19ID:V74K/t/p0
Hand?
検索しても出てこない
2021/02/06(土) 21:32:07.41ID:UWEF+xf00
手作業って意味では?
2021/02/06(土) 21:37:41.59ID:V74K/t/p0
えっ!(>@<)
2021/02/06(土) 21:43:24.63ID:lh4GrNRq0
>>578
自分の技術が未熟なだけだろ。
2021/02/08(月) 08:31:47.69ID:3VxmPK6Z0
他の言語にはできてVBAにはできないことって何がある?
2021/02/08(月) 10:21:36.60ID:Scq1JBqB0
環境構築
2021/02/08(月) 10:40:50.82ID:+Mz9f4POH
>>585
言語も色々あるから、VBA「だけ」にできないことってのは思いつかない
VBA「にも」できない、ならexe化とか色々あるけど
2021/02/08(月) 11:53:50.27ID:i/vSXK/G0
>>585
Object指向言語で言うところの継承。
VBAにもインターフェース継承と言うものはあるが、
あれはObject指向言語の委譲に当たるので別物。
2021/02/08(月) 12:19:06.34ID:dnKpq+Faa
>>585
エクセルを使わないで何かする
2021/02/08(月) 12:48:06.83ID:qHUCVA4k0
>>585
全く出来ないわけじゃ無いけど、実質無理なのはマルチスレッド。
マルチプロセスなら出来るけど。
2021/02/08(月) 18:11:48.67ID:p8c3QmB90
ブックを閉じるときに、全部のシートでA4、A6、A18、A20、A22のいずれかのセルに値が入っていたら、
シート名の先頭に"済"をつけて、シートを最後尾に移動するマクロを作りたいのですが、Worksheets(ws).Name = "済" & Worksheets(ws).Nameの所で
「実行時エラー13・型が一致しません」になります

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim ws As Worksheet
For Each ws In Worksheets
ws.Activate
If ws.Cells(4, 1) Like "" And _
ws.Cells(6, 1) Like "" And _
ws.Cells(18, 1) Like "" And _
ws.Cells(20, 1) Like "" And _
ws.Cells(30, 1) Like "" Then
Else
Worksheets(ws).Name = "済" & Worksheets(ws).Name
ws.Move After:=Sheets(Sheets.Count)
End If
Next ws

Application.Quit
ThisWorkbook.Close savechanges:=True

End Sub
2021/02/08(月) 18:14:26.48ID:NxJgvgy90
そりゃ一致しないw
Worksheets(ws).Nameじゃなくて、ws.nameでいけるよ
2021/02/08(月) 18:18:43.05ID:p8c3QmB90
>>592
ありがとうございますm(_ _)m
2021/02/08(月) 20:35:33.37ID:zFuXTVqB0
wsに何を入れてるか自分でわかってないのでは
2021/02/08(月) 22:23:33.63ID:PnrMZIJR0
>>594
エラーになってる行以外は正しいからちょっとした勘違いじゃね?
それよりFor Each ... In WorkSheets のループ中にシートの移動とかして大丈夫なんだっけ?
2021/02/08(月) 22:58:25.06ID:dqyQLjrK0
Like ""じゃなくて.Value <> ""にしてElse消した方が分かりやすいとは思う
まあその辺は好みか
2021/02/08(月) 23:02:43.36ID:PnrMZIJR0
>>596
> Like ""じゃなくて.Value <> ""にしてElse消した方が
And を Or にするのを忘れてるぞ…
2021/02/08(月) 23:11:37.90ID:dqyQLjrK0
そんな揚げ足取らんでも
2021/02/08(月) 23:37:22.94ID:+Mz9f4POH
可読性無視

For Each ws In Worksheets
 with ws
  .Activate
  If .Cells(4, 1) & .Cells(6, 1) & .Cells(18, 1) & .Cells(20, 1) & .Cells(30, 1) <> "" then
   .Name = "済" & .Name
   .Move After:=Sheets(Sheets.Count)
  End If
 End with
Next
2021/02/08(月) 23:44:11.84ID:hflY2uffd
最近はexcel vbaを淘汰しようとkintoneとかゆうのが台頭してきたな
2021/02/09(火) 00:16:34.90ID:WNqxBDcE0
>>600
大体今までの経験則から言うと
ノンプログラミングというのは
ろくなことがない。

無理に纏めようとして
歪みが生じて
結局ぐちゃぐちゃになるのがオチ
2021/02/09(火) 00:29:46.89ID:eSMVOSkL0
>>600
結局、スクリプトとかが必要になる
2021/02/09(火) 00:46:13.94ID:zh7tau7O0
Select文で求めない条件を並べるのもおすすめ

Select Case Empty
Case ws.Cells(4, 1).Value
....
Case ws.Cells(30, 1).Value
Case Else
Worksheets(ws).Name = "済" & Worksheets(ws).Name
End Select

Case節で分けなくてもカンマで条件を繋げても問題ない
短絡評価にもなる
2021/02/09(火) 11:57:03.39ID:RXmZGByb0
sagasu= Dir(ThisWorkbook.Path & ”作業ファイル*20210209*”)

Worksbooks.Open(以下略)

みたいな感じで自動でファイルを探してきて開くマクロを作りたいのですが、20210209の部分が常に変わるので、
変数=hizuke(yymmdd、str)を定義したのでこれをDir関数にワイルドカードつきで組み込みたいのですができませんか?
初歩的かもしれませんが検索しても見つからなくて、、、
2021/02/09(火) 12:24:40.43ID:3oJYLekcH
>>604
sagasu= Dir(ThisWorkbook.Path & "作業ファイル*" & 変数 & "*")

あと、hizukeって関数は自作しなくてもFormatというのがある
2021/02/09(火) 16:16:16.99ID:RXmZGByb0
>>605
やってみたらできた
ありがとうございます!!
2021/02/09(火) 17:23:48.59ID:/LZ4DWEX0
いつものあれか
608デフォルトの名無しさん (ワッチョイ 9fe6-/W+d)
垢版 |
2021/02/10(水) 01:23:44.62ID:nFlUbaHj0
足し算のできないいつもの人か
2021/02/10(水) 21:21:46.44ID:LZ9Af/PB0
良かったよ
プロだらけだったらヤバいスレになるw
趣味と後学のために少しずつやっていたら好きになってきた。
仕事で使う機会あまりないわ
610デフォルトの名無しさん (ラクッペペ MMde-HHI4)
垢版 |
2021/02/12(金) 13:51:51.87ID:IzjdsqjHM
しじいの言う「後学」という単語に哀愁を感じる
2021/02/12(金) 15:55:10.24ID:/wh0XpHtM
Excelの新機能「Lambda関数」によって「Excelの数式がチューリング完全になった」とナデラCEO。プログラミング言語としてのExcel数式であらゆる計算が可能に
https://www.publickey1.jp/blog/21/excellambdaexcelceoexcel.html
612デフォルトの名無しさん (ラクッペペ MMde-HHI4)
垢版 |
2021/02/12(金) 16:16:26.53ID:IzjdsqjHM
チューリングウイルスに期待
2021/02/12(金) 17:41:16.52ID:o9EDytUaM
マクロを10個くらいリボンに登録したらVBEがアドインだらけになってワロタ
どうやらxmlを作って一つのアドインとしてまとめて登録するのがセオリーみたいだな
2021/02/12(金) 20:11:52.96ID:00Lfe/Nd0
>>611
ええええええええええええええええええええええええ

ちょっと驚愕のニュースだ
2021/02/12(金) 20:13:11.50ID:00Lfe/Nd0
つまりもうマクロを四苦八苦して作る必要はないんだな!?
2021/02/12(金) 20:18:24.17ID:00Lfe/Nd0
Excelだ
Excelの時代が来る
2021/02/12(金) 20:22:55.94ID:eP0byIu+0
重さが気になる
便利だけど重くて出来るだけ避けるような関数にならないか
2021/02/12(金) 20:59:52.79ID:jxDcSv/l0
>>611
よくわからんけどVBA使わなくてもユーザー定義関数が書けるようになったのか?
でもそれだけじゃチューリング完全じゃないよね?
誰が説明してくれ…
2021/02/12(金) 21:35:08.47ID:4lNcO7mK0
よくわからんがVBA使わないでってことなら
https://papasensei365.com/excel-game-dq3/
2021/02/12(金) 22:07:36.71ID:aXSnuzkq0
LAMBDA の発表: Excel の数式をカスタム関数に変換する
https://techcommunity.microsoft.com/t5/excel-blog/announcing-lambda-turn-excel-formulas-into-custom-functions/ba-p/1925546
2021/02/12(金) 22:29:40.24ID:aRG7/C7T0
よく分からんけどlet使えてことだろ
2021/02/12(金) 22:35:41.83ID:jxDcSv/l0
>>620
ああ、なるほど名前の一種として関数定義ができるのか
再起を使えばチューリング完全にもなりそうだし、これいいな
ただ、また「(俺が見て)わけのわからん機能は使うな」とか老害に言われるんだろうなw
623デフォルトの名無しさん (ワッチョイ d2e6-HHI4)
垢版 |
2021/02/12(金) 23:02:00.32ID:82D6PoJM0
vbaにLinq付けてくれたほうが喜ばれるぞ
2021/02/12(金) 23:07:09.02ID:GpQsWoGq0
Lambdaがファーストクラスオブジェクトなら以下のようなscheme風の無限ループも書ける
((lambda (x) (x x)) (lambda (x) (x x)))
VBAの時代は終わるかも
625デフォルトの名無しさん (ワッチョイ d2e6-HHI4)
垢版 |
2021/02/12(金) 23:12:05.58ID:82D6PoJM0
まともなセル内数式エディタは付きますか?
2021/02/12(金) 23:18:29.37ID:00Lfe/Nd0
恐ろしいことにつくらしい
動画紹介でついてた
2021/02/13(土) 01:03:54.87ID:HkWfV2pEH
>>611
その lambda とやらは、不動点コンビネータを記述できるのですか?
2021/02/13(土) 04:07:19.47ID:yi//B+MQH
セキュリティでVBA禁止にしても、開いた瞬間に固まるブックが簡単に作れてしまうのかな
意図せず無限ループになったらデバッグが大変そう
2021/02/13(土) 06:10:57.87ID:qLIOxiK10
へー
EXCELでLinqやラムダ式が書けるようになるのか
Linqやラムダ式は.Netでも便利だけど
開発者をふるいに掛けているものの一つだから
理解出来ない脱落者はEXCELやVBAの
開発ですら役立たずの烙印を押される
そんなときが来るなんて夢にも思って無かったな
2021/02/13(土) 06:48:06.39ID:qLIOxiK10
あ、なんだ
VBAで使えたりLinqが使えるようになる訳では無いのか
あいつら基本レイトバインディングだからトレースするとき慣れてないと分かり辛いんだよな
良かったなお前ら
2021/02/13(土) 07:44:30.44ID:PYtZn7CJ0
>>628
> セキュリティでVBA禁止にしても、開いた瞬間に固まるブックが簡単に作れてしまうのかな
今でもあるけど計算回数の上限決めて打ち切るでしょ
2021/02/13(土) 07:56:56.81ID:IALcuoUI0
>>627
https://www.microsoft.com/en-us/research/blog/lambda-the-ultimatae-excel-worksheet-function/

LAMBDA is the true lambda that we know and love

you can define a fixed-point combinator

dekiru
2021/02/13(土) 11:41:30.80ID:PelpVnvk0
>>611
どんだけ凄いの?
だれか40歳にもわかるように説明して
2021/02/13(土) 12:21:31.92ID:PYtZn7CJ0
>>633
例えば、A1, B1, C1セルの中身をカンマで繋いでD1に格納したい
その際セルが空なら"[空だよーん]"ってしたいとするでしょ
今までは
D1: =TEXTJOIN(", ", FALSE, IF(A1 = "", "[空だよーん]", A1), IF(B1 = "", "[空だよーん]", B1), IF(C1 = "", "[空だよーん]", C1))
って似たようなIF式を何度も書く必要があったけどLAMBDA使えたら
f: =LAMBDA(x, IF(x = "", "[空だよーん]", x))
って定義しておけば
D1: =TEXTJOIN(", ", FALSE, f(A1), f(B1), f(C1))
って書ける
さらに課長に"[空だよーん]"とかふざけんな、"[空でございます]"にしろって言われてもLAMBDAの1箇所を直すだけで済む
2021/02/13(土) 12:41:35.80ID:BN4b1mTrp
>>633
40のお前がバレンタインデーでチョコ貰えるくらい凄い
2021/02/13(土) 12:49:30.81ID:PelpVnvk0
>>635
(>_<)\
2021/02/13(土) 14:07:20.92ID:IALcuoUI0
ただの関数定義じゃないか

それで十分だった気はするが
2021/02/13(土) 15:14:43.31ID:wz9KaBQo0
VBAに影響ほとんどなさそう
一発でピボ集計とかシート挿入とかに関係ないし
2021/02/13(土) 15:33:24.19ID:QpeYGISo0
と言うかラムダ式書けるなら、ついでにセル内でも数式の改行とインデントができるようにしてくれればよかったのにな
Excel職人のIFだらけの数式を読むのがまずキツイんだは
2021/02/13(土) 15:40:56.55ID:jHG+5C+w0
セルで分ければいいんだけど一つの数式にまとめられるのがすごいと思ってるからな
まあ自分もそうだったけど
2021/02/13(土) 17:28:35.52ID:VP7xI/GI0
単に複数セル使うのが嫌なだけってのが多いように見える
2021/02/13(土) 18:42:07.48ID:yi//B+MQH
まとめて印刷とか名前を付けて保存みたいな手作業を置き換えるVBAはなくならないかな
2021/02/13(土) 19:19:56.21ID:PYtZn7CJ0
>>639
> セル内でも数式の改行とインデントができるようにしてくれればよかったのにな
それ昔からできるぞ…
https://www.becoolusers.com/excel/img/long-formula-line-break20.png
2021/02/13(土) 19:28:08.81ID:jHG+5C+w0
営業の要ミーティング恐い((((;゚Д゚)))))))
2021/02/13(土) 21:29:40.36ID:T3s5Sft8d
>>639
普通にやってるけど。
読むのキツイんだろ。
2021/02/13(土) 21:48:38.47ID:wz9KaBQo0
うかる!って、説明ヘタだね…
2021/02/13(土) 22:16:40.52ID:OlVotr6u0
職場にIf and orの職人がいるオレに謝れ
2021/02/13(土) 23:44:53.12ID:29TtheM20
んー? 今までセル内の数式って受身の動きだったけど
それ実装すれば自発的に動けるようになるってこと?
2021/02/14(日) 00:40:24.25ID:X0FsHGir0
>>643
まじか、しらんかったわ
勝手にスペース削られたりするもんだと思ってたわ。。
2021/02/14(日) 00:53:19.53ID:D24G58JB0
>>648
自発的には動かないよ
今まではVBAでしかユーザー定義関数は作れなかったけどVBA使わなくても作れるって言うだけ
ただマクロを有効にする必要がないから実務としてはそれなりに意味はある
2021/02/14(日) 00:53:54.05ID:D24G58JB0
>>649
まあ俺もつい1年ぐらい前に知ったんだけどw
2021/02/14(日) 05:33:27.25ID:8cTA8eHd0
それよりかパイプライン演算子を実装して欲しい
ラムダ関数はその足掛かりな気もするけど
2021/02/14(日) 08:25:32.74ID:0LuW/JvdM
セルの書式を調べる関数はよ
2021/02/14(日) 09:01:53.08ID:D24G58JB0
>>653
Cell("format", a1) じゃ駄目なの?
https://dekiru.net/article/4431/
2021/02/14(日) 09:44:10.83ID:9bE5PNm50
EXCELって意外と古いの使ってたりするから受け渡しがどうかな
2021/02/14(日) 09:46:12.37ID:HYvJ8gAi0
>>652
一部がダメ文字の文字コード
2021/02/14(日) 10:33:56.69ID:ccxL17vjM
>>654
ああごめん
表示形式以外の書式ね
色とかフォントとか罫線とか
2021/02/14(日) 10:46:19.10ID:IPhvN32f0
もしかして >>653
データの「表示形式」だけでなくて
フォントや横位置/縦位置、塗りつぶし、罫線なんかの戻り値が欲しいのかしら?
2021/02/14(日) 10:47:17.03ID:IPhvN32f0
ありゃ。本人からの返事の方が早かった
2021/02/14(日) 11:28:53.22ID:D24G58JB0
>>657
4.0マクロ関数でどうぞ
https://blog.goo.ne.jp/koyaman2/e/58506c9b0f18f1577aa694ab4af30edf
2021/02/14(日) 16:36:27.43ID:W30Sj/2D0
VBAはSelectのCaseで、False,Empty,Nullあたりが同一判定されて、個々に行えないのがクソ
2021/02/14(日) 17:23:19.56ID:D24G58JB0
>>661
VarTypeも知らない僕はアホです
っていうカミングアウトか?
2021/02/14(日) 19:08:55.75ID:hT3ZVIIc0
ねこ
2021/02/15(月) 11:39:26.92ID:S0ZRmbKV0
DIR関数を利用して以下のりようなロジックを見たのですが、
foldercheck = (Dir(wrkpath, vbDirectory) <> "")

()の中のロジックはどのような技法なんでしょうか
if Dir(wrkpath, vbDirectory) <> " then
665664 (ワッチョイ 53fd-OxJ8)
垢版 |
2021/02/15(月) 13:15:47.99ID:S0ZRmbKV0
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/comparison-operators

Dim MyResult, Var1, Var2
MyResult = (45 < 35) ' Returns False.
MyResult = (45 = 45) ' Returns True.

自己解決しました。上記と同じなのですね。お騒がせしました。
666デフォルトの名無しさん (オッペケ Src7-Wb2C)
垢版 |
2021/02/15(月) 19:45:33.20ID:olEKN+utr
フォルダへの書き込みのアクセス権をチェックするようなサンプルないですかね。


イメージとしてはフォームのフォルダ選択ボタンを押して選んだフォルダが書き込みできなければ選んだ時点でそういうメッセージを出したい。このあとアウトプットフォイルを書き込む際にエラーが出る前に
2021/02/15(月) 20:10:33.97ID:xaJaofAeH
>>666
まじめにやるならGetFileSecurityとGetAclInformationを使う
もっと簡単にやりたかったら、ダミーのファイルを1つ作ってみてOn Errorでエラーになったかどうか判定
2021/02/15(月) 20:15:42.96ID:nKU68rXI0
FSOのGetFileでフォルダーを取得して
Attlibutesプロパティ見ればいいんでないかな
2021/02/15(月) 20:16:42.83ID:nKU68rXI0
>>668訂正
GetFile → GetFolder
だった
670デフォルトの名無しさん (ワッチョイ d2e6-HHI4)
垢版 |
2021/02/15(月) 20:30:32.32ID:btvLdCUB0
>>668
いいわけないだろw

そもそもフォルダのR属性は他の用途に使われている
2021/02/15(月) 22:00:51.83ID:iJ9piVTy0
普通にicacls呼べばいいじゃん
2021/02/15(月) 22:59:53.76ID:R4sT9O4+0
>>662
いや、それだと0と1がIntegerとしか返ってこないし、
TrueとFalseもBooleanとしか返ってこないから判定できないだろ。バカかお前?
2021/02/15(月) 23:48:13.25ID:yTkZToOt0
isnullはあったよなたしか
2021/02/16(火) 02:55:26.52ID:nbeJO0KhM
CSV形式で保存する前に、Serial値の表示形式をyyyy/m/dにマクロから変更して
保存してからその後開くと、"1/1/2020"とか意味分からんStr型になっちゃうんだけど、
誰か分かるひといる?
csvを取り込むソフトがどうしてもこの表示形式に変更しないと、うまく取り込めない謎仕様なんだ。
ちなみに、いったん保存してから開いてやってもダメだった。
(もちろん、手作業で開いて表示形式変更したらバグらないんだけど・・・)

rngObj.NumberFormatLocal = "yyyy/m/d"
2021/02/16(火) 07:43:45.82ID:+oOyZ54g0
>>672
型を判定してから値を判定すりゃいいだけだろ
応用力ないのか?
2021/02/16(火) 10:30:54.61ID:OCcCJKsW0
整数の1と小数の1.0だと値(バイナリ)が違うって知ったら狂いそうだな
2021/02/16(火) 11:04:29.70ID:+oOyZ54g0
>>674
いま手元にExcelないから確認できないけど
rngObj.NumberFormat = "yyyy/m/d"

book.SaveAs …, Local:=True
に、してみたらどうかな
2021/02/16(火) 11:41:24.25ID:XpWP4Lg+0
2021/2/15 6:43

みたいに、時間が入ったセルの、
日付の部分
だけ変えたいんですがやり方がわからないです

セルの日付(2021/2/15)を変数で定義して、新たな日付(2021/2/16)の変数も定義して
replace(セルの位置,セルの日付,新たな日付)
で入れ替えようとすると型が合わないって出てしまうのですが
どうすればいいでしょうか?
2021/02/16(火) 11:56:30.35ID:S5ddSisTa
>>678
もしかして変数で定義してる型がDateだったり?
2021/02/16(火) 11:58:31.61ID:XpWP4Lg+0
>>679
dateとstring両方試しました
2021/02/16(火) 12:13:25.96ID:9n1pp/97M
CStr(Format(a,″yyyy/m/d“))
2021/02/16(火) 12:24:02.20ID:XpWP4Lg+0
すいません自己解決しました
変数の定義がおなしかったみたいです
2021/02/16(火) 13:04:12.03ID:nbeJO0KhM
>>677
いけましたサンクス!!!
684666 (オッペケ Src7-Wb2C)
垢版 |
2021/02/16(火) 19:15:33.72ID:+pX1epGPr
遅くなりましたが、結局Dummyファイルの書き込みにしました。アドバイス頂いた方ありがとうございました。
2021/02/16(火) 21:00:08.21ID:PQjj23xSa
スミマセン、セルの特殊な機能だと思うのですが、

セルにポインタを合わせると、セルの外側右下に小さな▼が出現、
▼を押すとセルの下に小さなウィンドウが展開し、羅列された文字や数字を選択できる。

上記機能の名称とは何なのか、
どこでイジれるのか、作成できるのか等わからず困ってしまいました。

機能が生きているセルもありましたため、
新規で作成せずともその機能をコピーしようともしましたが方法わからず。

お詳しい方いらっしゃいましたら
お力添え願いたいです。

失礼します。
2021/02/16(火) 21:24:43.99ID:kmFmEkS70
VBAとは関係なく
「セルの入力規則」から「リスト」を選択してあとは適宜
詳細は上記キーワードで検索して
2021/02/16(火) 22:46:03.00ID:g3oiZXVYr
教えていただけると助かります。
VBAでIEからExcelに文章を写したいです。
アクティブなIEからカーソルで範囲指定して、その内容を写すことは可能なのでしょうか?

例えば、ヤフーで気になる記事の内容だけをコピペといった感じです。
気になるものだけなので、検索を入れ込む必要はないです。

IEとYahoo起動まではできるのですが、その先が分かりません。

よろしくお願いいたします。
2021/02/16(火) 23:02:29.70ID:LtHH0x/40
それ手動でコピペしたほうが早いんじゃね
2021/02/16(火) 23:41:10.89ID:5LT5VcGn0
気になる記事の条件は?
それを自分で判断するなら>>688が正解だと思うが
2021/02/17(水) 09:01:14.53ID:tQXaEzsv0
>>687
ちったぁググれ
https://konowaza.com/excel/copy_paste_macro.html
2021/02/17(水) 10:16:38.01ID:vOoN+LpT0
>>690
優しすぎる
2021/02/17(水) 12:53:19.33ID:3Z4/s25m0
>>686
ありがとうございますm(_ _)m
トライします。
2021/02/17(水) 12:57:54.00ID:quEf8nPTr
いえいえ
2021/02/17(水) 12:59:55.94ID:Mp3MtPnAH
クリップボードを監視して、新しいデータがコピーされるたびに保存してくれるアプリとか使えばいいんじゃない?
いちいちウィンドウを切り替えたりペーストしなくていいやつあるだろ
2021/02/17(水) 15:46:44.57ID:i293dZUhd
>>686
機能が生きているセルを上記指南で解析し、
貼り付けで解決しました!
助かりました。
ありがとうございました!
2021/02/17(水) 22:01:12.58ID:YnE2/fOB0
最終列までコピーをしたいんですがエラーを繰り返しなかなか実現できません…
例えばA3セルがデータの始まりでA7セルが最終列の場合、以下の文になるかと思いますRange(“A3:A7”).copy

ただ、半年に一度最終列が一列追加になるので、メンテナンスしなくていいように上の文のA7の部分が最終列になるようにしたいです

この場合何かいい方法はあるでしょうか
2021/02/17(水) 22:41:15.13ID:FtApzB1S0
行じゃなくて列?
2021/02/17(水) 22:42:03.66ID:tZ0yQ1Z/0
オーソドックスなのはこれだけど、物凄い珍回答を聞いてみたいわ
Range("A3:A" & Cells(Rows.Count, 1).End(xlUp).Row).Copy
2021/02/17(水) 22:45:44.66ID:LXOFF6tt0
>>696
last_row = Sheet1.UsedRange.Row + Sheet1.UsedRange.Rows.Count - 1
last_col = Sheet1.UsedRange.Column + Sheet1.UsedRange.Columns.Count - 1
Debug.Print "A3:" & Sheet1.Cells(last_row, last_col).Address(RowAbsolute:=False, ColumnAbsolute:=False)

こんなん?
2021/02/17(水) 22:46:54.85ID:bJ7UNxEFr
>>690

ありがとうございます❗
探してたものに出会えました。
ググってはみたんですが、このサイトには巡り会えなかったので、本当に助かります。
やってみたら、思う結果になりました。
ありがとうございました。
2021/02/17(水) 22:47:30.28ID:YnE2/fOB0
行じゃなく列です
最終列が半年に一回追加になるのです…
2021/02/17(水) 22:50:45.05ID:YnE2/fOB0
>>697
ごめんなさい、最終列の話だったのでA3セルからD3セルをコピーする場合、以下になるんでした
Range(“A3:D3).copy
今はD3が最終列ですが、半年後にはD3が最終列になるイメージです
2021/02/17(水) 22:51:42.12ID:YnE2/fOB0
何度も間違えてすみません…
今はD3が最終列ですが半年後にはE3が最終列になるの間違いでした
2021/02/17(水) 22:55:52.03ID:X7VrF3DN0
最終列取得の仕方調べないの?
2021/02/17(水) 23:06:07.99ID:FtApzB1S0
Range("A3").CurrentRegion.Copy
2021/02/17(水) 23:08:53.17ID:ooyd3US+0
ColLst = Sheet1.Сells(3,Columns.Count).End(xIToLeft).Column
Range(Sheet1.Cells(3,1),Sheet1.Сells(3,ColLst))
みたいにケツのColumnIndexを可変化させりゃええ
指定範囲より右側にコメントが入るのであれば別の方法を考える必要があるけど
2021/02/17(水) 23:09:11.52ID:LXOFF6tt0
CurrentRegionは使えそうで使わない
2021/02/17(水) 23:16:43.14ID:FtApzB1S0
UsedRangeだって使うの怖ない?
どっかにドットあるだけども持ってかれる
2021/02/17(水) 23:18:02.78ID:tZ0yQ1Z/0
これってやり方は何通りかあるけど、
どの状況でも使える完璧なのが無いよな
一見よさげなUsedRange.Find法とかも、
検索と置換の状態が変わっちゃうし
2021/02/17(水) 23:21:06.27ID:LXOFF6tt0
ちゃんとやりたい場合列のヘッダの名前の有無を確認とか意味解析するしかないよ
2021/02/18(木) 00:18:06.29ID:ZQty99yr0
vbaしかつかえないうんちなんだけど、ダイアログに変数名入れたら、その名前を反映させた定型コード作ってくれるような支援ソフトないの?
たとえば、Dim var: var= xとかFor i=LBound(arr) to UBound(arr)とか。いちいちめんどい。
cliborはつかってる。スレチだったらすまそ。
2021/02/18(木) 02:16:18.22ID:QcGF+jUk0
それこそ自分で作れよ
自分だけにに都合よく自動化したいならそれしかないだろ
2021/02/18(木) 08:21:36.53ID:sd++046d0
>>711
そういうの別言語だと見たことあるけど
VBAでは諦めた方がいいんじゃないかなぁ
https://mobile.twitter.com/johnsundell/status/1221758718188060673
こういう奴でしょ?
https://twitter.com/5chan_nel (5ch newer account)
2021/02/18(木) 08:30:28.40ID:0xKDo7Uv0
最終列の取得をしてコピーしたいと申した者です
具体的には2シート目以降のC8セルから最終列までコピペしたくこのような文を書いてました

Maxcol = Worksheets(1).Range(“C8”).End(XlToRight).Column

For i = 2 To Worksheets.Count
Worksheets(i) = Range(Cells(8,3), Cells(8, Maxcol)).Copy
Worksheet(1).Cells(Maxrow,1).PasteSpecial Paste:=xlPasteValues
Maxrow = Maxrow + 1
Next i

上には書いていませんがMaxRowで最終行していて、1シート目の最終行にペーストするイメージです

このとき以下の箇所でエラーになりました

Worksheets(i) = Range(Cells(8,3), Cells(8, Maxcol)).Copy
2021/02/18(木) 08:31:50.99ID:cssKdxraM
>>713
やっぱVbaだと厳しいか、、、別言語だとこんなのあるんだな!ありがとう。
2021/02/18(木) 08:45:37.53ID:0xKDo7Uv0
解決しました…
Rangeの中にCellsを入れる際はCellsの方にもワークシート名を記載してあげなければいけなかったんですね…
お騒がせしました
717デフォルトの名無しさん (ラクッペペ MMde-HHI4)
垢版 |
2021/02/18(木) 10:27:10.11ID:4sNPnSsIM
4点指定でrange作れればいいのにね
2021/02/18(木) 13:38:16.10ID:EVRbmhyV0
>>717
まあ、
Sheet.Cells(開始行, 開始列).Resize(行数, 列数)
もしくは
Sheet.Cells(開始行, 開始列).Resize(終了行 - 開始行 + 1, 終了列 - 開始列 + 1)
ってやるだけだし
2021/02/18(木) 17:41:06.06ID:Khd0zmwWM
>>714
これで動くのか
それならまあいいけども
2021/02/18(木) 20:47:31.34ID:Sdz2Rpjn0
コンパイルしたときに「ユーザー定義型は使用できません」といったようなエラーが出るのですが、
エラー箇所が選択されず特定できません。
ググってみたのですが「関数を一個ずつ切り貼りしながらコンパイル」的な記事しかなく、
結構大きなプロジェクトファイルになってしまっていて現実的ではありません。

原因って何が考えられますでしょうか。
2021/02/18(木) 21:08:20.83ID:QcGF+jUk0
情報が少なすぎるだろ
で、ユーザー定義型を使ったの?
2021/02/18(木) 21:48:45.33ID:sd++046d0
>>720
VBAでは珍しいかも知れないけど
VBSではよくある話
実行前コンパイルの概念がないからね

別に1関数単位で抜かなくても
纏めてごっそり抜いてみて
エラーが発生しなくなったら
残った部分には原因がなくて
抜いた部分に原因があるんで
まずそうやって切り分ける

抜いた部分から半分くらい戻してやって
またエラーが起きないか確認するのを
繰り返して行く内に
原因の可能性がある範囲はどんどん狭まるんで
そうやって確認して行く
2021/02/18(木) 21:52:25.45ID:sd++046d0
原因として考えられるのは
ない型を指定した場合なので
型宣言の書き間違えとかかな
2021/02/18(木) 21:59:48.04ID:Sdz2Rpjn0
>>721
使ってます。
また、クラスモジュールやライブラリも沢山使ってます。
以前なら間違っている名前の箇所が選択されるので、直ぐに原因が特定できたのですが・・・

>>722
今、出来る範囲でモジュールを解放・インポートを繰り返して検証して見たのですが、
フォームモジュールのいくつかが原因の様で、これらを抜くとコンパイル(実行前コンパイル)が成功します。
ただ、その原因と思われるモジュール内の全てのコードを削除しても同じエラー発生します。
意味が分かりません・・・
725デフォルトの名無しさん (ドコグロ MMea-aQRC)
垢版 |
2021/02/18(木) 22:36:52.79ID:Xk2lzcuAM
フォーム内のエラーはフォーム呼び出しコードが選択されるから、F8の手押し連打で進めて行けばエラー箇所で止まるんじゃね
2021/02/18(木) 23:05:06.07ID:jY4O/2kG0
いつもの人っぽいけど、クラスモジュールでエラー止める設定すれば分かるかもしれん
2021/02/18(木) 23:14:40.89ID:Oj+90OvE0
>>726
シートに書くとエラーの場所がわからないから標準モジュールに書け、
なんて書いてるサイトがあって、その解決策しばらく気づかなかったわ
2021/02/18(木) 23:38:17.80ID:chyUcvsN0
ズボラせず1個ずつちゃんと調べなよ
2021/02/19(金) 00:07:23.60ID:3RXIcFsGH
DimとかConstとかでタイプミス
SubやFunctionの宣言部でもよくある
Visual StudioでVB.netプロジェクトを作ってコピペで発見できる場合もある
2021/02/19(金) 03:59:43.95ID:fFtIagGX0
>>725,726
実行時例外じゃないです。

>>728
>>724の通り、発生元と思われるモジュール内コードを全て削除しても発生し、
モジュール自体を解放すると発生しなくなるため悩んでいます。
私も一個づつ調べたいのですが、もはや調べ方も分からない状況です・・・。

>>729
宣言文のタイプミスでも、通常はエラーが発生すれば原因箇所が選択(反転)されると思いますが、
今回はそのエラー箇所の選択がなく困っています。

vscodeですがVB.netプロジェクトへのコピペもやってみましたが、
関係のないエラーや注意が大量発生して特定困難でした。
というか互換性ないと聞いたのですが・・・
2021/02/19(金) 04:14:33.39ID:fFtIagGX0
お礼言うの忘れてました。
沢山回答ありがとうございます。
些細な事柄でも気になる点があればレス欲しいです。

一応質問内容をまとめます
・エラーが発生しているのはコンパイル時です
・通常あるエラー発生箇所の選択がされません(この「発生個所が選択されないという現象」自体の原因も調べています)
・原因と思われるクラスモジュールを解放すると発生しなくなります
・しかし、そのモジュール内のコードを消すだけでは引き続き発生します
2021/02/19(金) 05:06:58.61ID:UOwA+kJV0
なるほど
つまりVBAのコード側の問題ではないと

詳しい状況が分からんから何とも言えんけど
考えられる状況としては
・ファイルがぶっ壊れてる
・フォーム側に使ってるバージョンにそぐわないオブジェクトが設定されている
・使ってるバージョンにそぐわないAPIとかが使用されている
・何か変な参照設定切ってそれを使ってる

とかじゃない?

クラスとかライブラリ(何をもってライブラリと言ってるのかは分からんけど)使ってて
結構大きなプロジェクトファイル使ってると言うなら
元々動いてたものだったと思うんだけど
今改修を掛けているものが同じ環境下(EXCELのバージョンとか使ってるならランタイムとかが同じ)
で動くか確認した方がいいんじゃないかと思うよ
2021/02/19(金) 05:44:12.15ID:6sfyeCMi0
>>731
クラスモジュールを開放したあと、同名のクラスモジュールを空で新規追加したらどうなるの?
そのクラスモジュールの名前は何?
2021/02/19(金) 14:25:58.33ID:fFbWPHDZ0
ユーザ定義型は定義されていません
2021/02/19(金) 21:58:08.64ID:p5a0AjpTa
>>724
インポートとかすると改行や全角空白、タブ、eofとかがおかしいのが入ることあるよ
2021/02/19(金) 23:14:07.14ID:FBAC49/30
ぶっちゃけ原因不明でコードを新規ブックにそのままコピペしたら動いたってのは何度かあった
理由がわからんだけだったのかもしれないけど
2021/02/20(土) 00:17:20.20ID:/mom05J70
怪しい辺りを切り取り貼り付けで直るパターンもあった
2021/02/20(土) 02:39:20.18ID:exEQDxd80
エクスポートして新規ブックでインポートしてどうなるか試せ

そのクラスモジュールとやらをどっかに張ればなんかわかるかもしれん
739デフォルトの名無しさん (ワッチョイ 035f-Nz9x)
垢版 |
2021/02/20(土) 10:48:29.96ID:+4W1iOYZ0
帳票でひな形ファイルにDBからのデータを張り付ける際に
ひな形ファイルに前もって用意している一覧より件数が多くなり
一覧部を増やす際って存在している行を必要分コピペしたら処理が重く遅くなりますか?
範囲指定して行の高さや罫線その他書式を作成していくのが普通ですかね
2021/02/20(土) 11:52:03.51ID:FtzhhzvS0
1件ずつコピペしてたら遅くなる可能性があるけど
必要な行数を計算してコピペ1回なら問題にはならんのじゃないかな
2021/02/20(土) 13:27:35.51ID:GLzvS33R0
すげえ基本的な話だけど
2003と2019じゃソースを書き換えないと使えないのはわかるけど
2015と2019は使えるの?
2021/02/20(土) 18:00:11.01ID:M8GDG/5fa
自分で試せばいいのに
2021/02/20(土) 20:13:12.43ID:OBWJcVSW0
書き換えないといけないところが分かるなんてすごい実力者だね
2021/02/21(日) 00:07:25.30ID:J4wkOwtc0
複数バージョン持ってないと試せんだろう
2021/02/21(日) 00:25:53.91ID:yZKJ3RszM
どっちでも動くように作るのさ
2021/02/21(日) 02:57:17.71ID:PfdFyViG0
持ってないバージョンで動かないかもとか考えなくてもよくね
2021/02/21(日) 03:11:53.20ID:NVBTtkD2H
逆に、2019だけで動くようにしろと言われてもできる気がしない
わざと追加されたワークシート関数を使うみたいな、手段と目的を逆転させるのは無しで
そんなに言語仕様って変わってたっけ?
2021/02/21(日) 03:19:27.77ID:BLnKvBaX0
VBAの言語仕様なんて、64ビット対応しか変わってないだろ
EXCELのアプリケーションモデルは多少の変化はあったかもしれんが
2021/02/21(日) 09:10:45.20ID:Mdn5KR7p0
基本使えるだろうけど
365のは分からん
2021/02/21(日) 09:54:57.69ID:E7dwtz5J0
2019未満は切り捨てるためにわざと2019仕様に変更とか
わからん
2021/02/21(日) 18:05:27.14ID:bOGV4XR6a
古いのいつまでも使われると新しいの売れないからかな
2021/02/22(月) 11:45:30.79ID:FCcJxvZt0
>>747-748
動かなくなる原因は言語仕様だけじゃないよ
2007 辺りでグラフ周りがかなり変更されてソースに手を入れる羽目になったとかある
2021/02/22(月) 13:18:52.42ID:kOquHQc20
そうっすか
2021/02/22(月) 17:32:51.40ID:/Yenw0XZd
>>752
正にそれ結構大変だった。
2021/02/24(水) 00:40:47.03ID:HDXsWzJB0
VB長けてる人ってExcelの機能関数に疎い人多いね
田中に聞けば?
2021/02/24(水) 01:26:36.59ID:QrJrBlgW0
Worksheetfunction使うのでそれはない。
2021/02/24(水) 02:17:27.39ID:CQQJwOCp0
2019欲しいけど
いまクソ高いんだよな
昔は10000ぐらいで買えたよな?
2021/02/24(水) 02:42:57.68ID:+tup+0KC0
今でも1000円で…
2021/02/24(水) 02:59:15.91ID:CQQJwOCp0
割れは怖くて使えんわ
760デフォルトの名無しさん (ワッチョイ 33fd-Nz9x)
垢版 |
2021/02/24(水) 14:09:58.51ID:HLiwO+Yd0
64bitで未定プログレスバー使うにはどうすればいいの?
2021/02/24(水) 19:44:17.34ID:CpCHMr0L0
オレの2019はアマゾンで900円くらいだ
762デフォルトの名無しさん (アウアウウー Sae7-hpcv)
垢版 |
2021/02/25(木) 21:11:18.01ID:u/u+FiSza
原本となるシートでマクロが動いて欲しくないからマクロを搭載した別ブックのシートにコピーしようとしてるのだけど、activeXコントロールのコピーで詰んでいる。
selectAllすると位置がずれる、ネットで見かけるfor each x in sheets.Shapes方式だと「rangeクラスのTopプロパティを設定できません」とか出る(原因分からないうえ、同じものが複数コピーされてたりする)
Clickメソッド使ってるからシート自体に記述しなくちゃならない状態(原本にマクロを搭載できない理由でもある)

原本をコピーした新しいシートにマクロを転写する方法か、activeXコントロールをうまくコピーする方法などをどなたか分かれば教えてください。
よろしくお願いします
2021/02/25(木) 21:28:47.82ID:mAZPOqOP0
俺はファイルコピーで解決しようとするから知らんわ
2021/02/25(木) 22:14:57.96ID:zfgrXATG0
シートコピーしたら
2021/02/25(木) 23:11:51.37ID:h5Yd8P0i0
デザインモードじゃないから梃子でも動かないって意味か?
2021/02/26(金) 03:13:02.34ID:RTjFElvVH
>>762
ブックを別名で保存してからそっちを開いたら?
コントロールの状態や中身まで含めた完全なコピーが簡単にできるよ
2021/02/26(金) 14:42:35.05ID:uwtwTRSf0
>>760
わいはコントロールやめてユーザーフォームで自作した
2021/02/26(金) 18:00:57.54ID:3R2zb4XV0
>>762
原本はそのままで動くように作っといて、原本をコピーするマクロは原本とは別ファイルにするのが良いんじゃね
2021/02/27(土) 04:24:42.64ID:RGn50kCua
>>764
新しくシートをコピーしたらシートにプログラムが何も書かれてない状態になります(原本に記述されていないから)
シートにシートをコピーしたらコントロールが消えてしまいます(コントロールのコピーに躓いている)
>>766>>768
フールプルーフの観点で原本にプログラムを直接書きづらいんですよね。このツールを使うのも原本を更新するのも私じゃないので…
>>767
フォームなら別のブックにコピーできるし使いたいんですが要件的に使えないんですよね
最初はフォームで動作するものを作ったんですが、いちいちウィンドウが開くのめんどくさいと一蹴されました

あくまでシートにマクロをコピーする方法か、activeXコントロールの綺麗なコピーの方法を探しています。
2021/02/27(土) 04:28:43.21ID:qDfn4Zqt0
>>769
みつかるといいね
2021/02/27(土) 08:38:37.65ID:+dnfLZll0
>>769
出来るけど、セキュリティ的に大問題アリ。
マクロウイルスのやりたいことと一緒だからな。
2021/02/27(土) 10:42:13.72ID:MpvSTRAea
ウイルスの作り方探してるのかな
2021/02/27(土) 16:48:22.46ID:9QiTc1mX0
質問です。
VBAでウィンドウの幅によってレイアウトが変化するページを取り込む方法で詰まっています。

例えば、下記のURLのテーブル「5」をExcelに取り込みたいとします。
しかし、このページはウィンドウの幅を狭くすると「自動レイアウト」になります。
https://www.nankankeiba.com/uma_info/2014104006.do

https://i.imgur.com/EE2hZfE.png

本当はPC固定レイアウトで取り込みたいのですが、下のVBAだと自動レイアウトの方で取り込まれてしまうのですが
どうしたらよろしいでしょうか。
VBA
https://i.imgur.com/tQsJ8fB.png

PC固定のレイアウトで取り込みたいけど、取り込むとこうなる
https://i.imgur.com/106irI4.png
2021/02/27(土) 16:50:21.04ID:9QiTc1mX0
>>773
列や行の関係でPC固定で取り込めるようにしたいのですが、クエリで何か設定などあるのでしょうか
2021/02/27(土) 19:51:14.14ID:qDfn4Zqt0
>>774
よくわからんが内容は正しく取得できているんだから、表示用のシート作って
そっちに2行を1行にまとめて表示させるマクロ書けばいいんじゃね
2021/02/27(土) 20:13:53.31ID:9QiTc1mX0
>>775
実は最近サイトがスマホ用に「自動レイアウト」に対応してリニューアルしたので
もともと作ってあった表示用シートが連れてしまうために「PC固定レイアウト」にしたいのです…
2021/02/27(土) 20:25:57.30ID:Ydjbk0QN0
URLの後ろに何か引数入れればいいんだろうけど、javascript読めんからわからん。
Web系のスレで聞くか、ここでやるんだったらDOM解析してgetElementsByTagNameとかで取得するしかない。
2021/02/27(土) 20:28:08.24ID:9QiTc1mX0
>>777
やっぱりweb系のプログラミング知識がないと無理っぽいですかね
自分はさっぱりなので、そっち系でも聞いてみます。
2021/02/27(土) 20:46:04.22ID:Ydjbk0QN0
ってそれExcel2013?
2019だとどちらも見えていて、
Table4が自動でTable5が固定になっている。

もし2019が使えるなら、QueryTables.Addじゃなくて、
Queries.Addでやってみるといい。
2021/02/27(土) 21:38:16.92ID:9QiTc1mX0
>>779
わあああ!できました!!!
自分のだと、テーブル5だと自動で、テーブル6が固定でした!!
固定と自動でテーブルずらすだけで良かったんですね。
本当に助かりました;;感謝!
2021/02/27(土) 21:44:40.46ID:9QiTc1mX0
なるほどー
URLの違いじゃなくてテーブル数が増えていてテーブルの変更でレイアウトを別々で読み取っていたんですね
今後も参考になる知識でめっちゃタメになりました!
いやーID:Ydjbk0QN0さんの着眼点のおかげで助かりました。感動です
2021/02/27(土) 23:59:01.77ID:W4zZ+WShM
いいってことよ(≧∇≦)b
2021/02/28(日) 00:38:35.67ID:1YMxSz2W0
XMLを取得したあと、要素を取得するためにgetElementByIdを使用する方法は無いでしょうか?
XMLでは仕様上IDの規定が無いのでこのメソッドは無いようですが、
対象にしているデータはIDが重複していない(タグ名は重複)ことが分かっています
2021/02/28(日) 08:33:47.20ID:0O+t6o860
やったことないけどXMLをブラウザーで開いて取得とか
2021/02/28(日) 13:49:51.41ID:0oELj/fSM
>>783
単なる属性値だからxpathで属性検索すればいいんじゃね?
2021/02/28(日) 17:16:05.41ID:1YMxSz2W0
>>785
ごめんなさいこれで出来ました
コーディングミスしてただけだったようで…
2021/02/28(日) 23:20:44.51ID:Kw7HIYRo0
テーブルを使った列転記について質問です。
オートフィルターを使って、
特定条件に合致する列のみを別シートに転記するvbaを作成しています。
検索条件が1件でもヒットすれば、うまく動くのですが、
検索条件の結果が0件の場合、なぜかテーブル内にある全ての列がコピーされてしまいます。
解決方法をご教示いただけたら幸いです。

With Range("A3").ListObject
   .Range.AutoFilter 1, "佐藤"
.Range.AutoFilter 2,"2020"
.Range.AutoFilter 3, "土地"

.ListColumns(4).DataBodyRange.Copy Sheets(2).Range("B12")
.ListColumns(5).DataBodyRange.Copy Sheets(2).Range("D12")
.ListColumns(6).DataBodyRange.Copy Sheets(2).Range("C12")
End With
2021/02/28(日) 23:38:01.73ID:aFXd9lq10
0の時コピペしない
2021/03/01(月) 03:56:15.13ID:eH/icf8Z0
Countifsで、1件以上の時 と
条件分岐させるのが読み返してわかりやすくなるんでね
2021/03/01(月) 16:05:10.88ID:SmQDGBhxa
前回の表示が残っているならメッセージボックスとか出すといいかも
791デフォルトの名無しさん (シャチーク 0C76-CIDx)
垢版 |
2021/03/02(火) 13:09:41.26ID:hWjLfumtC
(1)A1〜A100セルにそれぞれ0001.txt〜0100.txtという文字列が格納されている
(2)ファイルサーバ上(\\share\txt)に(1)の名前と対応する実際のテキストファイルが格納されている

→この場合、B1〜B100セルの中に(1)と対応する(2)のテキストファイルの中身を自動で入力させたいのですが、どのようにすれば可能でしょうか。。
792デフォルトの名無しさん (ワッチョイ 0b8e-v+iG)
垢版 |
2021/03/02(火) 13:28:23.53ID:xn7W4wyt0
丸投げか?
まずは自分で作ってみろよ
2021/03/02(火) 13:38:46.86ID:Myd7KGhQ0
先生が添削してくれるみたいです
2021/03/02(火) 15:10:40.09ID:S4zyTxBwM
A1セルに書かれたファイル名を読み取る
そのファイル名を開く
B1セルから書き込む

を繰り返せばいいと思います
2021/03/02(火) 17:47:07.08ID:stzBjdlCH
いつもの人
2021/03/02(火) 19:42:52.19ID:h1fr2K930
>>791
どうでもいいがB1〜B7へは入力じゃなくて出力って言った方がいい
2021/03/02(火) 23:19:45.83ID:yDNF8xvg0
>>791
マクロの自動記録
2021/03/03(水) 02:30:35.83ID:hWQCqBl50
>>720ですが、解決というか悪化したので一から作り直すことにしました。

原因と思われていたフォームモジュールを解放しても常時コンパイルエラーが発生するようになりました。
思い切って順に全て解放しながらコンパイルしてみたところシートを含めた全てのモジュールを
削除して新規シート一枚の状態でも発生する始末です。

>>733
試してみたところ、使用できない文字を使った時と同じ「不正なオブジェクト名」だと怒られます。
(もし重複なら「既に〜使われています」)
コンパイルエラーの原因にある「ユーザー定義型」というのはフォームのモジュール名の事だったのかも・・・
ちなみに原因らしいフォームのモジュール名を変えても同様のコンパイルエラーは発生し、
その新しいモジュール名でも同じ症状が出るようになります。

>>732
>>何をもってライブラリと言ってるのかは分からん

すみません。参照設定にあるCOMコンポーネントの事です。
APIはSleepしか読み込んでおらず、
コントロールもリストボックスとコマンドボタンとオプションボタンのみです。

元の環境で実行も出来ませんでしたが、
テストで色んなモジュールの解放してインポート、モジュール名変更して戻すを繰り返していると、
プロジェクトのコンパイルは同じエラーがでるが、(環境問わず)実行は可能という状態になりました。
コンパイルのテストしかしていなかったのでどのタイミングで実行可能になったのかは分かりませんが、
引き続き調べてみます。
2021/03/03(水) 02:46:34.41ID:hWQCqBl50
>>733
レスに追加です
名前の変更では「不正なオブジェクト名」と出ますが、その名前でのインポートは成功します。
インポート出来れば自由にフォーム名を変更したり戻したりできました。

>>735
見てみましたが、特に変わりはないようです。

>>738
フォームモジュール以外を全部移したところコンパイルが通りました。
同じフォームを作って再発すると怖いので、
フォームに有ったコントロールはシート上に再現して、とりあえずこれで運用してみることにしました。
2021/03/03(水) 21:19:07.61ID:CdcHt2GZ0
シートの中身を初期化しようと、範囲選択してClearcontentしたら処理が滅茶苦茶重くて
他のどの処理よりも一番重いまであります
セルの中身をクリアして真っ新にしたいんですが、軽くなる方法とか削除するのに他のいい方法は何かありますか?
2021/03/03(水) 22:01:26.45ID:x1QDDRPj0
画面更新切ってないとか
2021/03/03(水) 22:53:36.00ID:cY/9Er0+0
場合によってはシートごと削除&同じ名前のシート作成orテンプレで用意していたシートをコピー
803デフォルトの名無しさん (スプッッ Sd02-rjlL)
垢版 |
2021/03/03(水) 23:58:49.06ID:zTCiutcbd
>>800
Clearcontentsじゃなくて単に「削除」に時間が掛かってるだけ説。
どうしようもないExcelのバグ、俺もこの前株シミュレーター作ってて直面した。
たかだが3万行×1列消すのに10分掛かる糞仕様。
どういうわけかD列とE列に入っているがD列を消してからだとE列が、E列を消してからだとD列がそうなる。
2007と2013入れてたがどちらでも同じ結果。スプレッドシートでならサクっと消せた。
2021/03/04(木) 00:37:39.40ID:0V1y42950
質問させてください
業務用PCのためDsoFramerのインストールを容易には出来ない環境で、ユーザーフォームにワークシートを表示するシステムを作成するのは厳しいでしょうか
2021/03/04(木) 02:10:45.74ID:EcELbNCH0
レスありがとうございます
画面更新は勿論切ってます
ただ初期化したいだけなのにアホみたいに時間が掛かるので、同じ使用のシートを作る処理にする事も検討します
2021/03/04(木) 06:47:21.46ID:yRtnuXOv0
変数に入れてから消すとか、同じ選択範囲の配列(空白)ぶっこんでみてもだめかな
2021/03/04(木) 10:44:48.81ID:B7/1q6yvH
一気に何万行も消さずに100行ずつとか小分けしたら軽くなったりしないのかな
2021/03/04(木) 10:49:05.92ID:1zCrSMV60
ClearContentsで重かったことなんてないなあ。
めんどくさくてVBAじゃなくマクロで作って選択範囲小分けのまま放置してるからかな?
2021/03/04(木) 11:15:36.75ID:fKYNPqjU0
>>800
ふーん
範囲指定して消したらどう?
後、最近のEXCELはひょっとして
セルの内容が変わったら
再計算しているかも知れないから
一応自動計算も切ってみたら?

セル値が変わった時のイベント拾って
何かやってるとかいうオチだったら
問題外だけど
2021/03/04(木) 11:36:50.11ID:EtHhkpeQ0
スレが見つからなかったのでこちらで失礼します
C8の値が$100にならない理由を教えて下さい
https://i.imgur.com/XLERVNc.png
2021/03/04(木) 11:53:16.96ID:w9aQykj0M
関数変わっちゃうけど代案を出すなら
VLOOKUP(B8,B1:C5,2,FALSE)
とかどう?
2021/03/04(木) 12:01:03.02ID:1zCrSMV60
なんだこりゃ
LookUpって欠陥あるんかね
2021/03/04(木) 12:21:33.50ID:w9aQykj0M
LOOKUPって近似値を検索する関数だから文字列探そうとすると上手くいかない事が多かった気がする
だから面倒臭くなってVLOOKUP,HLOOKUPを使うように癖をつけた記憶がある
2021/03/04(木) 13:49:43.11ID:1PJYOy7Jr
これ思い出したわ

https://i.imgur.com/x2uWdkO.jpg
https://i.imgur.com/fnrEWzZ.jpg
2021/03/04(木) 13:50:26.95ID:FInty+sk0
新規作成してから試してみたけど$100になったな
2021/03/04(木) 14:14:53.10ID:Kq0/JwOuM
>>810
C8 が "もり " みたいに空白入ってるとかじゃね?
2021/03/04(木) 14:47:21.95ID:skJUg0gJ0
検査範囲の値は昇順にしてください
そうでなければ正しい値はえられません
並んでないときはVLOOKUPやHLOOKUPを使ってください

という旨のことをヘルプに書いてある。
2021/03/04(木) 16:50:41.38ID:b7V1SruDM
LookupにもVLookupやHLookupみたいに検索方法のオプションあればいいのにね
まあMSとしてはExcel最新版にしてXLookup使ってねって言うことなんだろうな
2021/03/04(木) 18:46:57.78ID:EcELbNCH0
初期化で若干重たいのは取り敢えず諦めることにして、外部のCSVをクエリテーブルで読み込んでから
Refleshでシートに書き込んでるのですが、この書き込む前の段階で、クエリテーブル上で不要な列のデータを削除する事って可能でしょうか?
不要なデータが大量に混ざっているので、全部まとめてシートに書き込むとやはり重たいので軽量化したいのですが……
820デフォルトの名無しさん (ワッチョイ 0b8e-v+iG)
垢版 |
2021/03/04(木) 19:49:49.80ID:V/SEJayw0
いつものあいつだな
2021/03/04(木) 20:49:35.42ID:yRtnuXOv0
lookup系よりindexmatch使うことが多いな
2021/03/04(木) 20:55:32.61ID:INwEijJcM
lindexmatch使いアピールしてはじめて自称excel上級者として一人前
2021/03/04(木) 21:28:29.09ID:Cjl2zDCE0
昔はユーザー定義関数作ったけど、今はXLOOKUPがある。
2021/03/04(木) 22:18:19.39ID:1zCrSMV60
IindexMatchなんぞ使わず、
列をボーンとコピー挿入してVLOOKしてこそ一人前
2021/03/05(金) 05:33:04.89ID:eGeMRqFI0
いつものあいつて何?
2021/03/05(金) 09:21:20.59ID:n//DPju00
とうしつの自己紹介
2021/03/05(金) 21:02:22.60ID:s30llsqJ0
臭う質問者の総称
2021/03/06(土) 12:22:29.01ID:yJvSdslEH
実際に使ってないような質問をして答えさせて悦に入る人
2021/03/07(日) 10:26:06.26ID:FD1rrusm0
webページからデータをとってきてセルに格納するマクロを書いています
msxml2.xmlhttpというのを使うとページの内容をgetすることができるのですが、これはどうやらieを利用しているようです
ieはいつなくなるかわからないので他の方法があれば今のうちから変えておきたいのですが、vbaで使える方法で他にどういうのがあるか教えてください
2021/03/07(日) 10:30:32.44ID:ZX3XyXetM
IEはなくなるのにVBAは大丈夫だと思う理由は?
言語もPythonとかにしてBeautifulSoupやSeleniumでも使った方がよい
2021/03/07(日) 10:37:32.50ID:4ExLqYxe0
パワークエリはどうかな
2021/03/07(日) 10:42:14.29ID:TW4NSoKtM
無くなったときのビジネスインパクトはIEよりもVBAの方が遥かに小さいから、MSがどっちか先に切るとしたらVBAだろう
最悪VBAは切られてもExcelのバージョンを塩漬けにして運用できなくはないしな
2021/03/07(日) 11:28:15.07ID:zpOLYdVD0
>>830
まあそのうちpythonに移行するんでしょうけど、今は慣れない言語を一から勉強してる暇はないので
それで、あなたはvbaでやる他の方法を示せないということでよろしいですか?

>>831
どうかな、じゃなくてどうやるのか教えてください
2021/03/07(日) 13:02:06.24ID:JbGOdXToM
704 名無し~3.EXE sage 2021/03/01(月) 20:11:45.17 ID:hZCKpI4x
デスクトップ版のVBAマクロに替えてWeb版はOfficeスクリプトがプレビュー中(現在は法人向け365のオンラインのみ)
https://docs.microsoft.com/ja-jp/office/dev/scripts/resources/vba-differences

705 名無し~3.EXE sage 2021/03/01(月) 20:16:10.79 ID:hZCKpI4x
Excelの新自動化ソリューション「Office Scripts」プレビュー版が登場
https://ascii.jp/elem/000/004/000/4000725/

Excel操作をJavaScriptで記録 〜Microsoft、“Office Scripts”をパブリックプレビュー
https://forest.watch.impress.co.jp/docs/news/1227931.html
2021/03/07(日) 13:04:56.15ID:JbGOdXToM
788 名無し~3.EXE sage 2021/03/03(水) 18:26:40.20 ID:5NVXQTtc
Excel関数ベースのプログラミング言語「Microsoft Power Fx」登場 オープンソースで公開予定
https://www.itmedia.co.jp/news/articles/2103/03/news080.html

Microsoft、自社製RPAツールを全Windows 10ユーザーに無償提供 マウスクリックやキーボード入力をGUIで自動化
https://www.itmedia.co.jp/news/articles/2103/03/news096.html
836デフォルトの名無しさん (ワッチョイ cb8e-3QAQ)
垢版 |
2021/03/07(日) 13:46:03.75ID:5FBwssoR0
>>833
なんだただの馬鹿か
煽って聞きだそうとしてもこのスレはいつものあいつで耐性ができた人ばかりだから無理
2021/03/07(日) 14:06:40.31ID:4ExLqYxe0
触れないようにしてたけど辛辣で草
2021/03/07(日) 17:25:15.30ID:CYFzWFvV0
>>836
答えられないならレスしなくていいよ
無能に用はないから
839デフォルトの名無しさん (ワッチョイ cb8e-3QAQ)
垢版 |
2021/03/07(日) 17:51:15.16ID:5FBwssoR0
>>838
悔し買ったか?馬鹿
2021/03/07(日) 18:27:16.06ID:REgzkSN70
な、age厨だろ?
2021/03/07(日) 20:22:49.89ID:l5mf+U2f0
反論できなくてアゲサゲ言い出す奴は見苦しい
2021/03/07(日) 21:30:58.30ID:iHuYVCVV0
言われて下げてやんのwww
843デフォルトの名無しさん (ワッチョイ cb8e-3QAQ)
垢版 |
2021/03/07(日) 22:58:33.05ID:5FBwssoR0
馬鹿は自分が相手にしてるのはただ一人だけと思い込む
2021/03/08(月) 05:43:53.99ID:bSh0ioyn0
な、age厨だろ?
2021/03/08(月) 07:03:19.05ID:+AeHqC2j0
自己紹介www
2021/03/08(月) 09:05:36.54ID:+ItxpBbz0
類友
2021/03/08(月) 09:36:00.68ID:gk28PyLU0
もはや論点なにそれ状態
2021/03/08(月) 10:52:47.61ID:TrYviUKj0
保存して閉じる処理をしても、ファイルは閉じてもExcelはとじません

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'処理
Application.DisplayAlerts = False
Application.Quit
ThisWorkbook.Close savechanges:=True
Application.DisplayAlerts = True
End Sub
これでもダメでした
Application.Quit
ThisWorkbook.Close savechanges:=True
2021/03/08(月) 11:07:15.73ID:9xs5g46P0
ActiveWindow.Close
2021/03/08(月) 11:38:58.50ID:TrYviUKj0
>>849

Application.Quit
ThisWorkbook.Close savechanges:=True
ActiveWindow.Close
これもダメでした
2021/03/08(月) 11:53:11.92ID:9xs5g46P0
Application.Quit
Application.DisplayAlerts = False
ThisWorkbook.Close savechanges:=True
Application.DisplayAlerts = True
2021/03/08(月) 11:57:13.64ID:vFSNvomr0
Application.DisplayAlerts = False
If Workbooks.Count = 1 Then
Application.Quit
Else
ThisWorkbook.Close
Application.DisplayAlerts = True
End If

とかどう?
2021/03/08(月) 11:59:04.12ID:ub+dBY/l0
>>848
何でセーブする前にEXCELのアプリケーション閉じようとしてるの?
2021/03/08(月) 12:04:00.24ID:TrYviUKj0
>>851
>>852

ダメでした。
ほかのファイルでは問題なくExcelが終了するのですが
Private Sub Workbook_BeforeClose(Cancel As Boolean)
を使うマクロのときだけ、閉じなくなるような気がします。関係ありますかね?
2021/03/08(月) 12:23:48.80ID:Qtlmv4rK0
>>853
2021/03/08(月) 12:30:21.22ID:ub+dBY/l0
わざわざセーブメッセージ叩き潰して
ブック捕まえたまんまにして
アプリケーション閉じようとしてるんだから
わざと閉じられないようにしているようにしか見えない
2021/03/08(月) 12:44:18.76ID:Qtlmv4rK0
savechangesでも無限ループしてそう
2021/03/08(月) 12:56:18.62ID:vFSNvomr0
>>854
BeforeCloseにApplication.Quit記述してイミディエイトからThisWorkbook.Closeを実行してみたけど問題なく閉じたから何か別の物が干渉してる可能性があるかなぁ
2021/03/08(月) 13:04:41.43ID:9xs5g46P0
めっちゃ古いバージョンとかじゃないだろうな
2021/03/08(月) 13:32:58.59ID:TrYviUKj0
>>855
当初はこれでしたが、ググったら、Application.Quitを上に書くらしいです

ThisWorkbook.Close savechanges:=True
Application.Quit

>>856
Application.Quit
ThisWorkbook.Close savechanges:=True
だけでも同じでした

>>857
他に保存する方法を教えてください

>>858
自分でも試してみましたが、確かにちゃんと閉じますね。他の干渉を疑ってみます。

>>859
2019です
2021/03/08(月) 13:49:36.30ID:9xs5g46P0
Application.EnableEvents = true
を頭に付けてみるとか
2021/03/08(月) 18:00:51.59ID:+0kCYoNG0
そこでやるべきことは ThisWorkbook.Save だけだと思うんだが
2021/03/08(月) 18:30:55.70ID:bSh0ioyn0
コマンドプロンプトでtaskkill /f /im excel.exe
2021/03/08(月) 19:53:15.72ID:Awv++sSE0
Quitは最後では
変なExcelプロセスが残ってないか確認した方がいいのでは
2021/03/08(月) 21:03:57.98ID:53ng3r6C0
VBEでVBAを使って出来たものがマクロであってる?
本屋にVBAの本とマクロの本があるけど同じことと思っておk?
2021/03/08(月) 21:12:54.65ID:ub+dBY/l0
>>865
半分正解
2021/03/08(月) 21:17:42.97ID:ub+dBY/l0
「VBEで作ったものはマクロ」
これは合ってる
「VBAとマクロは同じことを言っている」
マクロにはVBAtで作られたもの以外に
4.0マクロと言うものが有ってだな・・・
まぁ、あまり気にしなくても良いかもしんないけど
2021/03/08(月) 21:34:20.02ID:B96zl28N0
マクロ
スクリプト
関数
これらはプログラムのひとかたまり
厳密に区別しずらいけどそれぞれ
ニュアンスの違いはある
869デフォルトの名無しさん (アウアウクー MM4f-YFKC)
垢版 |
2021/03/08(月) 21:58:36.85ID:U/cFdqiVM
>>865
VBEはエディタ。Excelの場合はVBAとマクロは同じ意味で使われる。ExcelマクロがExcel VBAのコードで表現されるため。
2021/03/08(月) 22:10:13.99ID:Awv++sSE0
>>867
なんかいろいろ違うぞ
2021/03/08(月) 22:16:46.29ID:Dj6nESKZ0
関数は全然違うだろwww
2021/03/08(月) 22:42:26.89ID:53ng3r6C0
>>866
まだ表紙なのに理解半分かw

>>867
4.0マクロネットで見て使ったこと1回だけあるけど関数みたいなやつだった記憶。

>>868
スクリプトも便利そうですよね。
デスクトップかっこ良くするフリーソフトに自由にスクリプト使えますって書いてあって挫折した。。

>>869
出来たもんがマクロでVBAが設計図でVBEが紙と鉛筆か。

みんなありがと、ネットにも解説サイトあるけど違うとこ見ちゃうから本買ってくるわ。ノシ
2021/03/08(月) 23:14:12.98ID:u4CRr3CF0
そういえばvbaをjsで書ける世界まだなんだっけ?
gasみたいな感じで書けないかな
2021/03/08(月) 23:18:26.32ID:hUWITx/G0
WScriptのJScriptでExcel使えるだろ
2021/03/09(火) 00:19:47.43ID:fLnH8jKyM
>>873
>>834
2021/03/09(火) 02:53:50.15ID:uNAjD4zcH
微妙に違う気がするなあ
VBAはプログラミング言語の名前(の略称)。単語と文法が書いてあるだけの辞書みたいなもん
その言語で書かれた物がマクロで、むしろ設計図はこっちが近い
VBEはマクロの作成を手助けするツール、紙と鉛筆って考え方はだいたい合ってる
で、マクロの中でも結果を一組だけ呼び出し元に返すように作られてるのが関数
2021/03/09(火) 05:15:21.29ID:suvlK62N0
機能とワークシート関数とか全くわからん
操作なんてVBAで良いじゃん
周りでもそういった人いるしさ
2021/03/09(火) 08:22:35.06ID:zXQo4RJq0
本来、Excelの操作の自動化を目的にしたVBAマクロなのに元の機能そのものが全く分からんとか本末転倒にも程がある
879デフォルトの名無しさん (アウアウウー Sa0f-fXuR)
垢版 |
2021/03/09(火) 10:45:46.13ID:pnwu5thka
作成依頼です

一定範囲内において、選択されたセルすべてに、書式設定で取り消し線を付けたいです

たとえば、D5からD20の範囲内で、そこ以外の範囲が選択されていた場合はエラーを返す
範囲内なら、選択されたセル(単一、複数、飛び石あり)すべてに、一括で取り消し線を追加
というような感じです

飛び石状態で複数が選択された場合に、上手く処理できなくて相談させていただきました
よろしくお願い致します
880デフォルトの名無しさん (ワッチョイ fb5f-R8lj)
垢版 |
2021/03/09(火) 11:04:35.36ID:oV9GYLDS0
>>879
そんな仕様のものを作ってはいけない
2021/03/09(火) 11:21:48.31ID:Nc9tdWjH0
>>879
選択範囲をまとめて見るんじゃなくて、選択されたセル一つ一つについて既定の範囲内にあるか条件判断をし、エラーかそうでないか
エラーでなく全てのセルが範囲内なら一つ一つのセルに取り消し線を追加
とすれば普通にできるでしょ
横着しようとしてるからいけないんじゃないの
2021/03/09(火) 11:25:30.81ID:uNAjD4zcH
VBEは赤ペン先生?全部じゃないけど間違いをすぐ教えてくれる
2021/03/09(火) 11:58:31.47ID:zYh1VL3E0
>>879
お金ください
2021/03/09(火) 12:03:56.11ID:uNAjD4zcH
>>879
For Eachでセルを1個ずつ処理するんだよ

For Each、セルアドレスチェック、1つでもD5-D20じゃなかったらエラー
エラーがなかったらもう一度For Each、各セルに取り消し線

みたいな流れ
2021/03/09(火) 12:09:52.12ID:4S2gbixUa
ピボットグラフのスライサー内の選択を変えた時にマクロが動くようにしたいです
イメージ的にはワークシートイベントです
例︰スライサーの日付を変更時にグラフの色を塗る

選択変更の検知方法を教えてください
よろしくお願いします
886デフォルトの名無しさん (ラクッペペ MM7f-gfXM)
垢版 |
2021/03/09(火) 12:25:42.94ID:t7O7P6i9M
外枠なら面倒だけど取り消し線なら簡単だ
2021/03/09(火) 12:38:26.95ID:uNAjD4zcH
外枠でも大差ないと思う
Selectionの上下左右に罫線を引くだけ
888デフォルトの名無しさん (アウアウウー Sa0f-fXuR)
垢版 |
2021/03/09(火) 12:43:13.10ID:pnwu5thka
>>881
>>884
なるほど、これなら自分でできそうです
ありがとうございました
2021/03/09(火) 13:03:57.82ID:C5e26MY+0
いえいえ、自分でもっと勉強してくださいね
2021/03/09(火) 16:16:21.91ID:1va3W7Si0
>>879
If Intersect(Selection, Range("D5:D20")).Count <> Selection.Count Then
MsgBox "エラー"
Else
Selection.Font.Strikethrough = True
End If
2021/03/10(水) 00:11:15.88ID:seJ5KfaI0
だってさ、先輩がExcelなんか全部マクロで動かせば良いって言われたからさ。。。
ワークシートの関数とかそんなもん覚えなくて良いと言われたからさ。
だからVBAしか知らない。
今凄く関数とか機能を覚えるために苦労してる。
2021/03/10(水) 02:20:07.32ID:Mh5oeh7J0
>>891
無理してやる必要ないのに、何のために覚えるの?
2021/03/10(水) 07:58:05.94ID:seJ5KfaI0
>>892
マクロだけでは遠回りだと気づいて
2021/03/10(水) 08:18:24.93ID:afuwFvM40
vlookupはなんであんな変なインターフェースなんですか
895デフォルトの名無しさん (ブーイモ MM8f-IazI)
垢版 |
2021/03/10(水) 09:29:52.26ID:AjUIRLk9M
ポーカーフェイスですよ
896デフォルトの名無しさん (ワッチョイ fb5f-R8lj)
垢版 |
2021/03/10(水) 10:14:53.26ID:B52MA1yl0
>>894
古いから
897デフォルトの名無しさん (アウアウウー Sa0f-W2tv)
垢版 |
2021/03/10(水) 14:59:19.94ID:hxdj8Ixba
screenupdapingを非表示にした状態でcalculationを自動にしたら、ちゃんと計算やってくれますか?
2021/03/10(水) 15:30:04.25ID:PHH+vFRc0
>>897
自分でやってみりゃいいじゃん
899デフォルトの名無しさん (アウアウウー Sa0f-W2tv)
垢版 |
2021/03/10(水) 15:39:38.02ID:hxdj8Ixba
>>898
updatingが表示になったときに計算されるのか、非表示中に計算されてるのかがわからないのです。
2021/03/10(水) 15:43:34.11ID:TvaGnuXK0
ExcelからVBAが完全になくなるより先にMSが先になくなりそうじゃない?
2021/03/10(水) 15:57:24.48ID:kPBSipVT0
MSがなくなるより先にお前がなくなるんじゃない
2021/03/10(水) 17:04:34.10ID:ij0IDF+ed
その前にIT途上企業のウチの会社がなくなるな
2021/03/10(水) 17:25:36.32ID:PHH+vFRc0
>>899
対象セルのvalue値を処理中に
debug.printで書き出すなり
どこかのセルに突っ込むなり
トレースして確認するなりすればいいじゃん
まず聞く前にググる癖をつけないと
いつまで経っても誰かに聞かないと
何も出来なくなるよ
904デフォルトの名無しさん (アウアウウー Sa0f-W2tv)
垢版 |
2021/03/10(水) 17:37:30.93ID:hxdj8Ixba
>>903
わかりました。てか式の値見ればすぐわかりますね。やってみます
2021/03/10(水) 18:13:57.59ID:osSCK/tE0
今日水曜日なのにweekdayName(weekday(Date))で木曜日と出るのは仕様?

Dateは2021/03/10
weekday(Date)は4
と出ることは確認済み
weekdayとweekdayNameで週始めを日曜とするか月曜とするかで差が出てるんだろうからweekdaynameをvbSundayにすることで解決はするけど、何かが原因でここに違いが出てるなら修正したいので仕様かどうか知りたい
2021/03/10(水) 19:31:18.15ID:WhcyA+8r0
仕様ではない
2021/03/10(水) 19:41:43.99ID:iMortp6N0
Weekdayの規定値がvbSundayで、WeekdayNameの規定値がvbUseSystemDayOfWeek。
どっちかに合わせた方がいいと思う。
2021/03/10(水) 20:15:11.47ID:FQxPGFWfa
やっぱり>>885の方法はないですかね
諦めてマクロボタンで更新します
ありがとうございました
2021/03/11(木) 16:08:09.65ID:2F7MZ2cN0
>>907
なるほど、自分のwindowsカレンダーの開始日が月曜になってるからなのか
なんで既定値が違うんだろうという疑問は残りつつも納得、ありがとうございました
2021/03/12(金) 14:18:56.93ID:cUuyzc0G0
VBA学ぶのにお勧めの本ありますか?
911デフォルトの名無しさん (ワッチョイ 7d5f-6Qoe)
垢版 |
2021/03/12(金) 14:22:39.95ID:b9Kr93A50
>>910
MOSの本
912デフォルトの名無しさん (ワッチョイ 7d5f-6Qoe)
垢版 |
2021/03/12(金) 14:25:27.81ID:b9Kr93A50
正確にはVBAエキスパートか。

見過されがちだけど、試験対策本は非常によくまとまっている。
913デフォルトの名無しさん (ドコグロ MM4a-GUUA)
垢版 |
2021/03/12(金) 17:44:33.68ID:UcsTGFzQM
買う前に周辺の図書館を回れば、vba本が見つかるかもしれない
914デフォルトの名無しさん (アウアウクー MM51-6Qoe)
垢版 |
2021/03/12(金) 19:23:46.81ID:7Crflr6rM
金額の話なのか?
2021/03/12(金) 19:31:10.39ID:f8Q6HjqoM
650頁を超える「Excel VBA逆引き辞典パーフェクト」を最初から通して読む
2021/03/12(金) 23:07:31.55ID:NBdc6r9a0
VBの、何かあの電話帳より分厚いの有るじゃん
叩かれると85ポイントくらいダメージを受けそうな感じのアレ
マジレスすると、あれで勉強したわ
2021/03/12(金) 23:38:50.44ID:sGQx1lBf0
>>894
XLookupを使いなさい
2021/03/13(土) 02:37:38.41ID:5xXr3I9d0
まじレスすると他人のおすすめの本は買っただけで満足して読まない可能性が高い
2021/03/13(土) 07:57:23.36ID:slDJWJ280
>>910
出来るだけ薄い奴がいいよ
少なくとも一週間で読み切れそうな奴
細かい部分は結局ググる事になるから手っ取り早く基礎だけ学べるのがいい

プログラミングの勉強は書き方を学ぶというより、
「ググる方法、ググって出てきた内容を理解できる最低限の知識」を身に着ける方に重きを置いた方がいい
2021/03/13(土) 08:14:07.47ID:csBuBYNL0
>>910
現在の知識レベルによって薦める本は変わってくるけどなーんも知らないと言うのならVBAの絵本でいいんじゃなかろか

>>919の人も言ってるけど基本、ネットで調べることになるんでどちらかというと
自分が知りたいことを調べられる単語をすぐに思い浮かべる力と
それを理解する力の方が自分的には重要な気がする
後、理解出来なければ取り敢えず書いてみてこねくり回すことも大事

本当に基本的なことさえ分かっていれば、
その内クラスやAPI、コールバックとかにぶつかることがあってもネットで調べることが出来れば
自分が然るべき理解力をつけた際に理解出来るようになる。
921デフォルトの名無しさん (ワッチョイ 7d5f-6Qoe)
垢版 |
2021/03/13(土) 08:17:01.13ID:tBGlpruK0
メルカリなどでたくさん買って、好きなのを使えばいいよ。
2021/03/13(土) 11:51:20.74ID:9LAtgmD40
>>910
VBAの神様
923デフォルトの名無しさん (ワイーワ2 FFca-6Qoe)
垢版 |
2021/03/13(土) 14:55:26.89ID:4/YYKqK7F
Excel VBAは自己流が多いと思うけど、体系的に学習するならマイクロソフトのVBAエキスパート本だろうな。
2021/03/13(土) 21:38:13.19ID:99ipLDsT0
小手先のテクニックより
複雑怪奇なExcelの挙動の中身がどうなってんのか
詳細に説明してほしいわ

謎挙動がおおすぎる
2021/03/13(土) 21:57:08.91ID:7fDCnZwF0
具体的には?
926デフォルトの名無しさん (ワッチョイ 7d5f-6Qoe)
垢版 |
2021/03/13(土) 22:05:26.89ID:tBGlpruK0
>>924
あまり使われていないVBAの機能を使うとすぐにバグにはまる。
927デフォルトの名無しさん (ワッチョイ 7d5f-6Qoe)
垢版 |
2021/03/13(土) 22:07:49.91ID:tBGlpruK0
ActiveXのボタンが消えるバグなどは放置状態
2021/03/14(日) 01:08:53.96ID:EQ7/9AB00
vbの構文がダサすぎるのが嫌
綺麗に書いても汚らしく見える Dim asとかキモいんだよ
2021/03/14(日) 02:39:44.98ID:QAEhurjz0
VBAのコードのフォントを HGP行書体 (日本語) とかにしてみたら?
2021/03/14(日) 03:51:24.74ID:+mKOZ3nE0
ACCESSのレポートではかけたのですが
VBAで規定の先よりも細い線を書くことはできませんか?
2021/03/15(月) 06:39:33.91ID:6QvkQitw0
コントロールのボタンが押す度徐々に小さくなったり消えたり動き回ったり
配列返す関数をUboundに渡すとメモリリークしたり、
フォームをモーダル表示中にシートをアクティブにすると何故かシートを操作できたり、
インターフェースを実装するクラス自体をインターフェースに出来てしまう上に、それをするとバグったり、
いくらでも上げられるだろ

特にフィルタ関連は変なのが多い
specialcells(xlcelltypevisible)とかcopyメソッドとか
932デフォルトの名無しさん (ワッチョイ a1da-xjD7)
垢版 |
2021/03/16(火) 14:07:15.77ID:yEkj4Jws0
作成依頼なんですがお願いできますでしょうか

A列に数字(No.)
B列に文字列(名前)の3000行ほどの表があります。
A列の数字は重複している箇所があり、
A列が他の行と重複している場合B列の文字を全て繋げてC列に書き出したいのですが可能でしょうか。

サンプル
A列  B列 C列
11111 A子 A子
11112 B子 B子
11113 C子 C子・D子・E子
11113 D子 C子・D子・E子
11113 E子 C子・D子・E子
11114 F子 F子
11114 F子 F子
11115 E子 E子

ただし、サンプルのように
A列が重複してもB列の文字列が同じだった場合は『F子・F子』とならずに『F子』のままで、
重複しないA子、B子もそのままにしたいのです。
Aが列の数字は最大で20ほど重複している場合があります。

ずっと手作業でやってて挫けそうなんでお願いします!!
2021/03/16(火) 14:24:36.41ID:gGJzxP62H
>>932
Sub Macro1()
  rr = Cells(Rows.Count, 1).End(xlUp).Row
  For i = 1 To rr
    n = Cells(i, 1)
    s = Cells(i, 2)
    t = s & "・"
    For j = 1 To i - 1
      If Cells(j, 1) = n Then
        w = Cells(j, 2)
        If InStr(t, w) = 0 Then
          t = t & w & "・"
        End If
      End If
    Next
    t = t & s & "・"
    For j = i + 1 To rr
      If Cells(j, 1) = n Then
        w = Cells(j, 2)
        If InStr(t, w) = 0 Then
          t = t & w & "・"
        End If
      End If
    Next
    t = Left(t, Len(t) - 1)
    t = Right(t, Len(t) - 1 - Len(s))
    Cells(i, 3) = t
  Next
End Sub
2021/03/16(火) 15:29:08.70ID:yEkj4Jws0
>>933
どひゃ〜!!!!
しゅ、しゅごいぃいいい!
ありがとうございます!ありがとうございます!本当にありがとう!
2021/03/16(火) 15:59:46.67ID:cZC9o7Y5M
それ、例えば百合さんと百合子さんがいた時にバグらない?
こういうのは辞書に登録してitemsプロパティをjoin関数に渡すのが鉄板だと思う

最近ならvba使わずにfilter関数とunique関数でも同じことできるから、もしかしたらこっちの方が楽かも
2021/03/16(火) 15:59:47.11ID:btbyDUmHr
>>933
きったねえソースだなおい
2021/03/16(火) 16:01:05.39ID:YCs8uHit0
お、きれいなソース期待かw
2021/03/16(火) 16:15:55.00ID:gGJzxP62H
百合・百合子バグ修正
Sub Macro1()
  rr = Cells(Rows.Count, 1).End(xlUp).Row
  For r = 1 To rr
    n = Cells(r, 1)
    s = Cells(r, 2)
    t = "・" & s & "・"
    For i = 1 To r - 1
      If Cells(i, 1) = n Then
        w = Cells(i, 2)
        If InStr(t, "・" & w & "・") = 0 Then
          t = t & w & "・"
        End If
      End If
    Next
    t = t & s & "・"
    For i = r + 1 To rr
      If Cells(i, 1) = n Then
        w = Cells(i, 2)
        If InStr(t, "・" & w & "・") = 0 Then
          t = t & w & "・"
        End If
      End If
    Next
    t = Left(t, Len(t) - 1)
    t = Right(t, Len(t) - Len(s) - 2)
    Cells(r, 3) = t
  Next
End Sub
2021/03/16(火) 16:53:04.48ID:cZC9o7Y5M
百合さんと百合・D・ルフィさんがいた時にバグる
2021/03/16(火) 17:22:11.94ID:gGJzxP62H
百合・D・ルフィバグ修正
Sub Macro2()
  Dim d As Object
  Set d = CreateObject("Scripting.Dictionary")
  rr = Cells(Rows.Count, 1).End(xlUp).Row
  For r = 1 To rr
    For i = 1 To rr
      If Cells(i, 1) = Cells(r, 1) Then
        s = Cells(i, 2)
        If Not d.exists(s) Then d.Add (s), 0
      End If
    Next
    Cells(r, 3) = Join(d.keys, "・")
    d.RemoveAll
  Next
End Sub
2021/03/16(火) 17:31:00.58ID:tUVUKdZi0
>>932
Ruby で、CSV ファイルでやってみた

require 'csv'

tmp_hash = { }

result_ary = CSV.read( "input.csv" ) # 2次元配列

result_ary.each do | row | # 1行ずつ処理する
if tmp_hash.has_key? row[ 0 ] # 既に、その数字が存在すれば
# 文字列が存在しない時だけ、その文字列を追加する
tmp_hash[ row[ 0 ] ][ row[ 1 ] ] = true unless
tmp_hash[ row[ 0 ] ].has_key? row[ 1 ]
else
tmp_hash[ row[ 0 ] ] = { row[ 1 ] => true }
end
end

# p tmp_hash
# {"11111"=>{"A子"=>true}, "11112"=>{"B子"=>true},
# "11113"=>{"C子"=>true, "D子"=>true, "E子"=>true},
# "11114"=>{"F子"=>true}, "11115"=>{"E子"=>true}}

result_ary.each do | row | # 1行ずつ処理する
# その行の3列目に、キーを結合した文字列を追加する
row.push tmp_hash[ row[ 0 ] ].keys.join( "・" )
end

csv_str = result_ary.map( &:to_csv ).join # 2次元配列を、CSV 文字列に変換する
print csv_str
2021/03/16(火) 17:41:01.13ID:QPeaG/4LM
何故突然にRuby?
2021/03/16(火) 18:32:29.43ID:yEkj4Jws0
>>940
度々ありがとうございます!
最初ヤツでも今の所大丈夫そうでしたが、今後はこちらを使わせていただきます!

他の方もありがとうございます!
2021/03/16(火) 19:02:04.81ID:EUyNpk5n0
>>942
rubyスレだと相手にもされないからわざわざ違うスレに来てるかわいそうな人だよ
945デフォルトの名無しさん (ワッチョイ 7d5f-6Qoe)
垢版 |
2021/03/16(火) 21:06:28.11ID:8Gn4pDRu0
名前の例が○子とは、そうとうなジイさんだなw
2021/03/16(火) 21:12:32.28ID:gGJzxP62H
>>945
現代だとどう書くの?
ランキングによると結が人気あるらしいから結A、結B、結Cか
2021/03/16(火) 21:15:14.58ID:lullOsMB0
そら「百合(ろーず)」よ
948デフォルトの名無しさん (ワッチョイ 7d5f-6Qoe)
垢版 |
2021/03/16(火) 21:28:58.74ID:8Gn4pDRu0
>>946
なんで女なのか?
2021/03/16(火) 21:42:16.30ID:gGJzxP62H
そんなこと言ったら、なぜ日本人なのか、なぜ人類なのか
950デフォルトの名無しさん (ワッチョイ 7d5f-6Qoe)
垢版 |
2021/03/16(火) 21:51:49.14ID:8Gn4pDRu0
太郎、次郎、三郎、四郎、五郎でいいだろ。
2021/03/16(火) 21:55:45.14ID:YCs8uHit0
なんで男なのか?
2021/03/16(火) 22:05:23.00ID:gGJzxP62H
3000行もあるのに、それじゃ考えるのが大変だ
2021/03/16(火) 23:39:47.76ID:FDp5iKWO0
手作業でAからFカップを調べる作業にVBA使うとか
お前ら男として終わってるわマジで
2021/03/17(水) 00:14:55.79ID:8Ujh9QFC0
ろーずって薔薇じゃないの?
2021/03/17(水) 00:20:54.29ID:lKwA7qQn0
そうだよ
2021/03/17(水) 00:54:57.81ID:KXbC8pO1H
わざと間違えるっていう2chから続く伝統芸
https://i.imgur.com/h4Fip2L.jpg
2021/03/17(水) 02:44:52.10ID:LQZUutD10
>>933
いきなりCellsで始まるのはいただけないなw
できればブックから始める習慣を付けて欲しい。
2021/03/17(水) 03:45:50.60ID:KXbC8pO1H
>>957 なおした
Option Explicit
Sub VBA69_932()
  Dim A_number As Long, B_name As String, C_list As Object
  Dim last_row As Long, row_loop As Long, search_loop As Long
  Set C_list = CreateObject("Scripting.Dictionary")
  With ThisWorkbook.ActiveSheet
    last_row = .Range("A" & Rows.Count).End(xlUp).Row
    For row_loop = 1 To last_row
      C_list.RemoveAll
      A_number = .Range("A" & row_loop)
      For search_loop = 1 To last_row
        If .Range("A" & search_loop) = A_number Then
          B_name = .Range("B" & search_loop)
          If Not C_list.exists(B_name) Then
            C_list.Add (B_name), 0
          End If
        End If
      Next
      .Range("C" & row_loop) = Join(C_list.keys, "・")
    Next
  End With
End Sub
2021/03/17(水) 10:07:11.87ID:wJCP0FMq0
>>933
謎の変数名を多用するのやめてくれ。見る気が一瞬で失せる。
ネスト深くするのも罪悪感感じてくれ
2021/03/17(水) 10:20:01.36ID:QeKL1gNm0
配列でやれ
2021/03/17(水) 10:38:31.95ID:CnU6DmD/0
はい
2021/03/17(水) 10:48:27.37ID:AkcuhhXSr
れつ
2021/03/17(水) 10:49:53.05ID:rwSgtXuJ0
ゴー
2021/03/17(水) 10:52:25.95ID:KXbC8pO1H
>>960 なおした
Option Explicit
Sub VBA69_932_a()
  Dim This As Worksheet
  Dim table() As Variant
  Dim A_number As Long, B_name As String, C_list As Object
  Dim last_row As Long, row_loop As Long, search_loop As Long
  Set C_list = CreateObject("Scripting.Dictionary")
  Set This = ThisWorkbook.ActiveSheet
  last_row = This.Range("A" & Rows.Count).End(xlUp).Row
  ReDim table(last_row - 1, 2)
  table = This.Range("A1:C" & last_row)
  For row_loop = 1 To last_row
    A_number = table(row_loop, 1)
    C_list.RemoveAll
    For search_loop = 1 To last_row
      If table(search_loop, 1) = A_number Then
        B_name = table(search_loop, 2)
        If Not C_list.exists(B_name) Then
          C_list.Add (B_name), 0
        End If
      End If
    Next
    table(row_loop, 3) = Join(C_list.keys, "・")
  Next
  This.Range("A1:C" & last_row) = table
End Sub
2021/03/17(水) 10:59:16.82ID:AkcuhhXSr
変数にABCなんてのを使ってる時点でセンスゼロ
後で見て全くわからないバグの温床にしかならない
2021/03/17(水) 11:12:33.58ID:QeKL1gNm0
LBound UBound使えよ
2021/03/17(水) 11:56:37.23ID:KXbC8pO1H
>>965
お手本見せて
>>966
データ数は変数に入れたから改めて調べる必要ないという判断
968デフォルトの名無しさん (ワッチョイ 7d5f-6Qoe)
垢版 |
2021/03/17(水) 12:13:35.08ID:YH/YYkmR0
クソコード
2021/03/17(水) 12:27:17.82ID:rAxKrtcHF
うんコード
2021/03/17(水) 13:20:25.46ID:4HdAS7ns0
変数名に対する識者の見解
https://mevius.5ch.net/test/read.cgi/bsoft/1608362765/253n
2021/03/17(水) 14:37:09.94ID:rwSgtXuJ0
口だけで何もしない(できない)奴はスルーでいいよ
2021/03/17(水) 15:25:09.30ID:vF0LuwhE0
>>964
うーん
頭ごなしに糞というつもりはないけど
そうだね、もし改善点を挙げるとすれば・・・
まぁ聞き流して良いけどね。

・変数名は一貫性を持たせて、一見して何を意味しているのか分かるようにすること。
例えば頭の1文字が大文字だったり小文字しているのをキャメル形式に統一するとか。
・ActiveSheetは極力使わない。
キチンとした意味を持っているならそれでいいけど、フォームやツールバーから呼ばれることやそのように改修される可能性も考慮してどのシートを使うか明示的に指定する方が良い。
もちろんその際はシート名が変更されてしまうことを考慮して
シート名ではなくシートオブジェクト名を使用する。
・単一責任原則を踏襲する。
一つの関数またはメソッドに、一つの役割のみ持たせて一つの関数またはメソッドが増長になることを防ぐ。
とは言ってもこれは何を一つの役割とするかを決めるセンスが必要で、
これを上手く作れれば「糞」からひとつ脱却出来る。
後は趣味の問題だけど
・Withを使わないことに慣れる。
VBA → VB.Net → C#に移行したとき、Withが無いから慣れておくとちょっと楽。
・CreateObjectは使い所を考える。
CreateObjectはバージョンを考慮せずに済んだりする反面、
メソッドやプロパティのインテリセンスが効かなくなるため、タイプミスをし易くなるという欠点がある。
参照で繋ぐか、CreateObjectで作成するかは
一考した方が良い。

尚、本来Variant型は何でも入ってしまう危険な型なので
使わない方がいいと言いたいところだけど
EXCELのRangeオブジェクトとあまりに相性が良いから使うなとは言えない。
2021/03/17(水) 16:55:51.25ID:ttYMdvTCd
ワロタ
2021/03/17(水) 19:15:40.71ID:2RS2aA5zM
メガネをクイってしながら凄い早口で言ってそう
2021/03/17(水) 19:24:46.18ID:lGPcjQzL0
>>967
940が一番何をしてるのか分かりやすい
これにシート銘柄をしっかり記述すればよいのでは?
2021/03/17(水) 19:25:19.68ID:lGPcjQzL0
銘柄w
シート名ね
2021/03/17(水) 19:38:30.30ID:vF0LuwhE0
>>964
ついでにもう一つ言っておくと、
ディクショナリやコレクションの要素数は1バイトで扱える数、つまり1から数えて256まで。
着眼点は良かったけど、3000行を考慮すると
オーバーフローで落ちる可能性があるよ。
2021/03/17(水) 19:56:32.92ID:lKwA7qQn0
>>956
ちがう
金星(まぁず)ちゃんというDQNネームがあった
2021/03/17(水) 19:57:39.75ID:lGPcjQzL0
ディクショナリは重複確認用で3000データをまるまる格納する訳じゃないだろ
2021/03/17(水) 20:01:06.73ID:cHLiD5SO0
>>977
>ディクショナリやコレクションの要素数は1バイトで扱える数、つまり1から数えて256まで。
初耳
2021/03/17(水) 20:20:25.27ID:lKwA7qQn0
>>977
嘘を言うな
982デフォルトの名無しさん (ワッチョイ c2e6-0etX)
垢版 |
2021/03/17(水) 21:15:41.95ID:X8ZT7dpP0
256ページの辞書なんて存在するの?
2021/03/17(水) 21:56:14.59ID:2ghuU9if0
ウィンドウ上の制限
984デフォルトの名無しさん (ワッチョイ 7d5f-smt8)
垢版 |
2021/03/17(水) 23:33:51.91ID:YH/YYkmR0
経験からくる誤った思い込みだろうね。

1バイト単位の区切りというのは、8ビットパソコン時代からExcelが存在していれば、可能性としてあるが、16ビットパソコンから作っているのに1バイトという制限はありえない。
2021/03/17(水) 23:42:58.65ID:n+mEYgox0
ディクショナリとかコレクションとかが、具体的に何を指してるかにもよるんだが
まあ255個とかいう制限のディクショナリやコレクションは思いつかないが

EXCELに限れば、上限255とか256とかいう制限のものは今ですらちょこちょこあるんだぜ
https://support.microsoft.com/ja-jp/office/excel-%E3%81%AE%E4%BB%95%E6%A7%98%E3%81%A8%E5%88%B6%E9%99%90-1672b34d-7043-467e-8e27-269d656771c3#ID0EBABAAA=%E6%96%B0%E3%81%97%E3%81%84%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3
986デフォルトの名無しさん (ワッチョイ 7d5f-smt8)
垢版 |
2021/03/18(木) 00:01:49.93ID:7fQvPjcg0
>>985
論点ずらしだな。単純に初期のExcelの時代だとメモリ節約で1バイトにしただけで、足りないと判断されたものは、のちに2バイト、4バイト単位に変更されている。
2021/03/18(木) 00:28:15.06ID:POZoiR5o0
改善点とか言って挙げてる内容は偏ってて微妙だし知識も無いのに態度だけ上からだし昔の人はすごいなぁ
2021/03/18(木) 02:36:30.62ID:Z7yNcrmt0
>>985
例えば列の幅が255文字なのは別に1バイトで管理してるわけじゃなくて上限を設定してるだけだろ
そう言うのはExcelに限った話じゃないよ
2021/03/18(木) 13:11:04.06ID:VjRMlHUp0
>>941
11111,A子
11112,B子

Ruby で、こういうCSV ファイルを処理した場合、
辞書は、こうなる。
値のtrue に意味はない

{"11111"=>{"A子"=>true}, "11112"=>{"B子"=>true},
"11113"=>{"C子"=>true, "D子"=>true, "E子"=>true},
"11114"=>{"F子"=>true}, "11115"=>{"E子"=>true}}

F子は、重複しない
2021/03/18(木) 13:17:05.45ID:VjRMlHUp0
ただし、このファイルを、1パスでは処理できない

11113,C子
11113,D子
11113,E子

"11113"=>{"C子"=>true, "D子"=>true, "E子"=>true},

C子 を読み込んだ時点で、その行よりも後ろにある、
D子・E子 の情報を取得できないから

だから、>>941
では、データ配列を2回読んでいる
2021/03/18(木) 13:36:31.16ID:pzBF2kYz0
>>964
64bit版の時はlonglongで宣言するようにしないとエラーになる可能性があるよ
2021/03/18(木) 14:11:19.12ID:Z7yNcrmt0
>>991
3,000行ぐらいなのに?
2021/03/18(木) 14:55:42.20ID:pzBF2kYz0
そんな考えならプログラミングやめたほうが良いんじゃない
2021/03/18(木) 15:38:13.36ID:Z7yNcrmt0
何でもかんでもLongLong使うのが正解だとでも思ってるの?
995デフォルトの名無しさん (ワッチョイ 7d5f-smt8)
垢版 |
2021/03/18(木) 15:58:28.07ID:7fQvPjcg0
>>993 はデタラメを言っているな。妄想なのかな。
996デフォルトの名無しさん (ワッチョイ 7d5f-smt8)
垢版 |
2021/03/18(木) 16:01:58.30ID:7fQvPjcg0
他の言語や環境の仕様とごっちゃになってるんだろうな。

Excel VBAで32ビットと64ビットで、よく使われるデータ型に大きい違いがあるなんて聞いたことがない。
2021/03/18(木) 17:13:11.58ID:Z7yNcrmt0
LongLong は 64bit 環境でないとサポートされないとか LongPtr のビットサイズやバリアント型の文字列の付加サイズが 32bit と 64bit 環境で違うとかはあるけどまあ些細といえば些細な話だわな
そもそも現状最大行数が Long 型で扱えるのに >>991 が何を心配してるのか興味ある
998デフォルトの名無しさん (ワッチョイ 7d5f-smt8)
垢版 |
2021/03/18(木) 17:39:14.84ID:7fQvPjcg0
64ビットというのも何の組み合わせを言っているのかもわからない。

それにしてもここはマイクロソフトのサポートの人がいないか?

この中途半端さが日本マイクロソフト風なんだが。
999デフォルトの名無しさん (ラクッペペ MMe6-0etX)
垢版 |
2021/03/18(木) 18:16:57.50ID:d7pvjDlRM
サポートの人が256個なんて言わないだろ
2021/03/18(木) 19:19:46.38ID:Z7yNcrmt0
組み合わせ?
単に64bit Excelかどうかだけじゃね?
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 95日 18時間 57分 23秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。