Excel VBA 質問スレ Part61

■ このスレッドは過去ログ倉庫に格納されています
2019/04/25(木) 23:41:03.61ID:rni/4bMj0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512

ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part60
https://mevius.5ch.net/test/read.cgi/tech/1552736349/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2019/06/02(日) 18:41:53.51ID:3MovPWtK0
初心者なので意味がわかりづらかったらすみません

まず、やりたいことは
1.ユーザーにB2〜E2あたりに文字を入力してもらう
2.それを5行前後繰り返す
3.この後にボタンを押してもらう
(以降マクロ処理)
4.入力して貰った行の各左セル(A列)に営業日(月初)を入力する
入力内容を下の行にコピペして、A列日付だけ翌営業日にする
それを月末日まで繰り返す

これを実現したい場合、営業日付をどう表示し、どう繰り返せばよいか検討がつきません
アドバイス頂けませんでしょうか
日付に関してyyyymmのみユーザーに手入力して貰う予定で、それを利用できるかなと思っています
2019/06/02(日) 19:17:16.23ID:wosufaXU0
>>536
Sub foo()

コピー元_行数 = Cells(Rows.Count, 2).End(xlUp).Row - 1
Range(Cells(2, 2), Cells(コピー元_行数 + 1, 5)).Copy

処理年 = InputBox("処理する年を四桁で入力してください", "", Format(Date, "yyyy"))
処理月 = InputBox("処理する月を1桁で入力してください", "", Format(Date, "m"))
'ここに上記が数値以外なら終了させる分岐をかます。めんどいのでしてない

For i = 1 To Day(DateSerial(処理年, 処理月 + 1, 0))
Cells(コピー元_行数 * (i - 1) + 2, 2).PasteSpecial
Range(Cells(コピー元_行数 * (i - 1) + 2, 1), Cells(コピー元_行数 * i + 1, 1)).Value = _
DateSerial(処理年, 処理月, i)
Next

End Sub
2019/06/03(月) 23:29:52.65ID:+V4WoVbB0
>>535
上にあるようにvartypeだとだめかね?
539デフォルトの名無しさん (アウアウエー Sae2-Dmnv)
垢版 |
2019/06/04(火) 00:44:40.62ID:Vr0YkSWUa
教えてください。
ActiveCell.EntireRow.Copy Destination
これで「任意のセル選択中で1行コピー」になりますが、
改造して「任意の複数セル選択中の複数行をコピー」に変えたいんですがわかりますか?
2019/06/04(火) 01:01:51.67ID:sjSsEz0E0
仮面ライダー本郷猛は改造人間である。彼を改造したショッカーは世界制覇を企む悪の秘密結社である。仮面ライダーは人間の自由のためにショッカーと戦うのだ!
541デフォルトの名無しさん (アウアウエー Sae2-Dmnv)
垢版 |
2019/06/04(火) 07:28:25.36ID:CwYFwdXYa
>>539

Selection で自己解決したんですが、


ThisWorkbook.Worksheets("sheetA").Activate
Selection.EntireRow.Copy Destination:=ThisWorkbook.Worksheets("SheetB").Range("A57:A62")
ThisWorkbook.Worksheets("SheetB").Activate
Range("A3:I4").Select
End Sub

で所定の6行のスペースにペーストするんですが、選択セルが5以下だと重複して貼り付けられます。
重複しない方法を教えてください。
2019/06/04(火) 07:51:19.62ID:kIR0GcUMx
コピー先のセルのアドレスをシンプルに"A57"に変えるだけでいいと思う
2019/06/04(火) 08:26:51.88ID:0SaUhvTtM
>>538
それだと対象のブックを開かなきゃダメじゃん
2019/06/04(火) 11:03:51.11ID:ABA6WeJwH
【速報】金券五百円分とすかいらーく優侍券をすぐもらえる 
https://pbs.twimg.com/media/D8I_sqPU0AEizjq.jpg   
   
@ スマホでたいむばんくを入手    
A 会員登録を済ませる
B マイページへ移動する   
C 招待コード→招待コードを入力する [Rirz Tu](スペース抜き)     
 
今なら更に4日18時までの登録で2倍の600円の紹介金を入手
クオカードとすかいらーく優待券を両方ゲットできます。     
       
数分の作業でできますのでご利用下さい。   
2019/06/04(火) 11:40:41.30ID:ClB/ngZb0
ここにも来たかフィッシング詐欺
2019/06/04(火) 13:24:40.51ID:g1r7g3uN0
>>544
TVCM見た後に入れた
547デフォルトの名無しさん (アウアウエー Sae2-Dmnv)
垢版 |
2019/06/04(火) 18:55:29.74ID:w6NTuaQma
>>542
できました。ありがとうございます。
2019/06/04(火) 22:55:20.87ID:JKzLDG9lp
直前に開いたファイルのキャッシュ的なものを参照して情報を取得することってできますか?
例えば直前に開いて印刷して閉じて消去したファイルのA1セルに記載の値を別ファイルのB1セルに転記する、みたいな
549デフォルトの名無しさん (ワッチョイ 73f1-Xi99)
垢版 |
2019/06/04(火) 23:07:17.09ID:e2Nk6zam0
>>548
そんなの知るか
2019/06/04(火) 23:20:09.51ID:GvHzI0140
>>548
必ずバックアップしてから開くようにバッチファイル作ればいいだけじゃね
2019/06/05(水) 00:02:17.80ID:b19uQdIQp
>>549
知らないならわざわざ書き込まなくていいよw
2019/06/05(水) 09:28:21.10ID:d6kiH4sy0
印刷時には転記先のファイルが必ず開いてる状態なの?
それならWorkbook_BeforeCloseで閉じる直前に転記は?
2019/06/05(水) 14:54:24.90ID:1kcRpkSq0
これはそんなの知るかという気持ちもよく分かる。
工夫次第でどうとでもなるけど、そういう問題かどうかをはっきりさせるべき。

そういう仕組みを作ることなくできるかと言われれば、できないと答えるだろう。
工夫でそういう仕組みを作りたいというなら、それについて自分の考えを述べるべきだ。
VBAの問題じゃなくて考え方を考える問題なんだから単純なスキルの問題ではない。
2019/06/05(水) 15:52:32.95ID:bp5RZsKU0
事前に、ファイルを閉じる前や消す前に準備しておけばどうともできる

他人が使ったパソコンをこっそりのぞき見したいなら、それはかなり難しい
不可能じゃないけど、現時点では動機が不明で教えるべきじゃないと思われるので書かない
2019/06/05(水) 17:22:15.93ID:b19uQdIQp
>>
2019/06/05(水) 19:45:36.22ID:UgnFbYyua
ファイルの履歴とか拾うのかな?
2019/06/05(水) 20:51:53.11ID:zo8mZEUL0
>>556
> 消去したファイルのA1セルに記載の値
なので履歴じゃダメだろうな
マジでなんのためにそんなことをしたいのがさっぱりわからん…
2019/06/05(水) 22:41:29.46ID:4nGxoieG0
>>537
遅くなりましたがありがとうございました!とても参考になりました
おかげさまでメイン処理はひとまず形になりました
ツール完成させられるよう頑張ります
2019/06/05(水) 23:22:07.87ID:Uovi79l30
>>558
こんなこともわからんような馬鹿が作ったものを使わされるとか
2019/06/05(水) 23:37:24.78ID:PwgeLPYz0
>>559
人間性に問題のある君と同じ職場よりは大分マシだろう
561デフォルトの名無しさん (スッップ Sd8a-aXJR)
垢版 |
2019/06/05(水) 23:48:39.29ID:70FqVZZPd
いやいや
ここは御大層に「ツール」とか書かれて吹き出す場面だろ
2019/06/06(木) 00:27:01.25ID:vR0zkRe5M
ここは、あれだ。プークスクス、マジ受けるんですけど!というやつだ。
2019/06/06(木) 06:36:27.46ID:ME671i1fx
Use after free攻撃のやり方を聞かれてるのと一緒だよなこれ
2019/06/06(木) 12:05:19.65ID:vG+mGYiZ0
まあな、Excelの標準機能で出来ることも知らん奴が、作りたいものを考えて質問するんだよな
だけど、ちょっと知ったかぶってどんなプログラムを作りたいとか書くけど
普通にExcelの機能で出来ることも、質問してるんだよな
動作仕様をかける奴は普通VBAのマクロも作れる
作れないやつの動作仕様ってごみなんだよな、何がしたいかだけ書けよと思う
2019/06/06(木) 12:22:02.47ID:GuX8oFrp0
>>564
日本語でおk
2019/06/06(木) 12:59:11.37ID:vG+mGYiZ0
>>565
すみません、日本語難しいどこですか?
2019/06/06(木) 15:41:00.01ID:GuX8oFrp0
>>566
天丼やめろw
2019/06/06(木) 20:23:11.53ID:ulk3mDRi0
日本人の俺でもわからんw
2019/06/06(木) 22:44:54.22ID:17p7tBKQ0
標準機能が嫌いなんだろう。
あとは、VLOOKUPでも出来るけど、
遅いし面倒くさいからADO+SQLでやるとかさ。
570デフォルトの名無しさん (ワッチョイ 4f01-sTnS)
垢版 |
2019/06/07(金) 01:08:10.00ID:RApS/5ei0
ファイルの保存先の権限がなくて、別のユーザーのアカウントとパスワードで保存できる??
2019/06/07(金) 07:52:48.12ID:ONMYVTJLM
VBA関係ある?
572デフォルトの名無しさん (オイコラミネオ MM49-sTnS)
垢版 |
2019/06/07(金) 12:45:57.13ID:6q38d7bCM
あるよ
573中国人 (ワッチョイ 17f1-nH6h)
垢版 |
2019/06/07(金) 15:55:31.64ID:DiCkvzGr0
ないあるよ
2019/06/07(金) 20:52:52.69ID:Xpa0BB/Y0
どうやるんだそれ・・。
OS上でOSでも動かすのか?
2019/06/07(金) 20:58:22.20ID:hQ9V7YAV0
そういや、Windows 3.1はMS-DOSの上で動いていたっけ…
2019/06/07(金) 21:14:02.26ID:WJdNdQhR0
Win3.1はミドルウェア
2019/06/07(金) 21:30:42.69ID:4L9BxcJD0
c:¥> win
だっけ?
2019/06/07(金) 21:36:57.74ID:fqhLtcXL0
フロッピー12枚だか14枚だか組みだったな
2019/06/07(金) 23:29:54.75ID:5cD0N+lz0
>>570
それってネットワーク先の話?
共有フォルダでの読み書きとか?

結構難しい。
2019/06/09(日) 05:37:42.55ID:fRZrFeuoa
excelのセルに記載された文字を、
PDFに位置指定して、テキスト挿入できますか?
581デフォルトの名無しさん (ブーイモ MMe1-nH6h)
垢版 |
2019/06/09(日) 07:51:19.35ID:6FBaXgmQM
できます
582580 (ブーイモ MMe1-nH6h)
垢版 |
2019/06/09(日) 07:52:18.86ID:6FBaXgmQM
>>581
できるかどうかを聞いているのではない。
やり方を聞いておるのだ。
2019/06/09(日) 08:13:30.81ID:y15MKF+M0
※わざとです
2019/06/09(日) 08:14:03.36ID:fRZrFeuoa
>>581
a=cells(1,1).value
b=cells(2,1).value

@abc.pdfをオープン
A3p目の左上を起点に左から100、上から50の位置に、8ptで幅20の黒色で、aの内容のテキスト挿入

if b=1 then
B3p目の左上起点の左から200上から300の位置に、黒色の縦10幅10の円を挿入
else if b=2 then
C上記Bの位置違いパターン
endif

この@ABを教えていただきたいです。
2019/06/09(日) 09:04:09.38ID:LJTYegK80
PDF直接作るの超めんどいぞ
Excelで位置確認ずらしていきながら合わせるって方法取ったほうが良い
2019/06/09(日) 09:27:58.90ID:fRZrFeuoa
>>585

マジかぁ
pdfは書式が既にあって、それをまずエクセル化するところからしなくてはならない

excelのセルから抽出し、wordに入力するのも大変?
2019/06/09(日) 09:32:56.69ID:LJTYegK80
>>586
Excel VBAでワードを開く方法がある
https://tonari-it.com/excel-vba-word-application/

wordの細かい所をどこまで触るかによると思う
単純作業なら全然難しくないよ
2019/06/09(日) 09:45:03.10ID:fRZrFeuoa
>>587
ありがとう、ちょっと読み込んでみる

やりたいことは要は、エクセルにずらーっとリストがあって、その内容を、

雇用契約書の穴埋め書式みたいな他のファイル(エクセル、ワード、pdfあり)に展開したい

展開内容はセル内容の挿入と、履歴書の男・女みたいに、○を挿入する形がある
2019/06/09(日) 09:52:34.55ID:Apn2tV9M0
○で囲むのは止めたほうが良い。ずれる
以下のような形に変えれるなら買えたほうが良い。
□男  ?女
2019/06/09(日) 09:53:01.65ID:Apn2tV9M0
文字化けした。
女の左にあるのはチェックマークね
2019/06/09(日) 10:05:38.50ID:fRZrFeuoa
>>589
いや、書式はもう決まってんのよ
変えれるものじゃないんだ

□の方が楽だけどなぁ
2019/06/09(日) 10:07:50.02ID:qEIP4aE00
>>587
参照設定してるのに、CreateObject(“Word.Application”)って何?
2019/06/09(日) 10:11:05.04ID:Apn2tV9M0
>>591
そうか、じゃぁ・・・
頑張って!!
2019/06/09(日) 10:13:10.62ID:47rhBQpmx
>>592
参照設定はあくまで参照先ライブラリの型をインテリセンスや型指定でネイティブに使えるようにするための設定
ワードのアプリケーションのインスタンスを生成しないとエクセルからワードの操作はできない
2019/06/09(日) 10:15:31.89ID:qEIP4aE00
>>594
そういうことじゃなくて、参照設定でその書き方? っていう。
それやると、レイトバインドとアーリーバインド、どっちになるの?
2019/06/09(日) 10:17:10.52ID:qQGT2b0kM
>>593
最終手段はワードとpdfは画像化してエクセルに貼り付けて、そこでマクロるかな…
2019/06/09(日) 10:19:23.94ID:qEIP4aE00
>>594
何か変だと思って試したけど、

こうか
Dim w As Word.Application
Set w = New Word.Application

こうじゃない?
Dim w As New Word.Application
2019/06/09(日) 10:29:49.90ID:47rhBQpmx
>>595
>>597
参照設定したときに参照先ライブラリのクラスについて必ずNewキーワードでインスタンス生成しないといけないという決まりはない

参照設定して変数にワードのアプリケーション型を適用してる時点でアーリーバインドになる
Newキーワードで生成したインスタンスのポインタを変数で受けてもCreateObjectから返ってくるポインタを変数で受けても同じ
2019/06/09(日) 10:36:03.49ID:47rhBQpmx
というか、参照設定時のインスタンス生成にNew使わないと駄目なんて決まりがあったら、GetObjectで他アプリのインスタンス取得して操作したいときはどうなるのって話になるよな
2019/06/09(日) 11:12:20.95ID:wmlwj4f30
>>598-599
わざわざ参照設定してるのにCreateObject(…)するアホがいるとは…
2019/06/09(日) 11:16:29.03ID:Apn2tV9M0
CreateObjectも参照設定もimportだから、どっちか一つでいいんじゃないの?
両方やっても問題ないけど意味はないと思う

あんまリンク内容見ずに貼ってしまった俺が悪いな、すまん
2019/06/09(日) 13:34:23.02ID:IXdTYEKb0
山椒設定はライブラリバージョン古いPCじゃ即フリーズじゃなかったっけ
2019/06/09(日) 13:37:36.61ID:WDGftzb80
配布するなら、参照設定でプログラミングしてテストして、参照設定外して createobject方式にして配布
配布先で参照設定か外れることがまれによくあるので、こうしとくと無難
2019/06/09(日) 15:01:31.22ID:lDRLC8Vq0
>>603
そっすね
2019/06/10(月) 08:22:05.20ID:8u20RjOl0
えー参照設定外れることあんの
まぁいっか・・・・
2019/06/10(月) 08:23:44.80ID:kP6gdt450
参照設定はあまり良い挙動をしない。あと挙動が変な時に発見し辛い
createobject()書いたほうが良い
2019/06/10(月) 08:27:18.33ID:WEjn6M+Ya
>>596だけどpdfを画像に変換し、エクセルに貼り付けて、テキストボックス挿入がクソ楽だった
2019/06/10(月) 09:56:01.81ID:psqZaESWM
ソースファイル(.bas + .cls)配布のときは参照設定はやりづらいからな
2019/06/10(月) 10:07:36.22ID:ul4Aljx5M
>>606
そそ
参照設定外れても、それとは全く関係ない所がエラーになって止まる
枯れたプログラムだったり慣れてくると気づくけど、そうでないと解決に遠回りする
それらも覚えておくべし
610デフォルトの名無しさん (ブーイモ MM3f-nH6h)
垢版 |
2019/06/10(月) 10:20:56.62ID:63YEvEejM
>>606のおっちゃんが、createobject()書いたほうが良い、と書いてるけどなぜ?
2019/06/10(月) 10:45:16.96ID:1PsKpI+e0
参照設定が実はおまかんだから
今のPCで動いてても次の環境や他のPCで動く保証がない

ってことでしょ?
612デフォルトの名無しさん (ブーイモ MM3f-nH6h)
垢版 |
2019/06/10(月) 10:49:13.46ID:63YEvEejM
>>611のおっちゃんが、おまかん、と書いてるけどどういう意味?
2019/06/10(月) 10:55:53.93ID:b1k6Fpi4d
おまえのかあちゃん
614デフォルトの名無しさん (スプッッ Sddb-mek+)
垢版 |
2019/06/10(月) 18:38:27.74ID:Z+X8vlHcd
参照設定までするのにVBAでする必要ある?
なんでそこまで意地になってVBAなんぞに拘るの?
2019/06/10(月) 18:45:40.31ID:kP6gdt450
>>612
お前の環境(が悪い)
スマホゲームで動作が悪い時に言われる事がある
おまかんとかおれかんとか

>>614
全くこだわってないよ
最初から別言語やツールが良ければそれらで作ってる
Excelで99%出来上がってるのにここから戻るってのがありえないってだけ
2019/06/10(月) 19:27:31.99ID:gj8XPCJq0
>>614
VBAスレだし

>>615
それスマホに限った話じゃないよ
2019/06/10(月) 20:45:20.89ID:kP6gdt450
>>616
そうか、スマン
いつから流行りだしたんだろう
2019/06/10(月) 21:38:08.94ID:uF73PSK40
VBAに新機能がつかないのはもう諦めた
でもIDEはもうちょっと進化させるつもりないん?

と思って調べてみたらアドインでなんとかする方法あるんだな
使ってる人いる?
2019/06/10(月) 21:50:15.76ID:kP6gdt450
.NET使えるから最新環境で作成できるぞ
一回試した後は一回も使ってないけど
やっぱファイルと一体化してるのは超便利だ
2019/06/10(月) 21:54:55.45ID:t/PPxU2R0
グラフのプロットエリアの位置が設定出来ん!
ググったら、デバッグプリントするといいよって書いてあったので、
やってみたら、本当に出来た。
何でそんなんでOKなのかワケワカラン。
2019/06/10(月) 21:56:39.67ID:7JqNFjKf0
>>617
DLL HELLならVisualBasicのVBXが元祖だよ
2019/06/10(月) 22:12:08.21ID:fPwYLMuZM
>>618
むしろ開発環境は意図的に使用困難にしていく方向じゃないかな
VBAの実行はできるけどVBEは廃止、どうしても編集したい場合は旧バージョンを使ってね、くらいはそろそろ覚悟しといたほうがいいかも
2019/06/10(月) 22:14:44.52ID:vWR/CKhV0
そんなあほな
2019/06/10(月) 22:18:00.17ID:kP6gdt450
MSとしてはそうしたいのは透けて見えるけど、ここまで広まったものを軌道修正するのはなかなかねぇ
2019/06/10(月) 23:01:58.73ID:vWR/CKhV0
ええ…
代わりになるものがあるならともかく
2019/06/11(火) 01:34:20.54ID:3Y+SR7BCM
代わりはMSがこれまでにいくらでも提供してきただろう
お前が新しいものから目を背け続けてきただけだ
627デフォルトの名無しさん (ワッチョイ 17f1-nH6h)
垢版 |
2019/06/11(火) 01:41:42.71ID:Doe0n0C30
>>614のおっちゃんはVBAをバカにしてるけど
じぁあVABを使わないなら何の言語でするつもりなの?
2019/06/11(火) 04:40:05.71ID:6ros6UsQ0
パワーシェルな
629デフォルトの名無しさん (ブーイモ MMf3-nH6h)
垢版 |
2019/06/11(火) 06:11:13.67ID:RxxCGp6TM
>>628のおっちゃんはパワーシェルと言ってるけど
便利なエディターとかはあるの?
2019/06/11(火) 07:11:21.73ID:Ht7m4b5+M
>>610, >>610
爺お得意のバッドノウハウだから気にしなくていいよ
2019/06/11(火) 07:13:42.88ID:Ht7m4b5+M
>>629
PowerShell ISEでいいだろ
ただ>>628のおっちゃんはまともに使ったことないと思う
PowerShell + Excel って結構色々ハマりポイントあるし
2019/06/11(火) 07:29:09.03ID:3zpWolTP0
たかがファイルの内容編集に
広範なシステムアクセスを行うPowerShellをつかわにゃならんのか?
2019/06/11(火) 07:43:28.02ID:aZcuYhl50
Ruby の方が、バグらないから良い

それに、Rubyスクリプト内で、PowerShell コマンド・スクリプトも実行できるし
2019/06/11(火) 07:53:53.39ID:3zpWolTP0
外部のプログラムと
シェル用にガチガチになったExcelフォーマット別々に扱うのも不便そうだ

ExcelVBAこそオブジェクト指向の体現であったのか
2019/06/11(火) 07:59:35.57ID:CNYfS3si0
>>633
もうすぐ無くなる言語勧めるのやめろ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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