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


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

VBAなんでも質問スレ Part2



1 名前:デフォルトの名無しさん [2015/05/21(木) 10:52:44.71 ID:KLv0vQmm.net]
VBAを使った質問ならなんでもござれ
本来の対象であるオフィスアプリを操作する以外の話もOK

ゲーム作り、Webアクセス、外部アプリの操作
COM(ActiveX)、Win32API、.NET Framework、DirectXなどなど
VBAで実行するものであればなんでも質問してください

VBAを開発環境としていろいろ作っちゃいましょう

前スレ

VBAなんでも質問スレ
peace.2ch.net/test/read.cgi/tech/1342087380/

関連スレ

Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
peace.2ch.net/test/read.cgi/tech/1419718732/

Access VBA 質問スレ Part1
peace.2ch.net/test/read.cgi/tech/1328536426/

VBプログラマ質問スレ(Ver.6.0 まで) part64
peace.2ch.net/test/read.cgi/tech/1393069842/

Excel総合相談所 118 [転載禁止]©2ch.net
peace.2ch.net/test/read.cgi/bsoft/1430352555/

809 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 00:39:52.05 ID:ke9zWH00.net]
誰もSelenium basic使わんの?
IE使わなくていいしセッション維持とかも楽だぉ?

810 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 18:58:02.34 ID:ADoE3fhW.net]
readystateが信用ならんのがな
completeになっても完全に読み込めてなくてその後の要素取得処理に失敗とか高確率で起こるし
WinHTTP使うのが確実だと思う

811 名前:デフォルトの名無しさん [2019/03/26(火) 22:23:16.17 ID:0P7j5sat.net]
>>791
x だぉ
o だよ
正しい日本語を使いたまえ

812 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 23:48:15.28 ID:KxwbGcFA.net]
結局Do LoopとOn Error Resume Nextで逃げるしかないっていう。

813 名前:デフォルトの名無しさん [2019/03/27(水) 00:00:47.48 ID:sk2gWEk1.net]
>>794
x 結局Do LoopとOn Error Resume Nextで逃げるしかないっていう。
o 結局Do LoopとOn Error Resume Nextで逃げるしかないっていうことですね。
正しい日本語を使いたまえ

814 名前:デフォルトの名無しさん mailto:sage [2019/03/27(水) 00:54:24.99 ID:bUJXWn5A.net]
口語体が理解できないやつが正しい日本語とか

815 名前:デフォルトの名無しさん mailto:sage [2019/03/27(水) 06:30:58.48 ID:61Xepw/0.net]
アスペかしら…

816 名前:デフォルトの名無しさん mailto:sage [2019/03/27(水) 07:39:47.73 ID:qB5RyyD6.net]
では、教えてくれ。
正しい日本語の"正しい"とはなんのことだ。
先に言っておくが、国語辞典や義務教育は関係ないぞ。

817 名前:デフォルトの名無しさん mailto:sage [2019/03/27(水) 08:38:29.06 ID:oJzskUWb.net]
>>798
お前のようなノイズではないこと



818 名前:デフォルトの名無しさん mailto:sage [2019/03/27(水) 12:48:07.16 ID:Mdwmg5PN.net]
>>798
国語辞典や義務教育関係ないと言うのならば口語体でも問題ないと思うが…。
例えば力不足、役不足のように意味を間違えて使っていては当然正しい日本語ではないが、今回の様な場合では相手方に伝われば良いということにならないか。

819 名前:デフォルトの名無しさん mailto:sage [2019/03/28(木) 20:50:35.86 ID:GAoTTZZk.net]
関西弁は正しい日本語ではない

820 名前:デフォルトの名無しさん mailto:sage [2019/03/28(木) 20:59:08.44 ID:M/yCVQ4H.net]
正しい日本語とは

821 名前:デフォルトの名無しさん [2019/03/28(木) 21:53:50.06 ID:cIkPDI6N.net]
>>796
x 口語体が理解できないやつが正しい日本語とか
o 口語体が理解できないやつが正しい日本語とかどういうこと?

822 名前:デフォルトの名無しさん mailto:sage [2019/03/28(木) 23:24:25.12 ID:Q+Q3MpKo.net]
長いのでWithするかSetしましょう。

With 口語体が理解できないやつが正しい日本語
  とか = ×
  とかどういうこと? = 〇
End With

823 名前:デフォルトの名無しさん [2019/03/28(木) 23:39:02.51 ID:cIkPDI6N.net]
Sub CorrectJapanese()
Dim text As String
Dim inputText As String
text = "口語体が理解できないやつが正しい日本語とか"
inputText = InputBox("あなたの日本語は?")
If inputText = text Then
MsgBox "アホ"
ElseIf inputText = text & "どういうこと?" Then
MsgBox "そのとおり"
End If
End Sub

824 名前:デフォルトの名無しさん mailto:sage [2019/03/28(木) 23:57:12.09 ID:OmRArJOr.net]
日付フィルターを使うときにCriteriaに設定する値って、必ず一旦Double型に型変換したDate型データをもとにしてFormat変換しなきゃいけないのかな?
Date関数の戻り値をそのままFormat変換してもうまくフィルターがかからなくて危うくハマりかけたんだが、後学のために識者がいたら教えてほしい

825 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 00:17:35.48 ID:PdUuDb+g.net]
まともなレスには異論返せないのな

826 名前:デフォルトの名無しさん [2019/03/29(金) 00:47:46.11 ID:MmeaYZo8.net]
>>807
x まともなレスには異論返せないのな
o まともなレスには異論返せないのね

827 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 06:46:41.33 ID:YUbMxDIL.net]
>>804
ピリオド抜けてる



828 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 12:23:42.03 ID:Fu/JMZl+.net]
異論返せていないまともなレスとはどれ

829 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 12:35:07.47 ID:7DnII+1F.net]
>>810
この辺りじゃないか?
>>799
>>800

830 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 12:37:39.38 ID:FHKNInbw.net]
どうでも良いことで延々と論じるのは如何なものか。

831 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 18:52:59.03 ID:DRFZR9Lo.net]
>>809
シンタックスエラーになります

832 名前:デフォルトの名無しさん mailto:sage [2019/03/30(土) 09:25:26.20 ID:Fw0ogXHz.net]
VBAで実行時にシンタックスエラーが出るのはどういう場合だろう
デフォルト設定だと1行入力ごとに構文解析するし

833 名前:デフォルトの名無しさん mailto:sage [2019/03/30(土) 09:27:30.74 ID:uS2atdcl.net]
>>814
それ、1行ごとの構文解析だろ
For Next Do Loop If End If
のチェックまではしてないと思うぞ

834 名前:デフォルトの名無しさん mailto:sage [2019/03/30(土) 09:28:29.64 ID:uS2atdcl.net]
ああすまん。これってシンタックスエラーではないんだっけ
でもエラーになるよね

835 名前:デフォルトの名無しさん mailto:sage [2019/03/30(土) 09:41:55.36 ID:Fw0ogXHz.net]
Nextを書かなかった場合は
「コンパイル エラー:For に対応する Next がありません。」
だった

もしシンタックスエラーのエラーコード(変数Errの値)が存在すれば出る可能性があるってことだと思うけど、コードの一覧てどこにあるんだ?
検索してVBのは出るけどVBAのが見つからん

836 名前:デフォルトの名無しさん mailto:sage [2019/03/30(土) 09:49:53.73 ID:uS2atdcl.net]
シンタックスって言葉自体は構文規則だけど、コンパイルエラーって出るんだね

837 名前:デフォルトの名無しさん [2019/04/06(土) 00:50:26.14 ID:ocPEvB9Z.net]
ExcelVBAでListViewを参照設定で追加して
フォームに配置して使っているんですが、
別フォームからshowしてすでに項目をいくつか追加してある
ListViewのあるフォームを表示したときに
ListViewをアクティブ(そのままの状態から矢印キーで項目を選択できるようにする)
にすることは可能ですが?
例えば

Public Sub UserForm_Active()
With listview1
.ListItems(1).Select
.SetFocus
End With
End Sub

とした場合に、フォーカスは確かにListView1にあるのですが、
その状態では項目が矢印キーの上下で選択することができません。
ListView1.SetFocusではListView1全体にフォーカスはあるが
肝心の中身の項目にはフォーカスがない状態ということなのでしょうか?

なにかよい方法はありますでしょうか?



838 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 19:10:32.15 ID:nvpN9j7Q.net]
sendkeysで Alt↓までやっちゃうとか
あまりおすすめできる方法ではないが

839 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 00:26:59.66 ID:WKly27nG.net]
このスレは生きてますか

840 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 17:39:05.84 ID:VJZKP3mE.net]
一応生きてるでしょ。

841 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 13:15:01.20 ID:SsAAf7AE.net]
VBA勉強中のものです。

Setステートメントを勉強しているのですが、オブジェクト型についてお聞きしたいです。RangeオブジェクトとかWorksheetオブジェクトなど、いろんなサイトなど見ても使いどころがよくつかめてないです。

どんなときに使うのか、教えてもらえるとありがたいです。

842 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 16:53:41.17 ID:SsAAf7AE.net]
Excel VBA 質問スレで質問してみます。お邪魔しました m( _ _ )m

843 名前:デフォルトの名無しさん [2019/05/12(日) 02:32:02.86 ID:0u/cIV/f.net]
>>823
オブジェクトなら同じものを頻繁に扱うときにコーディングミスをしにくくなる。

毎回、名前でアクセスしていると、ちょっとしたことで、別のものを間違って扱う可能性が高まって、実行時エラーを発生させやすくなる。

定数化していれば防げるが、定数のスコープを大きくしないといけないので、定数の値を変えるときにあっちこっちを確認しながら、直すことになり面倒なことになりやすい。

844 名前:デフォルトの名無しさん mailto:sage [2019/05/13(月) 13:34:22.56 ID:p6Zrf1zY.net]
object型の初期状態はNothing
参照先が存在しない場合もNothing返るのがあってis式で判定できる
一方でvariantの初期状態はemptyなのでis式がエラーになる

845 名前:デフォルトの名無しさん [2019/05/13(月) 18:12:50.85 ID:/95lNMvT.net]
オブジェクトの値がNothingかどうかで判断するロジックはセンスがいいとは思えない。

846 名前:デフォルトの名無しさん mailto:sage [2019/05/13(月) 22:51:51.62 ID:RqskJpsp.net]
Typenameとか列挙定数とかポインタ関数の値で判定するのが良いわな

847 名前:デフォルトの名無しさん [2019/05/13(月) 23:46:53.76 ID:4/CDP/BQ.net]
自分で変数の値をコントロールしているのに、Nothingかどうかをあちこちで確認しているクソプログラマと1年前に仕事した。



848 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 08:31:35.00 ID:BLcva127.net]
>>827
ライブラリ側は何で判定すべきなんだ?
それともNothingを渡されたら挙動は未定義とするとか?

849 名前:デフォルトの名無しさん [2019/05/14(火) 11:18:55.94 ID:4FRIObo4.net]
>>830
そのライブラリは他人が作ったものなのか?自分が作ったものなのか?

850 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 11:29:20.25 ID:5X9vxJLP.net]
判定すべきものが、誰が作ったかによって変わる?

851 名前:デフォルトの名無しさん [2019/05/14(火) 12:37:11.77 ID:W+bs/bzK.net]
ライブラリに状態を持つプロパティがあればいい。

他人が作ったものを使うしかなく、オブジェクトがNothingかどうかでしか判断できないのなら、そうするしかない。

852 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 13:35:55.15 ID:UTGAJPws.net]
>>833
ライブラリ関数が引数として受け取ったオブジェクトをどうNullチェックするかの話だぞ?

853 名前:デフォルトの名無しさん [2019/05/14(火) 16:16:33.74 ID:E8REZJpG.net]
いきなりライブラリと言われても何のことやらわからない。

854 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 17:30:53.68 ID:UTGAJPws.net]
>>835
>>827 が「オブジェクトの値がNothingかどうかで判断するロジック」って言ってるじゃん。
ある関数がオブジェクトを受け取ったときの判断方法の話だと思うんだけど、
自分はライブラリ作者なのでその場合どうするのがいいのか気になった。

855 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 21:45:48.80 ID:s0Vi/y5R.net]
普通にエラーでブレイクすればいいじゃん

856 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 22:22:18.25 ID:jcYCvcdA.net]
>>837
エラーとは限らないけど変数の状態に応じて処理を分けたいと言うのはある。
空のオブジェクトに対してはまた空を返すとかね。
>>829の言ってることはわかるんだけど、>>827>>828の主張がわからん。
Nothing判定はシンプルだけどTypeNameやenumだともっと分岐のパターンが増えちゃうじゃん。

857 名前:デフォルトの名無しさん [2019/05/14(火) 23:23:54.78 ID:+OBjJPst.net]
>>836
世の中、変なやつがいて、オブジェクト変数に値をセットして、何も変わるはずがないのに、直後にオブジェクト変数の値がNothingかどうか判定するコードを書くやつがいる。



858 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 23:30:59.65 ID:KmX6ljlC.net]
代入が成功したかどうか確認するテクニックも存在するから、そういう分野からの転職かな?
具体的には、コンパイラの型チェックを使った裏技だったり、ハードウェアの故障チェックなんかで使われる

859 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 00:37:47.48 ID:yOOg6UjC.net]
直後であってもサブルーチンに分かれてるなら
入力情報のチェックを行うのは普通のこと

860 名前:デフォルトの名無しさん [2019/05/15(水) 02:24:21.58 ID:MwugOkQt.net]
なんか例のCプログラマがしつこいけど、いまどき関係ない別プロセスがメモリ上の値を書き換えたりするミスは、OSレベルでもCPUレベルでもあるので、持論を批判されていると思って反論しなくていいよ。

ここは漠然としたVBAのスレッドだから、見ているひとにはあなたの言うことは難しくて理解できないと思うよ。

スルー力がないのか、寂しくてかまってほしいのか知らないけど、要はクソコードを書くなと言ってるだけだ。

861 名前:デフォルトの名無しさん [2019/05/15(水) 02:28:07.88 ID:MwugOkQt.net]
なんでVBAスレで組み込み系のショボいハードウェアでのプログラミングを語っているのか?

ハードウェア、OS、ミドルウェア、プログラミング言語によって考え方やどこまで想定するのかは全然、違うからいっしょくたにしないでもらいたい。

862 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 02:29:01.28 ID:O3OiMSIx.net]
一般ユーザー権限のアプリで別プロセスのメモリにアクセスできたのは、平成どころか昭和時代の話ですよ、おじいちゃん
希にOSやCPUのバグ騒ぎが起きますが、そんなのは例外中の例外なんで普通は気にしなくていいことです

863 名前:デフォルトの名無しさん [2019/05/15(水) 02:37:35.16 ID:MwugOkQt.net]
Windows 95、98、98SE、MeがいつのOSかもわからないのか

864 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 05:12:46.46 ID:TahQLJDH.net]
そこまでわかってるのに、タチの悪いやつだな

865 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 16:00:34.96 ID:D3RbfE7K.net]
イベント用インスタンスはPublicでやるの?

866 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 20:12:16.23 ID:XVltvZnu.net]
せっかくのイベントなのにPrivateにしたら星飛雄馬のクリスマスパーティーみたいになるじゃん

867 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 20:14:51.37 ID:RIeke8Yt.net]
>>848
座蒲団3枚あげる



868 名前:デフォルトの名無しさん [2019/05/15(水) 20:49:39.00 ID:WHH9UP0v.net]
何か面白いこと言った?
全然わからない。
興味あるからなぜ面白いか教えて?

869 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 02:08:04.88 ID:Ab5DOH6n.net]
>>850
ニコ動
https://www.nicovideo.jp/watch/sm9033179

870 名前:デフォルトの名無しさん [2019/05/16(木) 14:30:12.55 ID:wWtnEH3A.net]
コード書く画面を
背景は黒に、文字は白に、する方法を教えれ

871 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 17:24:09.37 ID:EX4VaMcQ.net]
>>852
ダークテーマと天に向かって3回唱える

872 名前:デフォルトの名無しさん [2019/05/16(木) 17:37:55.97 ID:wWtnEH3A.net]
>>853
知っておる
mevius.5ch.net/test/read.cgi/tech/1556203263/261-
下がってよいぞ

873 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 22:41:23.89 ID:ufKYoT27.net]
Wordで文字置換をしたいのですが、特定のフォントの文字列を検索して、文字列は変えずにフォントだけ変えたいです。半角を全角にしたいのですが可能でしょうか。ヒントだけでも教えていただけると有り難いです。

874 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 23:01:54.16 ID:ubNtK04k.net]
>>855
できる
任意のRangeのCharactersのフォントを一字ずつ調べて、探しているフォントが適用されている文字が見つかったらその文字のフォントを修正すればいい
半角から全角に変換するにはStrConv関数を使用し、第2引数conversionには列挙定数のvbWideを指定する

875 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 23:16:33.41 ID:fmz+6NIG.net]
wordの標準機能で半角全角変換あったような

876 名前:デフォルトの名無しさん mailto:sage [2019/05/23(木) 23:29:43.67 ID:ufKYoT27.net]
>>856
ありがとうございます!
やってみます。

>>857
上手くいかなかったと思います。。

877 名前:859 mailto:sage [2019/05/28(火) 16:00:47.95 ID:JWvhlEsx.net]
Findを利用したコードについて教えて下さい。

書籍、サイトで掲載されていたコードを利用し、少し変えたものです。
Findメソッドを使ってC列の”たろう”を検索します。
探し出したら、A〜C列の文字列をE列に結果を返すように作り替えてみましたが、結果がE1〜G1に上書きされてしまいます。
Cells(Rows,count を理解しきれていない、11行目のCells(i,”E”)の部分も理解していないと感じます。
どのように違うのか、ご指導お願いします。


ワークシートはこんなかんじ E列からG列は実行後の結果をイメージしたものです
  A  B   C   D  E    F  G
1 日付 売上 担当者    000  AAA たろう
2 000 AAA たろう     333  DDD たろう
3 111 BBB はなこ
4 222 CCC たかし
5 333 DDD たろう
6 444 EEE はなこ
7 555 FFF くみこ



878 名前:859 mailto:sage [2019/05/28(火) 16:01:28.69 ID:JWvhlEsx.net]
859の続き

Sub Find()
Dim temp As Range, tempAddress As String, i As Long

With Range("A1").CurrentRegion.Resize(, 1).Offset(, 2)
Set temp = .Find(what:=“たろう”)
If Not temp Is Nothing Then
tempAddress = temp.Address
i = Cells(Rows.Count, "E").End(xlUp).Row

Do
temp.Offset(columnoffset:=-2).Resize(, 3).copy Cells(i, "E")
Set temp = .FindNext(temp)
Loop While temp.Address <> tempAddress
End If
End With
End Sub

Sub copy()
Range("A:G").Clear
Worksheets("template").Range("A1:C7").copy Destination:=Worksheets("Sheet1").Range("A1")
End Sub

879 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 16:38:34.40 ID:Z4r31Ymp.net]
>>860
i=i+1 が抜けてるだけじゃね?

880 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 16:40:41.12 ID:Z4r31Ymp.net]
>>861
それと、行や列用の変数として r c 使ってもええんやで

881 名前:859 mailto:sage [2019/05/28(火) 17:30:10.75 ID:xKlK3b52.net]
>>861
ファッ!それかも!
マジでありがとうです!
何かあったらまた聞きます
ホントありがとう、頭いい人!

882 名前:デフォルトの名無しさん mailto:sage [2019/05/28(火) 18:33:24.92 ID:1J9FOJWe.net]
初心者です。
Wordのユーザーフォームを作りたいのですがExcelの書籍しかなくて詰みました。
Excelのセル番地『A1』に相当するのが『ActiveDocument .tables (1) .cell (1.1)』というところまで突き止めて、
とりあえずテキストボックスに打ち込んだ文字列をセルに転記するところまではできたのですが、それ以上のことができません。
例えば繰り返し同じフォームを使う前提で、古いデータを削除したい時、Excelならば
『Range("A1") .CleanContents』で済むっぽい(うろ覚え)ですが
これをActiveDocumentで再現するにはどうすればよいでしょうか。

まだ文法など全く理解できていませんが、素人目に『Range(”ActiveDocument .tables (1) .cell (1.1)”).Select .CleanContents』
などと書いてしまいたい訳です(当然、動きませんでした)
加えて、WordVBAを中心にお勧めの書籍などありましたら教えていただきたいです。
今の書籍は痒いところに手が届かず…

883 名前:859 mailto:sage [2019/05/28(火) 19:44:38.82 ID:xKlK3b52.net]
>>861
set temp = .findnext(temp)の下に
i=i+1を入れた所、できました。
本当にありがとう!助かりました(T^T)

884 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 00:12:19.46 ID:S0wmSPvZ.net]
>>864
定番は「最速攻略 Word マクロ / VBA徹底入門」
Word VBAの書籍やWEBサイトは選択肢が圧倒的に少ないから、基本がわかったらVBEのオブジェクトブラウザやネットでMSDNを見た方が確実

885 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 09:29:45.93 ID:YAhbpcsl.net]
学校でVBAを勉強した方はどんな

886 名前:Q考で勉強したんでしょうか? []
[ここ壊れてます]

887 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 09:30:35.46 ID:YAhbpcsl.net]
×参考
◯参考書



888 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 09:32:43.10 ID:YAhbpcsl.net]
書籍の名前聞いてみたい

889 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 15:12:11.08 ID:V/L1IaNJ.net]
>>Wordのユーザーフォーム
必要性が今一分からん

890 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 18:04:51.34 ID:2aR1E9YD.net]
Wordは機能拡張に凝り出すと面白いよ

891 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 18:38:59.73 ID:3bWSKYGB.net]
>>870
いろんなソースで、色つけたり太字にしたり、用紙指定や段組みして印刷させる

炎上プロジェクトに突撃するのに必須

892 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 18:47:13.10 ID:2aR1E9YD.net]
>>864
'選択範囲内にあるテーブルの一行目以外をクリアします。
Sub clearSelectedTableData()
If Word.Application.Selection.Tables.Count = 0 Then
'MsgBox "Select Any Table!"
Exit Sub
End If
Dim t As Word.Table
For Each t In Word.Application.Selection.Tables
Dim r As Long, c As Long
For r = 2 To t.Rows.Count
For c = 1 To t.Columns.Count
t.Cell(r, c).Range.Text = ""
Next c
Next r
Next t
End Sub

893 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 19:32:14.84 ID:2aR1E9YD.net]
こっちのがスマートだった
'選択範囲内にあるテーブルの一行目以外をクリアします。
Sub clearSelectedTableData()
If Word.Application.Selection.Tables.Count = 0 Then
'MsgBox "Select Any Table!"
Exit Sub
End If
Dim t As Word.Table
For Each t In Word.Application.Selection.Tables
If t.Rows.Count > 2 Then
Dim r As Long
For r = 2 To t.Rows.Count
t.Rows(r).Range.Delete
Next r
End If
Next t
End Sub

894 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 19:50:35.91 ID:2aR1E9YD.net]
もし文字編集でcell()下位の.Rangeが省略されてるのを知らないと
cell.Range.Deleteの文字削除とcell.Deleteのセル削除が
使い分けができないので注意

895 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 22:47:58.04 ID:JR52NV0g.net]
>>871
そうだろうけど、
他のOfficeでも出来るんじゃないの?
拡張って参照設定の事でしょ?

>>874
マジかよWord Tableって・・。
ExcelでSQLが使えたり、Officeは割と何でもありだとは思っていたが・・。

896 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 23:32:10.68 ID:2aR1E9YD.net]
>>876
リボンやクイックアクセスツールバーとかで増やすほうね>機能拡張

897 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 00:15:43.14 ID:P50R/Vqw.net]
NothingとNullとEmptyの違いがわからない
MSはナンセンス、はっきりわかんだね



898 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 00:35:41.84 ID:/aDGaFpI.net]
EmptyはVariant型の初期状態(何も入ってない)
セルの初期状態でもある
確認方法
新規ワークシートに対して、イミディエイトウィンドウで
Print TypeName(Cells(1,1).Value)
とすると
Empty
と表示される

Nothingはオブジェクト型変数にオブジェクトが代入されていない(結びつけられていない)状態

NullはExcelだと出番がないと思っていい
主にAccessでデータを扱う時にNullが必要な場面が出てくる

899 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 01:16:13.09 ID:gZfVve3x.net]
複数セルのRangeからプロパティとってくるとき不一致だとNullになるくらいやな

900 名前:デフォルトの名無しさん mailto:sage [2019/06/02(日) 23:52:18.62 ID:I/vPFDmN.net]
ユーザーフォームの、複数のテキストボックス、
例えばオブジェクト名をtb1、tb2とかにしてループ文に組み込むということはできますか?
オブジェクト変数というのが関係しそうな気がするんですが、
テキストを読んでも理解できない…

901 名前:デフォルトの名無しさん mailto:sage [2019/06/02(日) 23:56:26.76 ID:56udfPFB.net]
>>881
すべてのテキストボックスでループ。
目的のテキストボックス群で名前を元に絞り込みすりゃ良いんじゃね。

902 名前:デフォルトの名無しさん mailto:sage [2019/06/03(月) 02:05:13.53 ID:OjX7Po3D.net]
普通はテキストボックスのTagプロバティに区別できるキーワード入れといて
For eachでUserform.controlsやると思う

903 名前:デフォルトの名無しさん mailto:sage [2019/06/03(月) 08:31:11.52 ID:mpVNxBbp.net]
>>881
controls(”tb” & i)

904 名前:デフォルトの名無しさん mailto:sage [2019/06/03(月) 13:44:44.83 ID:DCISZKmM.net]
>>881
オブジェクトの配列作って、という事だと思うけど
使うとしたらオブジェクト参照を保持したまま色々したい時ぐらいかも
値の参照とセットだけなら皆さん挙げられているcontrolsでやりますね

905 名前:デフォルトの名無しさん [2019/06/08(土) 00:31:30.90 ID:ycKO1KOa.net]
vba スタンダード 、accessのおすすめの問題集ってやっぱり公式テキストでしょうか。

906 名前:デフォルトの名無しさん mailto:sage [2019/06/08(土) 11:47:13.10 ID:pWKWNjKi.net]
エクセル Cells(1,1)
ワード   Cell(1,1)
        ↑
      は? 何でワードにはsが無い?

907 名前:デフォルトの名無しさん mailto:sage [2019/06/08(土) 16:19:13.22 ID:pA8BerVC.net]
>>886
先月に出題範囲かわったし公式でしょ



908 名前:デフォルトの名無しさん mailto:sage [2019/06/08(土) 16:27:53.67 ID:pA8BerVC.net]
>>887
Word.Selection.CellsとかRow.Cellsとかあるで
Tableには.Cell(1,1)しかないがな
ちなCellsはxy指定できんがCellはxy指定必須や
エクセルのプロパティのほうが異常なんやで

909 名前:デフォルトの名無しさん [2019/06/12(水) 20:44:31.77 ID:WUwNpP1f.net]
新垣結衣 AVデビュー
https://www.xvideos.com/video48369883/_ai_

910 名前:デフォルトの名無しさん [2019/06/12(水) 21:19:56.07 ID:Hop9ON+a.net]
vba エキスパート は、excel ベーシック以外は公式テキストまだだから受験は待ったほうがいいですよね。

911 名前:デフォルトの名無しさん [2019/06/19(水) 04:56:48.65 ID:tVNS+22r.net]
【出資】松本卓朗 人工知能詐欺【注意】
https://rio2016.5ch.net/test/read.cgi/rikei/1560859403/

912 名前:デフォルトの名無しさん mailto:sage [2019/06/24(月) 19:31:10.71 ID:XS1zoxjN.net]
以前word VBAの質問をした者ですが、その節はありがとうございました。
お陰様で処女作のユーザーフォームが完成しかかっているのですが、最終問題に難儀しています。
やりたい事:「保存」ボタンを押す→ActiveDocumentと同じ場所に「記録表」というフォルダを作成し、
その中に「"氏名”」というファイルを生成する。既に「記録表」のフォルダがあればフォルダは作成せず、
そちらにファイルを生成する。
なお、不特定多数のユーザーが使う前提です(保存場所を手打ちしたらユーザー名で詰む)

四苦八苦しましたが、ひとまず確認用にdesktopに生成しようとしてなんかユーザーフォルダの滅っ茶根深い場所に生成されたり、
推測で打ってみたメソッドが全く機能しなかったり(フォルダの有無を確認するようなのって何だろう)
なんというか、Excelのfxボタンみたいにメソッドの内容を教えてくれるやつ、ないんですかね…
ちなみに職場のPCはスタンドアロンでヘルプに繋がらず、自宅PCにはOfficeが入ってないです。

913 名前:デフォルトの名無しさん mailto:sage [2019/06/24(月) 22:54:40.46 ID:klKakRL3.net]
>>893
オフラインヘルプインストールできなかったっけ… 見てみて

F2キーでオブジェクトブラウザが表示される
これ無しで開発なんてやってられない

914 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 05:52:40.82 ID:A+zOKxp7.net]
今オフラインのヘルプって提供されてないんじゃないのか?

915 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 08:17:29.97 ID:uunD1dKc.net]
>>893
デスクトップはエクスプローラーの左のとこにカタカナで出てるとこと同じやで
深いとこにできても、そちらから近道すればよろし

916 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 08:27:47.11 ID:uunD1dKc.net]
>>893
〉フォルダの有無確認
昔は Dir()だったけど、今は filesystemobjectかな。
参照設定も必要なので使い方も含めてggッテください
folderexists()

917 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 10:33:29.10 ID:aRzPCUod.net]
公式オフラインヘルプがあったのは2013だな





918 名前:2016もオフライン版があるけど英語
https://github.com/OfficeDev/VBA-content/

基本的な機能は2013からあんまり変わってないから、2013用のヘルプを入れてしまうという手もある
使い勝手は悪いけど、いつでも参照できるという利点はあるから
[]
[ここ壊れてます]

919 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 09:21:12.11 ID:IYAeNPRu.net]
Activedocument.Pathで所在フォルダのパスが出せる
これとフォルダ名とファイル名繋げた文字列つくればSaveAs2の引数にできる

920 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 18:32:58.67 ID:pdVAutd4.net]
質問です。excel2016の並び替え機能で
漢字、かな(あ〜ん)、アルファベット(a〜z)で並べ替えて漢字の中でも「本店」を最上位とできませんかね?

降順だと上記並びなのですが、かな(ん→あ)、アルファベット(z→a)になります。
Custumorder に「本店」を入力すると漢字中で1番下になります。

よろしくお願いします

921 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 20:26:59.08 ID:JKpFRzRw.net]
>>900
本店の前にスペース入れる

922 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 21:08:13.27 ID:pdVAutd4.net]
>>901
ありがとうございます。
やってみます。

923 名前:デフォルトの名無しさん mailto:sage [2019/07/04(木) 12:19:45.93 ID:Siuy47lc.net]
Wordの表で、
ActiveDocument.Tables(2).Select
みたいに選択したいのですが、どれだけ表を分割しても、
全ての表が  Tables(1) という扱いなようでエラーになります。
ひとつ前に似たようなものを組んだ時には問題なくTables(2)になりましたが、
それと構文上は全く違いはありません。
どうしたら Tables(2)という扱いになるのでしょうか。

924 名前:デフォルトの名無しさん mailto:sage [2019/07/04(木) 22:43:55.95 ID:lDcVSkIh.net]
ユーザーフォーム内のコンボボックスにUSBの中にある画像一覧というフォルダ内の全ての画像名を表示したいのですがうまくいきません。
どのように変更すればよいか教えていただけませんか?
Private Sub UserForm1_load()
Dim myList As String
Dim myPath As String
Dim iName As String

myPath = "D:/画像一覧/*jpeg"

fName = Dir(myPath & "*.jpeg")
Do While iName <> ""
If myList <> "" Then
myList = myList & " " & iName
Else
myList = iName
End If
iName = Dir
Loop

If myList = "" Then Exit Sub
myList = Split(myList)

ComboBox1.List = myList
End Sub

925 名前:デフォルトの名無しさん mailto:sage [2019/07/05(金) 02:42:43.50 ID:grV1bh4s.net]
取得するのが D:/画像一覧/*jpeg*.jpeg になってるとか
fName は iName の間違いじゃないのかとか
myList は String なのにSplitした後のものを代入してるとか

926 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 12:30:25.64 ID:z73aGQye.net]
>>905
返信遅れて大変申し訳ありません
3つのご指摘直して反映できました。
ありがとうございました。

927 名前:デフォルトの名無しさん [2019/07/08(月) 13:46:50.21 ID:81aCmz3kf]
以下のようにWorksheet_Changeで加算して繰り返す内容で作りたいんですが、
コードまとめられませんかね?


Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address

Case "$E$3"
Range("$I$3").Value = Date
Case "$E$4"
Range("$I$4").Value = Date
Case "$E$5"
Range("$I$5").Value = Date




End Select
End Sub



928 名前:デフォルトの名無しさん mailto:sage [2019/07/25(木) 16:22:05.73 ID:eKMV/4VB.net]
ExcelVBAのユーザーフォーム上で、PDFを表示、操作をしたいです。
ですが、ユーザーフォームにコントロールを追加しようとすると、
「要素が見つかりません」とダイアログが表示され出来ません。
どなたか解決策をご存じの方がいましたら、教えていただけますでしょうか。。

Acrobat pro DCはインストールしてあり、ExcelはOffice365を最新の状態で使用してます。

929 名前:デフォルトの名無しさん mailto:sage [2019/07/25(木) 18:51:11.10 ID:HFVXfXT2.net]
>>908
EXCELは専用スレがあるので、そちらへどうぞ

930 名前:デフォルトの名無しさん mailto:sage [2019/07/26(金) 10:59:16.22 ID:nW8IFIW6.net]
>>909
ありがとうございます。
そちらに書いてみます。

931 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 15:00:22.98 ID:Jc+eFMLQ.net]
ここで質問していいかわからないんですが、違ったら誘導していただけると助かります。

メッセージボックスを最前面にするために以下のコードを利用したいのですが、呼び出し元の下から3行目のvbOKOnly を vbYesNo に替えた後、選択ボタンを取得する方法がわかりません。
どのようなコードを足したらいいかご教示いただけないでしょうか。

【呼び出し元】
Option Explicit
Dim WSHObj
Dim Args
Set WSHobj = WScript.CreateObject("WScript.Shell")
Args = "cscript ""C:\Program Files\PPX\script\WSHPopUP.vbs""" _
& " ""出力メッセージ""" _
& " 0" _
& " ""VBS名称""" _
& " " & vbOKOnly ←vbYesNoに替える
WSHObj.Run Args,0,true
Set WSHobj = Nothing

【WSHPopUP.vbs】
Option Explicit
Dim Arg
Dim WSHObj
Set WSHobj = WScript.CreateObject("WScript.Shell")
Set Arg = WScript.Arguments
WSHObj.Popup Arg(0),Arg(1),Arg(2),Arg(3)
Set WSHobj = Nothing

よろしくお願いします。

932 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 19:26:49.04 ID:uFuQVnLY.net]
【呼び出し元】
Option Explicit
Dim WSHObj
Dim Args
Set WSHobj = WScript.CreateObject("WScript.Shell")
Args = "cscript ""C:\Program Files\PPX\script\WSHPopUP.vbs""" _
& " ""出力メッセージ""" _
& " 0" _
& " ""VBS名称""" _
& " " & vbYesNo
Dim hoge '受け取り用に追加
hoge = WSHObj.Run(Args,0,true) 'この変数hogeにvbYes=6かvbNo=7が入る。
'何か処理を書く
Set WSHobj = Nothing

【WSHPopUP.vbs】
Option Explicit
Dim Arg
Dim WSHObj
Set WSHobj = WScript.CreateObject("WScript.Shell")
Set Arg = WScript.Arguments
Dim fuga '戻り値用に追加
fuga = WSHObj.Popup Arg(0),Arg(1),Arg(2),Arg(3) 'popupの戻り値を取得
WSHObj.Quit fuga '呼び出し元に終了コードとして返す
Set WSHobj = Nothing

933 名前:デフォルトの名無しさん [2019/08/14(水) 19:27:35.96 ID:uFuQVnLY.net]
他にExecを使う方法もある

934 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 20:05:03.77 ID:6C5bzX4k.net]
vbDefaultButton1 とか、そういうのじゃなくて?

935 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 00:01:28.86 ID:GUoAoBO9.net]
>>912
ありがとうございます!
試してみます!

>>914
すみません、vbDefaultButton1 がわかりません

936 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 11:35:25.09 ID:vco+QnrA.net]
>>912
>911,>915です。
教えていただいたコードを試してみたのですが、
‘何か処理を書く
のところに
MsgBox hoge
と入れたのですが、「はい」「いいえ」どちらの場合も 0 が返されます。
どうしたらいいでしょうか

937 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 13:41:00.72 ID:2LlAcZB1.net]
???
VBAなの?
VBSなの?
MsgBox使えるのに、何でWscript使ってんの?



938 名前:デフォルトの名無しさん [2019/08/16(金) 13:48:44.09 ID:mZqFzvyq.net]
朗報
【アプデ/10】 2019年8月14日のWindowsUpdate後、VB関連が死亡。Windows10全バージョンにて
https://asahi.5ch.net/test/read.cgi/newsplus/1565930238/

939 名前:デフォルトの名無しさん [2019/08/16(金) 14:13:30.60 ID:WTD6eyC3.net]
>>916
【WSHPopUP.vbs】 のWSHObj.Quit fuga は間違い。エラー出してる。
Wscript.Quit fuga が正しい

940 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 10:24:33.34 ID:ELmh1Bgt.net]
>>919
返信遅くなってすみません。

レスの通りに修正し、
さらに
fuga = WSHObj.Popup Arg(0),Arg(1),Arg(2),Arg(3) 'popupの戻り値を取得

fuga = WSHObj.Popup(Arg(0),Arg(1),Arg(2),Arg(3)) 'popupの戻り値を取得
に変更し、成功しました。

たいへん助かりました。
ありがとうございました。

941 名前:デフォルトの名無しさん mailto:sage [2019/09/25(水) 10:50:56.65 ID:L8CrQHgr.net]
WordのアクティブXコントロールのテキストボックスなのですが
BackStyleを0設定すると背景色は消えるのですが
デザインモードを解除すると背景色が出てしまいます

これはバグでしょうか

942 名前:デフォルトの名無しさん [2019/10/05(土) 18:37:18.60 ID:t92B7IO1M]
winAPIのAddClipboardFormatListenerをVBAで使う方法教えてください。
Private Declare PtrSafe Function AddClipboardFormatListener Lib "user32.dll" (ByVal hWnd As LongPtr) As Long
Sub test3()
AddClipboardFormatListener (hWnd)
End Sub
として実行してもなにも起きません。

943 名前:デフォルトの名無しさん [2019/11/05(火) 18:33:26.09 ID:CrKvYzfV.net]
DataObjectオブジェクトについて https://chiebukuro.yahoo.co.jp/

VSI

944 名前:デフォルトの名無しさん [2019/11/05(火) 18:35:53.47 ID:CrKvYzfV.net]
DataObjectオブジェクトについて https://chiebukuro.yahoo.co.jp/

FQB

945 名前:デフォルトの名無しさん [2019/11/06(水) 06:26:58.33 ID:jiZZUv+M.net]
CInt 関数 VBA vba-auto.com/cint_function_vba/

NQ2

946 名前:デフォルトの名無しさん [2019/11/06(水) 06:26:59.50 ID:jiZZUv+M.net]
CInt 関数 VBA vba-auto.com/cint_function_vba/

NQ2

947 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 09:09:00.43 ID:IRESAa/B.net]
Exchange / Outtlook VBAの質問です
初歩的な質問で申し訳ありませんが、お知恵を拝借できないでしょうか

任意の名前を持つ配布リストや連絡先グループに属するExchangeユーザーのSMTPアドレスの一覧を取得するにはどうしたら良いのでしょうか

配布リストや連絡先グループをExchange ユーザーとして取得するところまでは出来ているのですが、そこから先がうまくいきません

なお配布リスト、連絡先グループいずれも個人ユーザーのみが登録されている前提なので、再帰によるメンバー取得は不要な状況です



948 名前:デフォルトの名無しさん mailto:sage [2019/12/31(火) 13:22:12.18 ID:CEriAQ2K.net]
エスパー的にはexchangeユーザーのユーザー一覧と配布リストのユーザーの
名前を比較すればいいんじゃね

949 名前:デフォルトの名無しさん mailto:sage [2020/04/20(月) 00:19:17.36 ID:DXvjb/RZ.net]
3日がかりの捜索ww あきらめないのな

950 名前:デフォルトの名無しさん mailto:sage [2020/05/10(日) 01:11:39 ID:DSeO3ORc.net]
3日どころじゃないぞ

951 名前:デフォルトの名無しさん mailto:sage [2020/05/25(月) 10:28:15.88 ID:vLFHqXr3.net]
>>927

これについて何か解決方法ありましたか?私も配布グループ取得で難儀しております。

952 名前:デフォルトの名無しさん mailto:sage [2020/05/25(月) 12:24:29 ID:palYJx03.net]
半年放置で読むかね

953 名前:デフォルトの名無しさん mailto:sage [2020/06/10(水) 10:39:28 ID:vabPclBn.net]
>>927>>931って同一人物だろどうせ

954 名前:デフォルトの名無しさん [2020/06/27(土) 08:55:28.74 ID:9qJBLgyD.net]
Aex

955 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 16:37:07.95 ID:TjDVHLrR.net]
VBAの質問スレで質問するのはなぜ馬鹿ばっかりなのですか?

956 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 16:43:50.13 ID:CiV3+vm0.net]
>>935
このスレのレベルを知ってる普通以上の人はここを頼ったりはしないから

957 名前:デフォルトの名無しさん mailto:sage [2020/07/11(土) 22:25:50.10 ID:R8+8lu0C.net]
頼むからVBAでWin32 APIを呼び出すのはやめてくれ
そこまで要求するなら包括的な自作DLLを作ればよいと



958 名前:デフォルトの名無しさん mailto:sage [2020/07/12(日) 04:44:26.92 ID:+vVO/8n9.net]
>>937
なんでやめてほしいの?

959 名前:デフォルトの名無しさん mailto:sage [2020/07/12(日) 07:53:31.55 ID:tbEOHCQG.net]
ものぐさが使うのがVBAなのに
いちいちDLL化なんてめんどくせえ

960 名前:デフォルトの名無しさん mailto:sage [2020/07/12(日) 10:51:54.06 ID:03QLQuvk.net]
>>938
Declare文が多すぎてコードが見づらい

961 名前:デフォルトの名無しさん mailto:sage [2020/07/12(日) 11:07:05.40 ID:4WTYr4qc.net]
見なきゃいいだろ

962 名前:デフォルトの名無しさん mailto:sage [2020/07/12(日) 14:43:36.83 ID:HEMY1mlG.net]
Win32API使える奴がDeclare文読むの?
そりゃ、間違ってるとかおかしなのも中にゃあるけど、普通そんなとこ見ないだろ。

963 名前:デフォルトの名無しさん [2020/07/14(火) 21:09:03.79 ID:66utiKuE.net]
質問スレにも書き込んだのですが二つのieを起動して2つ目のieでpdfを開いて名前をつけて保存したいのですがexecwbを行うと一つ目のieのhtmlが選択されてしまいます。どうかやり方を教えてください。よろしくお願いします。getIEはシェル取得ファンクションです。

Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.navigate "yahoo.jp

Dim ie2 As InternetExplorer

Set ie2 = CreateObject("InternetExplorer.Application")


ie2.Visible = True

ie2.Navigate2 "C:\\Desktop\test.pdf", 1



Set ie2 = getIE("test")

Dim test As String


test = "c:\test\test.pdf"


ie2.ExecWB OLECMDID_SAVEAS, OLECMDEXECOPT_DONTPROMPTUSER, test

End Sub

964 名前:デフォルトの名無しさん [2020/07/14(火) 21:45:01.80 ID:euO1Ygvg.net]
初心者です。どうかお力添えをよろしくお願いします。

965 名前:デフォルトの名無しさん [2020/07/14(火) 22:53:58 ID:euO1Ygvg.net]
すいません 自己解決しました。単純なスペルミスでした

966 名前:デフォルトの名無しさん mailto:sage [2020/08/03(月) 07:54:11.09 ID:4AChPi7X.net]
製品番号のフォルダ検索して中のPDFファイルを開くようなマクロ書いてるんだけど
先日Officeのアップデートしたら、件のマクロがしばらく応答なしになって
悪意のあるマクロ云々とか言われてExcel強制終了になった

それ以後そのマクロは激遅に
ブックのファイル名変えたりマクロの関数名変えたりするとしばらくは元の速度に戻るが
1日位経つとまた遅くなる

調べてみたら、VBScript.RegExpのExecuteメソッドが10秒位かかるようになってる
通常は30msで終わるような代物がだ

どうもShellやRunで一度に多数のPDFファイルを開いているのがお気に召さなかったらしく
ファイル名や関数名でアンチウィルスのブラックリストに載る?
そのあとはそれっぽい名前のメソッドが標的になり遅くなるような感じ

こういうの経験した人いる?

967 名前:デフォルトの名無しさん mailto:sage [2020/08/03(月) 12:15:10.36 ID:wycAObPT.net]
アンチウィルスソフトとかいうウィルスを捨てろ



968 名前:デフォルトの名無しさん mailto:sage [2020/08/04(火) 17:10:57 ID:FjnHeWDC.net]
会社のPCじゃなければそれもありだが…

paloalto trapsとかいう奴
毎回反応する訳じゃないのが嫌だし
編集中のデータも問答無用でごっそり強制終了しやがるふざけんな

969 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 03:07:47.57 ID:EWWIYLqc.net]
除外指定すればエエやん

970 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 09:06:26.86 ID:FS19WAoY.net]
>VBScript.RegExpのExecuteが10秒

>ShellやRunで一度に多数のPDFファイルを開いている
の関連がわからんね

この二つは分けて原因を探るべきじゃ?

971 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 09:37:11 ID:FS19WAoY.net]
マクロ付ファイルでPDF開かせるてのは相当に怪しいと捉えられる可能性は高いね
セキュリティ変更や除外設定なんてのは出来ればしたくないだろうし引っかからないような対策があればいいがな

ShellやRunでPDF開くんじゃなくExcelもしくはWordに取り込ませるようにすると引っ掛からないかもという気がしなくもない

972 名前:デフォルトの名無しさん mailto:sage [2020/08/06(木) 06:47:20 ID:SEE4FkRy.net]
VBAから直接PDFを開くんではなく
バッチファイルを書き出し実行することで反応の確率は減ったが
アンチウイルスが反応しやすい型番とかあってよくわからん

正規表現のexecuteメソッドは「それっぽい」名前のメソッドだろ?
これがアンチウイルスが反応したときに動作してた関数から呼ばれた時だけ遅くなるんだよ
同じブック中の他の関数から呼ばれた時は高速のままだ

dir関数でフォルダ内部のファイル名取得して正規表現検索してる時だけアホみたいに遅くなる時がある

973 名前:デフォルトの名無しさん [2020/09/01(火) 22:25:39.71 ID:zpaWCruh.net]
VBA開発を頼まれた いくら位金額を提示したら良いか誰か教えてほしい

内容は不動在庫を15店舗くらいあグループ店の売り上げデータから引取先の候補を検索するシステム
商品のバーコードから行き先候補を検索する予定。


この内容ってアウトソーシングするといくら位?

974 名前:デフォルトの名無しさん mailto:sage [2020/09/01(火) 22:33:35.56 ID:l37i0zd6.net]
50円

975 名前:デフォルトの名無しさん mailto:sage [2020/09/02(水) 00:25:45.48 ID:aLOgXzIZ.net]
余裕みて1人週

976 名前:デフォルトの名無しさん mailto:sage [2020/09/02(水) 07:41:48.93 ID:9bMNhGbM.net]
>>953
マジレスするとVBAは安いので1人月50ぐらいかな。

内容の詳細が分からないが、大して難しいとは思えないので。

どんなに簡単でも50以下は有り得ない。

977 名前:デフォルトの名無しさん mailto:sage [2020/09/02(水) 12:23:19.05 ID:IJ4By44m.net]
>>953
人によるだろうな
安く提示すると未経験者とかがくるぞ



978 名前:デフォルトの名無しさん [2020/09/04(金) 13:35:21.25 ID:YrY1uJ8P.net]
皆さま回答ありがとうございました!

979 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 14:34:31.84 ID:NQbTfPgu.net]
>>946
遅レスだけど

速度が遅い件は経験ありますよ
うちの環境で調べたらSYMANTECのエンドポイントは大丈夫で、MSのディフェンダーだと遅かった
Win10のバージョンも影響したかもしれないけど、現行サポート対象バージョンは、ディフェンダーだとすべて遅い
会社のPCなんでActiveDirectory、SYMANTEC、SKYSEAがスタンダードなんだけど、更新時の不具合があったんで一部のPCでディフェンダーを使ってて発覚した
VBSの内容は、多少分岐やループはあるけど正規表現を使って置換するだけの簡単なものだった

980 名前:デフォルトの名無しさん [2020/09/09(水) 22:08:05.33 ID:kLG5WjnA.net]
ミッションクリティカルな仕事をVBAでやってるのに、
少し前から動かなくなって修正したくても前任者がこの世に不在+仕様書やマニュアル無し+社内プログラム分かる人いない
って状況割とよく聞くけど、まあ自分が担当することになったんだけど、これどーすりゃいいの?

何社かソフトウェア開発系の会社に話聞きにいったら、vbaはちょっと・・・とか、プログラムみてこれはちょっと・・・って反応だし
1千万超える金積むとなると役員に説明しなくちゃならないんだけど、なんでおまえがやらないの?みたいな反応だし
まあ、控えめに言ってこのまま止まり続けると会社潰れるから言い値で出すしか無いんだろうけど
こういう状況、ここに巣喰う人達はどうやって乗り越えたのかアドバイスやヒントください

転職、以外で

981 名前:デフォルトの名無しさん mailto:sage [2020/09/09(水) 22:09:54.34 ID:vVw6LQjX.net]
ミッションクリティカルなのに止まっても平気なのか
不思議な世界観

982 名前:デフォルトの名無しさん mailto:sage [2020/09/09(水) 22:58:18.76 ID:sZuFJhML.net]
>>960
素人が作っためちゃくちゃなコードのデバッグや修正は仕事でもやってるからあんまり困ったことない
言語も問わず引き受けてる

983 名前:デフォルトの名無しさん [2020/09/09(水) 23:15:38 ID:kLG5WjnA.net]
>>962
すげえ
社内システム作ってるところとかつてで色んなところに聞きいったけど数百万じゃ難しいって言われたんだ
分かる人には難しさっていうか、見積もりがわかるもんなんだな
参考までにどういうところを見て判断するもんなの?
偉い人に説明するときの参考にしたい

984 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 01:17:25.37 ID:Uj/ZEArt.net]
>>963
変数名、インデント、コメントの入り方なんかを見れば、制作者のレベルがだいたいわかる
その上でソースの行数、モジュール数がどれぐらいか

985 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 01:28:39.24 ID:R4ATSmnt.net]
マクロの記録をベースにしてるのは危険な感じがする
あとループの中にgotoが入ってるやつ見たときはちょっと感動した

986 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 01:35:20.13 ID:fOUD4fUU.net]
vba捨ててまともなところに新しくシステム作ってもらった方が安いし早そう

987 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 01:38:51.21 ID:JZj4+m/A.net]
それだと社内で仕事が無くなるおっさんたちが文句言い出す



988 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 12:15:12.05 ID:dws80o57.net]
住宅で喩えるなら  地場でイチから設計・施工をする在来工法のパワービルダーや
社内で設計した通り加工し現地で組み立てるだけのハウスメーカー 又は方式は
一緒だけどコスト削減に特化して現地の安い下請け使って費用を抑えるローコスト系

システムを売りにしてる企業は上で言うHMに近く、依頼すればひと声一千万は相場
PBはどんどん規模が縮小してるから探すのも大変 LCHMなら見付かるかも知らんが
要求に応じかねるレベルだと思われる

当時の社内の人間が内製したレベルならその条件、例えばExcelVBAと絞って
改修・修繕の可不可(得意かどうか)を先ず相手に問えば話が早いかも知れない
業務内容を伝えるだけだとうまく伝わらずに高額商品を売る方向に話が進み兼ねない

989 名前:958 mailto:sage [2020/09/10(木) 12:19:21.40 ID:Oh+8RCfx.net]
>>964
はえ〜・・・なるほどなぁ
変数名は一応業界の人なら意味が分かる程度
インデントはルールから逸脱してるのはほぼない、とおもう
コメントはあることはあるけど助けられたコメントはほぼないな
'ここで●×処理をする Sub ●×処理(・・・・・・・) みたいなw
行数はただの改行も含めると3万行くらいで
モジュールが4、functionが500、subが1500くらい

この辺が大量にあるから難しいって説明しようとしてたんだけど
数行(ステップ?)なら別にF8ポチポチしながら追えるんだよね
じゃあ足りないのは根気だろ、みたいに言われて循環複雑なんちゃらみたいなの調べてたけど
結局こんな数字だしても理解されないだろうしなぁってのと、単に俺が素人だからってのもあって今に至る

>>966
マジそれなんだけど、何をしてるのか誰もわかんないから何を作ってもらえば良いのかも説明出来ないっていうねw
世間で言われてる炎上案件よりよっぽどかわいいレベルなのかも知れないけど
マジであと数ヶ月放置して会社潰れればいいんじゃねーかとも思ってる

990 名前:958 mailto:sage [2020/09/10(木) 12:20:28.24 ID:Oh+8RCfx.net]
>>968
おっと、同じ人かもしれんけどありがとなあ

991 名前:デフォルトの名無しさん [2020/09/10(木) 12:36:48 ID:l+lun8zf.net]
>>963
わかんねーから高めに見積もってんだよ

992 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 13:19:24.92 ID:4mlwjCSe.net]
>>969
他人の作ったプロシージャを2千個3万行解析してドキュメントを作成しながらデバッグなら1千万はまあまあ妥当かと
設備投資でたった1千万が出せない会社は遠からず潰れると思うよ
ほかの資産や設備だって千万単位の修理はいつ発生してもおかしくないし

993 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 22:45:47.73 ID:Oh+8RCfx.net]
>>972
詳しい人にそう言ってもらえるとたすかる
とりあえず素人がやるもんじゃ無いって話は集めたので素直に金だせやって資料作ってるw
しかし1千万つめばできちゃうってのもすげーなあ
個人にとっては大金だけど、会社にとっては中堅社員一人分/年くらいの費用だもんな

994 名前:デフォルトの名無しさん mailto:sage [2020/09/11(金) 11:34:11.36 ID:LThuGd0x.net]
解析・デバッグ・ドキュメント作成でひと声一千万?
じゃ、せっかく解析できたんだしそれをベースに新システム製作費は?
パッケージから大きく外れるものだったらオリジナル新規作成?千万? 都合?千万?

せっかく途中まで分析し始めたようだし「わたしに二千万ください、これやります」でいーじゃん

995 名前:デフォルトの名無しさん mailto:sage [2020/09/11(金) 19:07:30.23 ID:0mQCTSsr.net]
>>974
日本語で

996 名前:デフォルトの名無しさん mailto:sage [2020/09/13(日) 14:01:55.06 ID:AJy8UwEC.net]
>>974
やり方教えてくれww
まあ1千万超えは最低限な感じだね
今起きてる障害を直すだけだけどね

997 名前:デフォルトの名無しさん mailto:sage [2020/09/13(日) 18:15:28.87 ID:/EQXGeQJ.net]
業務止まってるのにのん気だな
せめて地方と業務とアプリぐらい概略書けば誰かがどこかを紹介するかも知れんぞ
アプリはAccessと踏んだが、どう?
どうせこのご時世、近場でなくともZoomやらでリモートしたりでのサポートだろうし



998 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 23:50:50.45 ID:249cxrEP.net]
結局余所に投げる方向で解決した
乗り越えられるものとそうじゃないものを見極めるのも大切と思い込むことにした
なお費用は想定の2倍近くになる模様w
みんなアドバイスありがとう

999 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 00:10:44.84 ID:14Mj/Q6q.net]
>>965
> ループの中にgotoが入ってるやつ見たときはちょっと感動した

Continue 文が無いメジャーな言語があってな。
GoTo Continue1
とか、書くときの隔靴掻痒感と言ったらもう・・・。

1000 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 06:38:58.19 ID:wEXLIZpl.net]
もしかしてフィルタで非表示になってるセルってVBAで値参照できない?

1001 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 04:11:48.30 ID:NJB8+QKa.net]
>>980
自己解決

1002 名前:デフォルトの名無しさん [2021/05/14(金) 13:33:45.79 ID:Kf/7Ycdt.net]
WordのVBAで質問させてください。
文書内の2種類の括弧「」『』の中にある改行だけを削除するマクロを作りたいと思っています。

例えば以下のような文章に対してマクロをかけたときに
「み

ん」





「り




以下のような結果になるマクロです。
「みかん」





「りんご」

つづきます

1003 名前:デフォルトの名無しさん [2021/05/14(金) 13:34:48.74 ID:Kf/7Ycdt.net]
Sub 括弧内の改行を削除()
Dim myRange As Range
Set myRange = ActiveDocument.Range(0, 0)
With myRange.Find
.Text = "[「『""]*^13*[""』」]"
.Forward = True
.Wrap = wdFindStop
.MatchWildcards = True
Do While .Execute = True
With myRange.Find
.Text = "^13"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchFuzzy = False
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
DoEvents
End With
Loop
End With

Set myRange = Nothing
End Sub

1004 名前:デフォルトの名無しさん [2021/05/14(金) 13:35:33.64 ID:Kf/7Ycdt.net]
自分なりに以上のようなマクロを組んでみたのですが、実行してみると、
最初の「みかん」の改行は削除されるのですが、そのあとの「りんご」の改行が削除されません
やり方をお教えいただけると助かります。

1005 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 13:58:15.10 ID:dwsPOlKo.net]
馬鹿には無理

1006 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 20:08:25.19 ID:YZr2qR8x.net]
正規表現使えば一発じゃん。
VBAって正規表現使えるんだっけ?

1007 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 20:22:39.22 ID:pWuJPMFY.net]
RegExpオブジェクトを使えば。
面倒だから俺はどうしてもというとき以外は使わない。



1008 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 20:24:37.07 ID:6X3W89ka.net]
Wordなら最初から正規表現もどきが使えるから、Excel VBAよりはちょっとだけ楽に文字列操作ができる

1009 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 04:20:48.68 ID:rI+eK0KL.net]
>>984
正規表現でマルチラインを設定して改行を空文字に置換
RegExpオブジェクトの使い方は、他の言語より面倒な書き方だったりするけど文字を操作するなら必須だと思うよ

1010 名前:デフォルトの名無しさん mailto:sage [2021/06/10(木) 19:25:30.25 ID:CLREf/YK.net]
splitでいい感じに分割して判定してreplaceで改行無くしてくっ付けろ
「」は自分でつけたせ

1011 名前:デフォルトの名無しさん mailto:sage [2021/08/25(水) 17:06:39.36 ID:qYcBJ8fd.net]
あんま実験してないから文句いうなよ
まずはさ、アホでも考えられるような地道な形でやるべきだと思うわ
そのあとに、効率性とか考えて無駄排除したりすればいいわ

Sub MainProcess()
Dim text As String
text = Sheet1.Cells(1, 1) 'A1に括弧が含まれる文字列をいれろ

Const right1 As String = "「"
Const left1 As String = "」"
Const right2 As String = "『"
Const left2 As String = "』"

text = MakeText(text, right1, left1)
text = MakeText(text, right2, left2)

'B1に結果が返ってくるぞ。途中結果はメッセージボックスで順次表示されるからループ終わるまで何度もOKおせ
Sheet1.Cells(1, 2) = text
End Sub

1012 名前:デフォルトの名無しさん mailto:sage [2021/08/25(水) 17:06:59.82 ID:qYcBJ8fd.net]
>>991の続き 
Function MakeText(text As String, rightChar As String, leftChar As String) As String
Dim startPosition As Integer
Dim endPosition As Integer

Dim InstrStartPosition As Integer
InstrStartPosition = 1

Do While InStr(InstrStartPosition, text, rightChar) <> 0
startPosition = InStr(InstrStartPosition, text, rightChar)

If startPosition <> 0 Then
endPosition = InStr(startPosition + 1, text, leftChar)
End If

Dim midText As String
midText = Mid(text, startPosition, endPosition - startPosition + 1)
Dim midTextChanged As String
midTextChanged = Replace(midText, vbLf, "")

text = Replace(text, midText, midTextChanged)

InstrStartPosition = startPosition + Len(midTextChanged)

MsgBox "無限ループになっちゃった時はctrl + Breakを押せ" & vbCrLf & vbCrLf & text
Loop
MakeText = text
End Function

1013 名前:デフォルトの名無しさん mailto:sage [2021/08/25(水) 17:07:53.23 ID:qYcBJ8fd.net]
つかさ、rightとleftが逆だったわ
まぁ動くからいいわ

1014 名前:デフォルトの名無しさん mailto:sage [2021/08/25(水) 17:18:37.37 ID:qYcBJ8fd.net]
あれだ、最期の方に「だけが単独であると無限ループだわな
ループの条件にその辺の修正いれておいてくれ

もう寝る

1015 名前:デフォルトの名無しさん mailto:sage [2021/08/25(水) 17:34:31.79 ID:qYcBJ8fd.net]
おっきした
>>992を↓に修正
Function MakeText(text As String, rightChar As String, leftChar As String) As String
Dim startPosition As Integer
Dim endPosition As Integer
Dim InstrStartPosition As Integer
InstrStartPosition = 1
Do While InStr(InstrStartPosition, text, rightChar) <> 0
startPosition = InStr(InstrStartPosition, text, rightChar

1016 名前:)
If startPosition <> 0 Then
endPosition = InStr(startPosition + 1, text, leftChar)
End If
Dim midText As String
midText = Mid(text, startPosition, endPosition - startPosition + 1)
Dim midTextChanged As String
midTextChanged = Replace(midText, vbLf, "")
text = Replace(text, midText, midTextChanged)

InstrStartPosition = startPosition + Len(midTextChanged)
MsgBox "無限ループになっちゃった時はctrl + Breakを押せ" & vbCrLf & vbCrLf & text

Dim textForCheck As String
If textForCheck = text Then
MakeText = text
Exit Function
End If
textForCheck = text

Loop
MakeText = text
End Function
[]
[ここ壊れてます]

1017 名前:デフォルトの名無しさん mailto:sage [2021/08/28(土) 10:10:42.16 ID:rHnN1cM5.net]
動けば良いんだよ



1018 名前:デフォルトの名無しさん mailto:sage [2021/08/28(土) 12:36:26.70 ID:3DqqBWFs.net]
腕が重くて

1019 名前:デフォルトの名無しさん mailto:sage [2021/09/01(水) 00:13:05.25 ID:7BIbcRgh.net]


1020 名前:デフォルトの名無しさん mailto:sage [2021/09/01(水) 00:13:11.43 ID:7BIbcRgh.net]


1021 名前:デフォルトの名無しさん mailto:sage [2021/09/01(水) 00:13:18.16 ID:7BIbcRgh.net]


1022 名前:デフォルトの名無しさん mailto:sage [2021/09/01(水) 00:17:13.66 ID:7BIbcRgh.net]


1023 名前:小倉優子 mailto:sage [2021/09/01(水) 00:17:27.14 ID:7BIbcRgh.net]
  ∧,,,∧ 
 (  ・∀・) 1000ならジュースでも飲むか
  (    ) 
  し─J 

1024 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 2294日 13時間 24分 43秒

1025 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






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

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

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