X



Excel VBA 質問スレ Part68

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ dbda-8BP0)
垢版 |
2020/08/30(日) 11:55:27.33ID:Oy/VxFsh0
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付ける

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

※前スレ
Excel VBA 質問スレ Part67
https://mevius.5ch.net/test/read.cgi/tech/1593104489/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
0432デフォルトの名無しさん (ブーイモ MMff-gZNM)
垢版 |
2020/10/01(木) 07:38:17.90ID:v/kjpRq5M
業務用ツール作るのってホント大変よな……
使いたい人向けに配信するんじゃなくて、使わされる人に使ってもらうツールだからどんなに優しいUIにしても平気で想像を上回るイレギュラーな操作して動かなくなった!ポンコツめ!みたいなクレーム出してくる人もいるし
単純に新しい物を使いたくないからってワザとメチャクチャな操作したりもしてるんだろうけど
ツールを要求してくる上の人達は現状の環境で対応出来るようにしたいからExcelのマクロでどうにかしてよ!とか言ってくるし、VBAはなんでも出来る魔法のツールだと思ってるし

長々と愚痴ってスマンな
スレチだよな
0433デフォルトの名無しさん (スッップ Sd1f-nakg)
垢版 |
2020/10/01(木) 07:49:06.10ID:H0TKMoBwd
Windowsの標準のユーザーインターフェイスを意識しないと、使いやすいと思ったものが結局つかいにくくなる。

フォーカスがあたってなくても計測値が取れるように作るという発想が無いのが厳しい。
そんなこと出来ないなら根本から違うユーザーインターフェイスを採用すべき。

こういう処理でユーザーに何かさせる必要は無い筈。
0435デフォルトの名無しさん (ラクッペペ MM7f-62ru)
垢版 |
2020/10/01(木) 10:34:23.83ID:6DJ6J+GDM
タブレットでバーコードリーダーのキーボード入力モードでも使ってるんだろうなと想像

COMで操作できるライブラぐらい付いているだろうからそれ使えば解決
0436デフォルトの名無しさん (ワッチョイ cf63-dtjG)
垢版 |
2020/10/01(木) 16:54:34.45ID:Ld5Ou2iR0
>>435
まさにおっしゃる通りで作業進捗をバーコードで管理するものを作りました。
次は工程内のチェックシートと計測値などのトレーサビリティです禿げそう
とりあえず計測器具も試用で借りてる段階なのでメーカーにライブラリの事聞いてみます…
0437デフォルトの名無しさん (テテンテンテン MM7f-vZte)
垢版 |
2020/10/01(木) 17:12:49.41ID:W6bAQtLIM
>>431
知ってた
0439デフォルトの名無しさん (ワッチョイ ff1f-Fuq4)
垢版 |
2020/10/01(木) 21:36:53.69ID:dM4yb7Ap0
罫線で囲われてたり、色塗りされたりするセルをマウスでドラッグ移動した時移動した場所は何もなくるなるのを罫線のみを残す方法ってありませんか?
簡単に言うと罫線で作った表の形式を保持したい。
0444デフォルトの名無しさん (ワッチョイ e3da-yeTY)
垢版 |
2020/10/02(金) 01:42:30.77ID:MWdBgx4Q0
セルをマウスでドラッグって何だよ?
エクセルで将棋でもやるの?
0445デフォルトの名無しさん (ワッチョイ f35f-67ZW)
垢版 |
2020/10/02(金) 01:43:49.39ID:ChxT/cO/0
>>425
それExcel VBAでやるものではない。
自分のやりたいようにやりたければ、Windows SDKでの開発をしてください。
0446デフォルトの名無しさん (ワッチョイ f35f-67ZW)
垢版 |
2020/10/02(金) 01:49:29.59ID:ChxT/cO/0
>>439
そもそも手順というものを考えた方がいい。
移動する前の情報を移動先には持ってくるが、移動元にはその情報を適用しないのはなぜ?
0447デフォルトの名無しさん (ワッチョイ d3cc-gW4a)
垢版 |
2020/10/02(金) 10:09:18.16ID:A7BNHAQE0
指定したフォルダ内の全てのCVSファイルを配列に追記していき対のですが、コードを教えてください
配列の0列目(1次元目)にはそれぞれのCSVファイルのファイル名をいれたいです。

Sub Sptyou()

Dim FolderPath As String, buf As String, TargetDate As String

'■フォルダを指定する
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = 0 Then
MsgBox "キャンセルされました。"
Exit Sub
End If
FolderPath = .SelectedItems(1)
End With
'■指定されたフォルダ内の全てのCSVファイルを開いて、そのファイルA列からGH列を配列に入れていく
ReDim BiforeArraybar(1, 190) As Variant
0448447 (ワッチョイ d3cc-gW4a)
垢版 |
2020/10/02(金) 10:09:56.74ID:A7BNHAQE0
つづき

buf = Dir(FolderPath & "*.csv")

Do While buf <> ""
Open buf For Input As #1 'インプットモードでファイルを開く
Line Input #1, TargetDate
Do Until EOF(1) 'ファイルの終点まで
Line Input #1, Tardt '開いたファイルを上から順に読み込んでいき、変数TargetDateに代入していく
If Split(TargetDate, ",")(1) = "" Then Exit Do
'配列に追記する
ReDim Preserve BiforeArray(Ubound(BiforeArray) + 1 To ??, 1 To 190) = Sprit(TargetDate,",")
Loop
Close #1
buf = Dir()
Loop

End Sub
0449デフォルトの名無しさん (ブーイモ MM27-gZNM)
垢版 |
2020/10/02(金) 10:42:45.10ID:cHoSzh9XM
ReDim Preserveで操作可能なのは最右端の次元だけだから2次元配列で1次元目に使いたいなら一旦反転させた状態で操作して出力時にWorksheetfunction.transpose使って吐き出す必要があるぞ
いまいち最終目的が分からなかったから取り合えず読んでて気になった所だけ
0451デフォルトの名無しさん (ラクッペペ MM7f-62ru)
垢版 |
2020/10/02(金) 12:25:22.61ID:XdHW2/g2M
win dosならcopyで連結できるけど
0453447 (ワッチョイ d3cc-jreG)
垢版 |
2020/10/02(金) 13:32:21.66ID:A7BNHAQE0
>>449

右端にファイル名を入れるにはどうしたらいいですか?

それと、配列のUpperをどう設定したらいいですか?
0454デフォルトの名無しさん (ワッチョイ ff6d-Zm3W)
垢版 |
2020/10/02(金) 15:56:01.43ID:7/1+1goB0
また馬鹿な質問者か。それともいつもの厚かましい馬鹿か?
0455デフォルトの名無しさん (ラクッペペ MM7f-62ru)
垢版 |
2020/10/02(金) 16:13:26.37ID:XdHW2/g2M
右端の次元と右端の列では話の次元が違うけどわざとやってんのかなー?

excelなんだからとりあえずシートに格納すればいいと思うんだけどなー
配列に1行づつ追加するよりはやいんじゃね?
VBは動的配列無いんだからパフォーマンス出すには頭を使わにゃいかんよ
行数をキーにしたDictionaryもいいかもね
0456デフォルトの名無しさん (ワッチョイ ffad-gZNM)
垢版 |
2020/10/02(金) 16:51:14.94ID:p6rjz1Jr0
>>453
配列のUpperが何を意味してるのかいまいち分からんがこんな感じで良いんか?

Line Input #1, TargetDate
BeforeArray(0, Ubound(BeforeArray, 2)) = ファイル名
For文[1〜190](BeforeArrayにSplit(TargetDate, ″,″)を放り込む)
ReDim Preserve BeforeArray(0 to 190, Ubound(BeforeArray, 2)+1)
Do Until EOF(1)
Line Input #1, TargetDate
For文[1〜190](BeforeArrayにSplit(TargetDate, ″,″)を放り込む)
ReDim Preserve BeforeArray(0 to 190, Ubound(BeforeArray, 2)+1)
Loop
0459デフォルトの名無しさん (ワッチョイ d32c-G8Sl)
垢版 |
2020/10/02(金) 23:43:54.67ID:ooD45Zz30
CSV の規格では、各要素をクォート文字で囲めば、
各要素中に、列区切り文字も入れられる

"a,b", x

Ruby などのCSVライブラリを使わず、
自力で、列区切り文字で分割すると、バグるだけ

CSVの規格を知らない香具師が、よくやってる
0461デフォルトの名無しさん (ワッチョイ f35f-MSJL)
垢版 |
2020/10/03(土) 07:11:14.79ID:umHauNXS0
ExcelでCSVをダブルクリックで開いて編集、上書きして事故る人が多いね
0464デフォルトの名無しさん (ワッチョイ f35f-67ZW)
垢版 |
2020/10/03(土) 11:51:59.59ID:ylT9+9xh0
>>459
マイクロソフトの製品はそれに沿っているものがあるが、クォーテーションがついたり、つかなかったりするのは、人間にとってもタチが悪く、完全に失敗した仕様と結論が出ている。
0465459 (ワッチョイ d32c-IT45)
垢版 |
2020/10/03(土) 13:01:37.98ID:/wA+nWqo0
列区切り文字は、必要なければ省略できる

つまり、x も、"x" も同じ。
全ての要素に、付けてもよい

ただし、"a,b" みたいに要素内に、
行区切り文字・列区切り文字・クォート文字を含む場合は、省略できない
0466459 (ワッチョイ d32c-IT45)
垢版 |
2020/10/03(土) 13:03:38.87ID:/wA+nWqo0
>>465
修正

>列区切り文字は、必要なければ省略できる
クォート文字は、必要なければ省略できる
0470デフォルトの名無しさん (ワッチョイ 6309-gW4a)
垢版 |
2020/10/04(日) 19:09:07.88ID:mqiPq7lq0
配列を戻す自作関数を呼び出し先Subから複数回実行して、配列を結合したい
んだけど、どうすればできますか? redim preserveとUBoundを使うのかも
しれないけど、いい感じにまとまったコードが書けない。
例えば、下の関数を、別のSubから2回実行させて、
「Ary(3) ※中身:path1,path2,path1,path2」
の結果を得たいです。

Function TestFunc()
Dim testPath(1)
testPath(0) = "path1"
testPath(1) = "path2"
'return
TestFunc = testPath
End Function
0471デフォルトの名無しさん (ワッチョイ 6309-gW4a)
垢版 |
2020/10/04(日) 19:09:08.25ID:mqiPq7lq0
配列を戻す自作関数を呼び出し先Subから複数回実行して、配列を結合したい
んだけど、どうすればできますか? redim preserveとUBoundを使うのかも
しれないけど、いい感じにまとまったコードが書けない。
例えば、下の関数を、別のSubから2回実行させて、
「Ary(3) ※中身:path1,path2,path1,path2」
の結果を得たいです。

Function TestFunc()
Dim testPath(1)
testPath(0) = "path1"
testPath(1) = "path2"
'return
TestFunc = testPath
End Function
0476デフォルトの名無しさん (スッップ Sd1f-EBv7)
垢版 |
2020/10/04(日) 21:43:28.32ID:hlbFeQNpd
後出し続けて全部作ってもらおうという魂胆の奴だぞ
0477デフォルトの名無しさん (オッペケ Sr47-owA3)
垢版 |
2020/10/05(月) 01:21:09.51ID:Roj0MJiCr
VBAからIEを操作して、タグを指定して.valueやselctedで自動化しているのですが、ヤフオクの商品説明だけどうしても値の挿入ができません。
Tabや近い要素をフォーカスしたりクリックし、SendkeyなどでShift +Tabからエンダーなど試していますが、一向に解決できません。
直接でか無くてもカーソルが点滅させれれば、クリップボード経由で貼り付けるような仕様にしようと考えています。
0478デフォルトの名無しさん (ワッチョイ d32c-IT45)
垢版 |
2020/10/05(月) 07:08:41.25ID:z7kgQPv30
漏れは、Ruby, Selenium Webdriver で、ブラウザを自動操作して、
send_key で、ユーザー名・パスワードを自動入力して、ヤフーにログインしてる

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
0488デフォルトの名無しさん (ラクッペペ MM7f-62ru)
垢版 |
2020/10/05(月) 19:48:49.79ID:UUAqkjmTM
>>484
F1キー押す方が早くね?
0491デフォルトの名無しさん (ワッチョイ 1b63-dHQN)
垢版 |
2020/10/07(水) 19:45:01.41ID:FTOZLATq0
下記のように特定の文字を削除して、改行をやめて1行文にしたいのですがコードのご教示いただけないでしょうか


やんやんつけ棒§
めちゃ美味い

ポテトチップス§
めちゃ美味い



やんやんつけ棒めちゃ美味い

ポテトチップスめちゃ美味い
0495デフォルトの名無しさん (ワッチョイ 8ae6-SfJD)
垢版 |
2020/10/07(水) 21:05:04.00ID:8t5FIA980
もっと面白い質問しろよ
0497デフォルトの名無しさん (ワッチョイ 1b63-dHQN)
垢版 |
2020/10/07(水) 21:08:37.26ID:FTOZLATq0
申し訳ありません、もう一点

A1:私は実は理学部出身
A2:の元々は地質学者です
A3:
A4:こうした南鳥島で
A5:
A6:レアアースの濃集が
A7:起こる
A8:
A9:というのは
A10:
A11:特徴的な層準に

A1:私は実は理学部出身
  の元々は地質学者です
A2:こうした南鳥島で
A3:レアアースの濃集が
  起こる
A4:というのは
A5:特徴的な層準に


下の行に文字列 → 2行の文章として、改行を入れてExcelの1マスにまとめる
下の行が空白 → 1行の文書なのでそのまま

これをなんとかVBAで自動化したいのですが記述を教示願えますでしょうか

面白くない質問ですみません…
0501デフォルトの名無しさん (ワッチョイ ca6d-zMau)
垢版 |
2020/10/07(水) 22:16:39.68ID:XaxSLEYL0
いつものクレクレ君かな
0505デフォルトの名無しさん (ワッチョイ 67da-xYNh)
垢版 |
2020/10/08(木) 01:49:40.56ID:584FeZ4r0
>>497
VBAに慣れている人なら簡単に自動化というかVBAで組める内容ではある
問題はこの程度の内容を質問するより先に、自力でできるとこまで自分で
やらなかった最初の一歩が間違っているんだと思う
0506デフォルトの名無しさん (アウアウウー Sa2f-J9E+)
垢版 |
2020/10/08(木) 09:04:33.67ID:BqKPxLQJa
CSVとして保存
VSCode等のまともなエディタで開く
([^¥r]+)¥r¥n([^¥r]+)を”$1¥r¥n$2”に置換
¥r¥n¥r¥nを¥r¥nに置換
Excelにインポート

>>492同様にワンショットでいいならこんな感じでいけるんじゃね
0515デフォルトの名無しさん (ワッチョイ 6bda-q18j)
垢版 |
2020/10/09(金) 00:24:11.53ID:t8qEIjmh0
Dim dw As Date
Dim i As Integer

Sub test()
'ランダムに並び替える

Randomize
'乱数を入れる
For i = 1 To 200
Cells(i, 2) = Rnd()
Next i

'乱数で昇順並び替え
Range("A1:B200").Sort _
Key1:=Range("B1"), Order1:=xlAscending, _
Header:=xlNo, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin

'乱数を削除
Range("B1:B200").Clear

dw = DateAdd("S", 5, Now)
Application.OnTime dw, "test"

End Sub
0516デフォルトの名無しさん (ワッチョイ 6bda-q18j)
垢版 |
2020/10/09(金) 00:26:14.42ID:t8qEIjmh0
>>515
のdw = DateAdd("S", 5, Now)
Application.OnTime dw, "test"
を入れると、
「実行できません。このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。」
となってしまいます。

「マクロのセキュリティ」は「すべて有効」にしています。

どうすればいいでしょうか
0518デフォルトの名無しさん (ワッチョイ 6bda-q18j)
垢版 |
2020/10/09(金) 01:28:40.34ID:t8qEIjmh0
>>517
できました!
>CellsとかRangeとか、ちゃんとシート指定しといたほうが良いぞ
わかりました

ありがとうございました。
0521デフォルトの名無しさん (ブーイモ MM76-HnI9)
垢版 |
2020/10/09(金) 16:55:39.01ID:9cfuJ5OLM
かなり前だけどこのスレで教わったアドバイスが今やってることでピンときた
タブ増やして進めてくより
userformをhideとshowで工程進めてくみたいにしたほうがいいわ
ありがとうかなり前に教えてくれた人!
0522デフォルトの名無しさん (アウアウウー Sa2f-5jeW)
垢版 |
2020/10/09(金) 17:52:44.19ID:OU1KT8YFa
>>519
fori=1 to 要素数(※要素数はカンマで区切られた数)
数字=数字 & “-” & i
next i
みたいな感じで
前の数字と違ったら数字をリセット
(iが1ならこの処理はしない)
要素がひとつなら処理せず次のiに
0525デフォルトの名無しさん (ワッチョイ 03e5-SfJD)
垢版 |
2020/10/09(金) 18:33:13.76ID:/2wG1kS20
内部から漏洩させるのが確実
0526デフォルトの名無しさん (ワッチョイ 03e5-SfJD)
垢版 |
2020/10/09(金) 18:36:07.52ID:/2wG1kS20
>>523
それ以前にまったく要望を満たしていない
■ このスレッドは過去ログ倉庫に格納されています

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