[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2ch.scのread.cgiへ]
Update time : 06/09 23:34 / Filesize : 181 KB / Number-of Response : 617
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part61



1 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 23:41:03.61 ID:rni/4bMj0.net]
!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

545 名前:デフォルトの名無しさん mailto:sage [2019/06/04(火) 11:40:41.30 ID:ClB/ngZb0.net]
ここにも来たかフィッシング詐欺

546 名前:デフォルトの名無しさん mailto:sage [2019/06/04(火) 13:24:40.51 ID:g1r7g3uN0.net]
>>544
TVCM見た後に入れた

547 名前:デフォルトの名無しさん [2019/06/04(火) 18:55:29.74 ID:w6NTuaQma.net]
>>542
できました。ありがとうございます。

548 名前:デフォルトの名無しさん mailto:sage [2019/06/04(火) 22:55:20.87 ID:JKzLDG9lp.net]
直前に開いたファイルのキャッシュ的なものを参照して情報を取得することってできますか?
例えば直前に開いて印刷して閉じて消去したファイルのA1セルに記載の値を別ファイルのB1セルに転記する、みたいな

549 名前:デフォルトの名無しさん [2019/06/04(火) 23:07:17.09 ID:e2Nk6zam0.net]
>>548
そんなの知るか

550 名前:デフォルトの名無しさん mailto:sage [2019/06/04(火) 23:20:09.51 ID:GvHzI0140.net]
>>548
必ずバックアップしてから開くようにバッチファイル作ればいいだけじゃね

551 名前:デフォルトの名無しさん mailto:sage [2019/06/05(水) 00:02:17.80 ID:b19uQdIQp.net]
>>549
知らないならわざわざ書き込まなくていいよw

552 名前:デフォルトの名無しさん mailto:sage [2019/06/05(水) 09:28:21.10 ID:d6kiH4sy0.net]
印刷時には転記先のファイルが必ず開いてる状態なの?
それならWorkbook_BeforeCloseで閉じる直前に転記は?

553 名前:デフォルトの名無しさん mailto:sage [2019/06/05(水) 14:54:24.90 ID:1kcRpkSq0.net]
これはそんなの知るかという気持ちもよく分かる。
工夫次第でどうとでもなるけど、そういう問題かどうかをはっきりさせるべき。

そういう仕組みを作ることなくできるかと言われれば、できないと答えるだろう。
工夫でそういう仕組みを作りたいというなら、それについて自分の考えを述べるべきだ。
VBAの問題じゃなくて考え方を考える問題なんだから単純なスキルの問題ではない。



554 名前:デフォルトの名無しさん mailto:sage [2019/06/05(水) 15:52:32.95 ID:bp5RZsKU0.net]
事前に、ファイルを閉じる前や消す前に準備しておけばどうともできる

他人が使ったパソコンをこっそりのぞき見したいなら、それはかなり難しい
不可能じゃないけど、現時点では動機が不明で教えるべきじゃないと思われるので書かない

555 名前:デフォルトの名無しさん mailto:sage [2019/06/05(水) 17:22:15.93 ID:b19uQdIQp.net]
>>

556 名前:デフォルトの名無しさん [2019/06/05(水) 19:30:41.08 ID:5zNRcsxz8]
日・時・分が漢字で入力されたエクセルの文字列データを、時間データに変換したいです。
どのようにすればよいでしょうか?出来れば、マクロでお願いします。

よろしくお願いします。

例)
--
2日8時間 → 56:00
2時間30分 → 2:30
5分 → 0:05
4時間 → 4:00

557 名前:デフォルトの名無しさん [2019/06/05(水) 19:31:41.43 ID:5zNRcsxz8]
ユーザ関数で……
標準モジュールに下記のコードを入れ、適当なセルに =fTimestamp(A1) の様に式を入れて下さい。
式を入れたセルの書式はユーザ書式で [h]:mm としてください。

Function fTimestamp(sData As String) As Date
  For i = 1 To Len(sData)
    sOne = Mid(sData, i, 1)
    If IsNumeric(sOne) Then
      sNum = sNum & sOne

    ElseIf sOne = "日" Then
      fTimestamp = fTimestamp + Int(sNum)
      sNum = ""

    ElseIf sOne = "時" Then
      fTimestamp = fTimestamp + Int(sNum) / 24
      sNum = ""

    ElseIf sOne = "分" Then
      fTimestamp = fTimestamp + Int(sNum) / (24 * 60)
      sNum = ""
    End If
  Next i
End Function

558 名前:デフォルトの名無しさん [2019/06/05(水) 19:38:17.24 ID:5zNRcsxz8]
>>556です。
>>557を試したところ、

2日8時間 → 56:00
2時間30分 → 2:30
5分 → 0:05
4時間 → 4:00

は上手くいきましたが、秒変換がうまくいきません。
例)
5分4秒

>>557
に単純に、
    ElseIf sOne = "分" Then
      fTimestamp = fTimestamp + Int(sNum) / (24 * 60 * 60)
      sNum = ""

を追加しての結果です(^^;)
何がいけないのでしょう?

559 名前:デフォルトの名無しさん [2019/06/05(水) 19:41:46.35 ID:5zNRcsxz8]
>>558
間違えました。追加したのは


    ElseIf sOne = "秒" Then
      fTimestamp = fTimestamp + Int(sNum) / (24 * 60 * 60)
      sNum = ""

です。お手数をおかけしますが何方かご助力いただけると助かります(^^:

560 名前:デフォルトの名無しさん mailto:sage [2019/06/05(水) 19:45:36.22 ID:UgnFbYyua.net]
ファイルの履歴とか拾うのかな?

561 名前:デフォルトの名無しさん [2019/06/05(水) 20:56:36.68 ID:5zNRcsxz8]
>>560
よくわかりませんが、単純にエクセルのセルに文字列で
◯時間〇分●秒単位で入力されていて
その列の合計と平均を求める感じです。

562 名前:デフォルトの名無しさん [2019/06/05(水) 20:58:28.96 ID:5zNRcsxz8]
文字列形式で入力されているので先ずは数値に変換しないとどうにもなりません。

563 名前:デフォルトの名無しさん [2019/06/05(水) 21:22:31.39 ID:5zNRcsxz8]
>>556
~
>>559
です。わかりにくいので、再度まとめ直させていただきますと(_ _)
以下の通りです。

日・時・分が漢字で入力されたエクセルの文字列データを、時間データに変換したいです。

どのようにすればよいでしょうか?

例)

2日8時間 → 56:00

2時間30分 → 2:30

5分 → 0:05

4時間 → 4:00

以下のマクロを参考にしたところし分までは成功しました。



564 名前:デフォルトの名無しさん [2019/06/05(水) 21:29:26.90 ID:5zNRcsxz8]
>>563 の続きです。

ユーザ関数で……
標準モジュールに下記のコードを入れ、適当なセルに =fTimestamp(A1) の様に式を入力。
式を入れたセルの書式は [h]:mm

565 名前:デフォルトの名無しさん [2019/06/05(水) 21:34:37.94 ID:5zNRcsxz8]
>>564の続きです。
Function fTimestamp(sData As String) As Date
For i = 1 To Len(sData)
sOne = Mid(sData, i, 1)
If IsNumeric(sOne) Then
sNum = sNum & sOne

ElseIf sOne = "日" Then
fTimestamp = fTimestamp + Int(sNum)
sNum = ""

ElseIf sOne = "時" Then
fTimestamp = fTimestamp + Int(sNum) / 24
sNum = ""

ElseIf sOne = "分" Then
fTimestamp = fTimestamp + Int(sNum) / (24 * 60)
sNum = ""
End If
Next i
End Function

566 名前:デフォルトの名無しさん [2019/06/05(水) 21:35:38.04 ID:5zNRcsxz8]
>>565の続きです。
次に分まで(例 5分2秒)実現するために
以下を感で追加してみたところ失敗しました。
ElseIf sOne = "秒" Then
fTimestamp = fTimestamp + Int(sNum) / (24 * 60 * 60)
sNum = ""

無理を言って申し訳ありませんが、何が悪いのかアドバイス
いただけると幸いです。何卒よろしくお願いします。

567 名前:デフォルトの名無しさん [2019/06/05(水) 21:41:19.12 ID:5zNRcsxz8]
>>566
次に秒までの間違いでした(_ _)

568 名前:デフォルトの名無しさん [2019/06/05(水) 22:34:22.55 ID:5zNRcsxz8]
>>566
なぜか
(24 * 60 * 60)
の代わりに
86400
にするとうまくいく感じです。。。
なぜ???

569 名前:デフォルトの名無しさん mailto:sage [2019/06/05(水) 20:51:53.11 ID:zo8mZEUL0.net]
>>560
> 消去したファイルのA1セルに記載の値
なので履歴じゃダメだろうな
マジでなんのためにそんなことをしたいのがさっぱりわからん…

570 名前:デフォルトの名無しさん mailto:sage [2019/06/05(水) 22:41:29.46 ID:4nGxoieG0.net]
>>537
遅くなりましたがありがとうございました!とても参考になりました
おかげさまでメイン処理はひとまず形になりました
ツール完成させられるよう頑張ります

571 名前:デフォルトの名無しさん mailto:sage [2019/06/05(水) 23:22:07.87 ID:Uovi79l30.net]
>>570
こんなこともわからんような馬鹿が作ったものを使わされるとか

572 名前:デフォルトの名無しさん mailto:sage [2019/06/05(水) 23:37:24.78 ID:PwgeLPYz0.net]
>>571
人間性に問題のある君と同じ職場よりは大分マシだろう

573 名前:デフォルトの名無しさん [2019/06/05(水) 23:48:39.29 ID:70FqVZZPd.net]
いやいや
ここは御大層に「ツール」とか書かれて吹き出す場面だろ



574 名前:デフォルトの名無しさん mailto:sage [2019/06/06(木) 00:27:01.25 ID:vR0zkRe5M.net]
ここは、あれだ。プークスクス、マジ受けるんですけど!というやつだ。

575 名前:デフォルトの名無しさん mailto:sage [2019/06/06(木) 06:36:27.46 ID:ME671i1fx.net]
Use after free攻撃のやり方を聞かれてるのと一緒だよなこれ

576 名前:デフォルトの名無しさん mailto:sage [2019/06/06(木) 12:05:19.65 ID:vG+mGYiZ0.net]
まあな、Excelの標準機能で出来ることも知らん奴が、作りたいものを考えて質問するんだよな
だけど、ちょっと知ったかぶってどんなプログラムを作りたいとか書くけど
普通にExcelの機能で出来ることも、質問してるんだよな
動作仕様をかける奴は普通VBAのマクロも作れる
作れないやつの動作仕様ってごみなんだよな、何がしたいかだけ書けよと思う

577 名前:デフォルトの名無しさん mailto:sage [2019/06/06(木) 12:22:02.47 ID:GuX8oFrp0.net]
>>576
日本語でおk

578 名前:デフォルトの名無しさん mailto:sage [2019/06/06(木) 12:59:11.37 ID:vG+mGYiZ0.net]
>>577
すみません、日本語難しいどこですか?

579 名前:デフォルトの名無しさん mailto:sage [2019/06/06(木) 15:41:00.01 ID:GuX8oFrp0.net]
>>578
天丼やめろw

580 名前:デフォルトの名無しさん mailto:sage [2019/06/06(木) 20:23:11.53 ID:ulk3mDRi0.net]
日本人の俺でもわからんw

581 名前:デフォルトの名無しさん mailto:sage [2019/06/06(木) 22:44:54.22 ID:17p7tBKQ0.net]
標準機能が嫌いなんだろう。
あとは、VLOOKUPでも出来るけど、
遅いし面倒くさいからADO+SQLでやるとかさ。

582 名前:デフォルトの名無しさん [2019/06/07(金) 01:08:10.00 ID:RApS/5ei0.net]
ファイルの保存先の権限がなくて、別のユーザーのアカウントとパスワードで保存できる??

583 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 07:52:48.12 ID:ONMYVTJLM.net]
VBA関係ある?



584 名前:デフォルトの名無しさん [2019/06/07(金) 12:45:57.13 ID:6q38d7bCM.net]
あるよ

585 名前:中国人 [2019/06/07(金) 15:55:31.64 ID:DiCkvzGr0.net]
ないあるよ

586 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 20:52:52.69 ID:Xpa0BB/Y0.net]
どうやるんだそれ・・。
OS上でOSでも動かすのか?

587 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 20:58:22.20 ID:hQ9V7YAV0.net]
そういや、Windows 3.1はMS-DOSの上で動いていたっけ…

588 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 21:14:02.26 ID:WJdNdQhR0.net]
Win3.1はミドルウェア

589 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 21:30:42.69 ID:4L9BxcJD0.net]
c:¥> win
だっけ?

590 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 21:36:57.74 ID:fqhLtcXL0.net]
フロッピー12枚だか14枚だか組みだったな

591 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 23:29:54.75 ID:5cD0N+lz0.net]
>>582
それってネットワーク先の話?
共有フォルダでの読み書きとか?

結構難しい。

592 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 05:37:42.55 ID:fRZrFeuoa.net]
excelのセルに記載された文字を、
PDFに位置指定して、テキスト挿入できますか?

593 名前:デフォルトの名無しさん [2019/06/09(日) 07:51:19.35 ID:6FBaXgmQM.net]
できます



594 名前:580 [2019/06/09(日) 07:52:18.86 ID:6FBaXgmQM.net]
>>593
できるかどうかを聞いているのではない。
やり方を聞いておるのだ。

595 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 08:13:30.81 ID:y15MKF+M0.net]
※わざとです

596 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 08:14:03.36 ID:fRZrFeuoa.net]
>>593
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を教えていただきたいです。

597 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 09:04:09.38 ID:LJTYegK80.net]
PDF直接作るの超めんどいぞ
Excelで位置確認ずらしていきながら合わせるって方法取ったほうが良い

598 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 09:27:58.90 ID:fRZrFeuoa.net]
>>597

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

excelのセルから抽出し、wordに入力するのも大変?

599 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 09:32:56.69 ID:LJTYegK80.net]
>>598
Excel VBAでワードを開く方法がある
https://tonari-it.com/excel-vba-word-application/

wordの細かい所をどこまで触るかによると思う
単純作業なら全然難しくないよ

600 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 09:45:03.10 ID:fRZrFeuoa.net]
>>599
ありがとう、ちょっと読み込んでみる

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

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

展開内容はセル内容の挿入と、履歴書の男・女みたいに、○を挿入する形がある

601 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 09:52:34.55 ID:Apn2tV9M0.net]
○で囲むのは止めたほうが良い。ずれる
以下のような形に変えれるなら買えたほうが良い。
□男  ?女

602 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 09:53:01.65 ID:Apn2tV9M0.net]
文字化けした。
女の左にあるのはチェックマークね

603 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 10:05:38.50 ID:fRZrFeuoa.net]
>>601
いや、書式はもう決まってんのよ
変えれるものじゃないんだ

□の方が楽だけどなぁ



604 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 10:07:50.02 ID:qEIP4aE00.net]
>>599
参照設定してるのに、CreateObject(“Word.Application”)って何?

605 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 10:11:05.04 ID:Apn2tV9M0.net]
>>603
そうか、じゃぁ・・・
頑張って!!

606 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 10:13:10.62 ID:47rhBQpmx.net]
>>604
参照設定はあくまで参照先ライブラリの型をインテリセンスや型指定でネイティブに使えるようにするための設定
ワードのアプリケーションのインスタンスを生成しないとエクセルからワードの操作はできない

607 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 10:15:31.89 ID:qEIP4aE00.net]
>>606
そういうことじゃなくて、参照設定でその書き方? っていう。
それやると、レイトバインドとアーリーバインド、どっちになるの?

608 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 10:17:10.52 ID:qQGT2b0kM.net]
>>605
最終手段はワードとpdfは画像化してエクセルに貼り付けて、そこでマクロるかな…

609 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 10:19:23.94 ID:qEIP4aE00.net]
>>606
何か変だと思って試したけど、

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

こうじゃない?
Dim w As New Word.Application

610 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 10:29:49.90 ID:47rhBQpmx.net]
>>607
>>609
参照設定したときに参照先ライブラリのクラスについて必ずNewキーワードでインスタンス生成しないといけないという決まりはない

参照設定して変数にワードのアプリケーション型を適用してる時点でアーリーバインドになる
Newキーワードで生成したインスタンスのポインタを変数で受けてもCreateObjectから返ってくるポインタを変数で受けても同じ

611 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 10:36:03.49 ID:47rhBQpmx.net]
というか、参照設定時のインスタンス生成にNew使わないと駄目なんて決まりがあったら、GetObjectで他アプリのインスタンス取得して操作したいときはどうなるのって話になるよな

612 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 11:12:20.95 ID:wmlwj4f30.net]
>>610-611
わざわざ参照設定してるのにCreateObject(…)するアホがいるとは…

613 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 11:16:29.03 ID:Apn2tV9M0.net]
CreateObjectも参照設定もimportだから、どっちか一つでいいんじゃないの?
両方やっても問題ないけど意味はないと思う

あんまリンク内容見ずに貼ってしまった俺が悪いな、すまん



614 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 13:34:23.02 ID:IXdTYEKb0.net]
山椒設定はライブラリバージョン古いPCじゃ即フリーズじゃなかったっけ

615 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 13:37:36.61 ID:WDGftzb80.net]
配布するなら、参照設定でプログラミングしてテストして、参照設定外して createobject方式にして配布
配布先で参照設定か外れることがまれによくあるので、こうしとくと無難

616 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 15:01:31.22 ID:lDRLC8Vq0.net]
>>615
そっすね






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<181KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef