Excel VBA 質問スレ Part61 at TECH
[2ch|▼Menu]
[前50を表示]
550:デフォルトの名無しさん
19/06/04 23:20:09.51 GvHzI0140.net
>>548
必ずバックアップしてから開くようにバッチファイル作ればいいだけじゃね

551:デフォルトの名無しさん
19/06/05 00:02:17.80 b19uQdIQp.net
>>549
知らないならわざわざ書き込まなくていいよw

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

553:デフォルトの名無しさん
19/06/05 14:54:24.90 1kcRpkSq0.net
これはそんなの知るかという気持ちもよく分かる。
工夫次第でどうとでもなるけど、そういう問題かどうかをはっきりさせるべき。
そういう仕組みを作ることなくできるかと言われれば、できないと答えるだろう。
工夫でそういう仕組みを作りたいというなら、それについて自分の考えを述べるべきだ。
VBAの問題じゃなくて考え方を考える問題なんだから単純なスキルの問題ではない。

554:デフォルトの名無しさん
19/06/05 15:52:32.95 bp5RZsKU0.net
事前に、ファイルを閉じる前や消す前に準備しておけばどうともできる
他人が使ったパソコンをこっそりのぞき見したいなら、それはかなり難しい
不可能じゃないけど、現時点では動機が不明で教えるべきじゃないと思われるので書かない

555:デフォルトの名無しさん
19/06/05 17:22:15.93 b19uQdIQp.net
>>

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

よろしくお願いします。

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

557:デフォルトの名無しさん
19/06/05 19:31:41.43 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:デフォルトの名無しさん
19/06/05 19:38:17.24 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:デフォルトの名無しさん
19/06/05 19:41:46.35 5zNRcsxz8
>>558
間違えました。追加したのは


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

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

560:デフォルトの名無しさん
19/06/05 19:45:36.22 UgnFbYyua.net
ファイルの履歴とか拾うのかな?

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

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

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

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

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

例)

2日8時間 → 56:00

2時間30分 → 2:30

5分 → 0:05

4時間 → 4:00

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

564:デフォルトの名無しさん
19/06/05 21:29:26.90 5zNRcsxz8
>>563 の続きです。

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

565:デフォルトの名無しさん
19/06/05 21:34:37.94 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:デフォルトの名無しさん
19/06/05 21:35:38.04 5zNRcsxz8
>>565の続きです。
次に分まで(例 5分2秒)実現するために
以下を感で追加してみたところ失敗しました。
ElseIf sOne = "秒" Then
fTimestamp = fTimestamp + Int(sNum) / (24 * 60 * 60)
sNum = ""

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

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

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

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

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

571:デフォルトの名無しさん
19/06/05 23:22:07.87 Uovi79l30.net
>>570
こんなこともわからんような馬鹿が作ったものを使わされるとか

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

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

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

575:デフォルトの名無しさん
19/06/06 06:36:27.46 ME671i1fx.net
Use after free攻撃のやり方を聞かれてるのと一緒だよなこれ

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

577:デフォルトの名無しさん
19/06/06 12:22:02.47 GuX8oFrp0.net
>>576
日本語でおk

578:デフォルトの名無しさん
19/06/06 12:59:11.37 vG+mGYiZ0.net
>>577
すみません、日本語難しいどこですか?

579:デフォルトの名無しさん
19/06/06 15:41:00.01 GuX8oFrp0.net
>>578
天丼やめろw

580:デフォルトの名無しさん
19/06/06 20:23:11.53 ulk3mDRi0.net
日本人の俺でもわからんw

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

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

583:デフォルトの名無しさん
19/06/07 07:52:48.12 ONMYVTJLM.net
VBA関係ある?

584:デフォルトの名無しさん
19/06/07 12:45:57.13 6q38d7bCM.net
あるよ

585:中国人
19/06/07 15:55:31.64 DiCkvzGr0.net
ないあるよ

586:デフォルトの名無しさん
19/06/07 20:52:52.69 Xpa0BB/Y0.net
どうやるんだそれ・・。
OS上でOSでも動かすのか?

587:デフォルトの名無しさん
19/06/07 20:58:22.20 hQ9V7YAV0.net
そういや、Windows 3.1はMS-DOSの上で動いていたっけ…

588:デフォルトの名無しさん
19/06/07 21:14:02.26 WJdNdQhR0.net
Win3.1はミドルウェア

589:デフォルトの名無しさん
19/06/07 21:30:42.69 4L9BxcJD0.net
c:¥> win
だっけ?

590:デフォルトの名無しさん
19/06/07 21:36:57.74 fqhLtcXL0.net
フロッピー12枚だか14枚だか組みだったな

591:デフォルトの名無しさん
19/06/07 23:29:54.75 5cD0N+lz0.net
>>582
それってネットワーク先の話?
共有フォルダでの読み書きとか?
結構難しい。

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

593:デフォルトの名無しさん
19/06/09 07:51:19.35 6FBaXgmQM.net
できます

594:580
19/06/09 07:52:18.86 6FBaXgmQM.net
>>593
できるかどうかを聞いているのではない。
やり方を聞いておるのだ。

595:デフォルトの名無しさん
19/06/09 08:13:30.81 y15MKF+M0.net
※わざとです

596:デフォルトの名無しさん
19/06/09 08:14:03.36 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:デフォルトの名無しさん
19/06/09 09:04:09.38 LJTYegK80.net
PDF直接作るの超めんどいぞ
Excelで位置確認ずらしていきながら合わせるって方法取ったほうが良い

598:デフォルトの名無しさん
19/06/09 09:27:58.90 fRZrFeuoa.net
>>597
マジかぁ
pdfは書式が既にあって、それをまずエクセル化するところからしなくてはならない
excelのセルから抽出し、wordに入力するのも大変?

599:デフォルトの名無しさん
19/06/09 09:32:56.69 LJTYegK80.net
>>598
Excel VBAでワードを開く方法がある
URLリンク(tonari-it.com)
wordの細かい所をどこまで触るかによると思う
単純作業なら全然難しくないよ

600:デフォルトの名無しさん
19/06/09 09:45:03.10 fRZrFeuoa.net
>>599
ありがとう、ちょっと読み込んでみる
やりたいことは要は、エクセルにずらーっとリストがあって、その内容を、
雇用契約書の穴埋め書式みたいな他のファイル(エクセル、ワード、pdfあり)に展開したい
展開内容はセル内容の挿入と、履歴書の男・女みたいに、○を挿入する形がある

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

602:デフォルトの名無しさん
19/06/09 09:53:01.65 Apn2tV9M0.net
文字化けした。
女の左にあるのはチェックマークね

603:デフォルトの名無しさん
19/06/09 10:05:38.50 fRZrFeuoa.net
>>601
いや、書式はもう決まってんのよ
変えれるものじゃないんだ
□の方が楽だけどなぁ

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

605:デフォルトの名無しさん
19/06/09 10:11:05.04 Apn2tV9M0.net
>>603
そうか、じゃぁ・・・
頑張って!!

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

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

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

609:デフォルトの名無しさん
19/06/09 10:19:23.94 qEIP4aE00.net
>>606
何か変だと思って試したけど、
こうか
Dim w As Word.Application
Set w = New Word.Application
こうじゃない?
Dim w As New Word.Application

610:デフォルトの名無しさん
19/06/09 10:29:49.90 47rhBQpmx.net
>>607
>>609
参照設定したときに参照先ライブラリのクラスについて必ずNewキーワードでインスタンス生成しないといけないという決まりはない
参照設定して変数にワードのアプリケーション型を適用してる時点でアーリーバインドになる
Newキーワードで生成したインスタンスのポインタを変数で受けてもCreateObjectから返ってくるポインタを変数で受けても同じ

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

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

613:デフォルトの名無しさん
19/06/09 11:16:29.03 Apn2tV9M0.net
CreateObjectも参照設定もimportだから、どっちか一つでいいんじゃないの?
両方やっても問題ないけど意味はないと思う
あんまリンク内容見ずに貼ってしまった俺が悪いな、すまん

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

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

616:デフォルトの名無しさん
19/06/09 15:01:31.22 lDRLC8Vq0.net
>>615
そっすね


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

2370日前に更新/181 KB
担当:undef