Excel VBA 質問スレ Part39 [転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2015/11/27(金) 20:36:45.35ID:9HV+ag/s___
___ /____ヽ ____
/____\ | |´・ω・`| | /___ヽ
.l |´・ω・`| ニX二 . ̄ ̄ ̄ 二X二 |´・ω・`| l 俺たちに任せろ
!、 ̄ ̄ ̄ ヽ | | /  ̄ ̄ ̄/
ヽ_/ヽ、 ヽ__) \__/\_/. /_/ ノヽ_/
 ̄  ̄ ̄
このスレはコード書き込みOKです。
作成依頼もOKですが、作成依頼限定ではありません。
コードが嫌な人・作成依頼が嫌な人は別スレ建ててください。
※前スレ
Excel VBA 質問スレ Part38 [転載禁止]2ch.net
http://peace.2ch.net/test/read.cgi/tech/1441619979/
0671デフォルトの名無しさん
2016/01/29(金) 02:19:34.89ID:u6PJbYuv0672デフォルトの名無しさん
2016/01/29(金) 03:03:52.29ID:EuNL8AIn受け取り側をVariantに設定すれば出来るんだな。済まん。
0673デフォルトの名無しさん
2016/01/29(金) 04:05:19.53ID:vu3Qsjkg0674デフォルトの名無しさん
2016/01/29(金) 06:41:43.06ID:zKTo8s/wまずひとつのシーケンスしか扱えないのがつらいし、コピーベースだから効率的でもない。
結局はカウンタを使うことが多い。
0675デフォルトの名無しさん
2016/01/29(金) 06:49:02.29ID:zKTo8s/w0676デフォルトの名無しさん
2016/01/29(金) 08:18:18.44ID:n4JmA3/20677デフォルトの名無しさん
2016/01/29(金) 10:09:18.99ID:eO+SXLpFループの変数にiではなくて何を使うの?
素朴な疑問です。
行をループさせるときはrとか使うけど、なんてない?ループのときはiって書く癖が付いてる。
0678デフォルトの名無しさん
2016/01/29(金) 10:21:38.80ID:n4JmA3/20679デフォルトの名無しさん
2016/01/29(金) 10:26:37.59ID:Cfolpywfよく詠め
0680デフォルトの名無しさん
2016/01/29(金) 11:26:35.90ID:zKTo8s/w0681デフォルトの名無しさん
2016/01/29(金) 12:41:18.50ID:OZjYu77z>>658 の
> > VBAは変数を宣言するともれなく初期化がついてくるから
> > これを抑制する為
> 抑制する理由書いてみ
に答えてからほざかないとかわいそうな奴にしか見えないぞ w
0682デフォルトの名無しさん
2016/01/29(金) 15:51:56.92ID:zKTo8s/wVBAではループカウンタを使うのがベター、という結論でいいのか?
0683デフォルトの名無しさん
2016/01/29(金) 16:10:50.46ID:u6PJbYuv0684デフォルトの名無しさん
2016/01/29(金) 16:23:04.02ID:zKTo8s/w使いにくさは認識しているだろババア
0685デフォルトの名無しさん
2016/01/29(金) 16:33:33.32ID:u8nDFqF+要素の順序に合わせてやりたい処理がある → ただのFor
それぞれ使いどころが違うんだから
こっちがベターとか、あっちは時代遅れとか
どちらも的外れな気がするけど
0686デフォルトの名無しさん
2016/01/29(金) 18:20:31.74ID:/cWmSx8U今まで問題になった事ないけど、これからも問題にならないように祈ろう
0687デフォルトの名無しさん
2016/01/29(金) 19:11:10.65ID:zKTo8s/wひとつのシーケンスしか扱えない
→ arr1(i) + arr2(i) を簡単に書けない
同時に複数の要素にアクセスできない
→ arr(i+1) - arr(i) を簡単に書けない
コピーなので代入ができない(配列)
→ Each z... z = z * 2 とできない
コピーコストがある(配列)
→ ただループを回すだけで時間がかかることがある
というようなトレードオフがある。
最初の二つは標準のコンテナライブラリが充実してる言語だと大した問題にならないが、VBAにはそういうものがない。
For Eachの使いどころは相対的に狭いと思う。
0688デフォルトの名無しさん
2016/01/29(金) 20:54:13.12ID:GirFGy8aトレードオフという言葉の使い方が変だと思う
矢印の前後が同じ事の言い換えにすぎないので
そういうのはトレードオフとは言わない
0689デフォルトの名無しさん
2016/01/29(金) 21:08:56.19ID:zKTo8s/wおお、そうだな。
違うことを書いたり消したりしてるうち「トレードオフ」だけ変に残ってた。
「というような難点もある。」
に言い換えます。
0690デフォルトの名無しさん
2016/01/29(金) 22:26:51.74ID:vu3Qsjkg0691デフォルトの名無しさん
2016/01/29(金) 22:41:31.80ID:Cfolpywf記憶違いだったかなあ
0692デフォルトの名無しさん
2016/01/29(金) 22:46:41.43ID:3bay7YeG0693デフォルトの名無しさん
2016/01/29(金) 22:56:37.31ID:xL/2dOZ20694デフォルトの名無しさん
2016/01/29(金) 22:59:33.85ID:SzcTnZpoできるはずだけど
0695デフォルトの名無しさん
2016/01/29(金) 23:03:44.66ID:x5GxlBbmどのようにやるのか教えていただけませんか?
0696デフォルトの名無しさん
2016/01/29(金) 23:11:05.17ID:zGtXhGWMそれはトレードオフだな
0697デフォルトの名無しさん
2016/01/29(金) 23:33:04.61ID:SzcTnZpoieオブジェクトから探してみたら
useragentプロパティとかそれらしいの
または偽装のpostデータを送信すれば偽装できる
0698デフォルトの名無しさん
2016/01/30(土) 00:18:29.02ID:WsSatOj8Navigateメソッドに Headersパラメータあるよ ここで指定する
0699デフォルトの名無しさん
2016/01/30(土) 01:09:42.28ID:QZN0GaAw所々にオーバーフローの罠が仕掛けられている
どうしたものか
0700デフォルトの名無しさん
2016/01/30(土) 02:47:34.76ID:wZlCWGLp64bit版ならlonglongをマスクして使う
32bit版ならあきらめてVBを使うとか文字列で処理するとか
0701デフォルトの名無しさん
2016/01/30(土) 21:48:03.29ID:9q1UC1/m0702sage
2016/01/30(土) 22:42:24.01ID:DtupSwoUSub 値貼り付け()
Dim SEL As String
SEL = ActiveCell.Address
On Error Resume Next
Range(SEL).PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End Sub
これで制御できたと思ったんですが、ENTERキーを押すと
数式まで貼り付けられてしまうのでENTERキーでも「値のみの貼り付け」はできないでしょうか?
0703デフォルトの名無しさん
2016/01/30(土) 23:17:21.27ID:WsSatOj8やりたい事がわからない もうすこし詳細な説明をして下さい
そのマクロとENTERキーの関係とか
0704sage
2016/01/30(土) 23:53:42.67ID:DtupSwoU週のはじめに各従業員が行先と訪問時間などを入力する
表を作りたいのです。
毎週、お客さんのところに行く曜日や時間が変わるので
コピペして運用したいのです。
しかしあまりPCに不慣れな人もいて、コピペしてしまい
関数が乱れてしまいます。
そこで、貼り付けを制御をしたいです。
上のマクロで用意してあるフォームボタンだけなら
問題ないのですが、コピーした後にENTERキーを押してしまう
人がいて困っています。
0705デフォルトの名無しさん
2016/01/31(日) 00:29:23.55ID:GHH7Ytwpデータ入力者が複数いる場合は、ワークシートに時間などを直接入れるんじゃなくて
入力フォームを使うのが定番の方法です
0706デフォルトの名無しさん
2016/01/31(日) 00:43:56.18ID:MM1DiLhbだいたいさ、なんでお前が
考えることを放棄してるような感じになってるの
どこの能力が足りないわけ
0707デフォルトの名無しさん
2016/01/31(日) 00:53:42.54ID:hQeW+ttMコピペ運用そのものを やめて見直すべきだと思うよ
どうしてもというなら
↓のようにCopy/Paste 両方ボタンにして モジュール変数を使うとか
Private BUF As Variant
Sub 値Copy()
BUF = ActiveCell.Value
End Sub
Sub 値Paste()
ActiveCell.Value = BUF
End Sub
0708デフォルトの名無しさん
2016/01/31(日) 14:40:54.90ID:yZ5QuPZH皆さんの経験上大体何回ぐらいが限界だとおもいますか?
0709デフォルトの名無しさん
2016/01/31(日) 14:55:35.44ID:fJmO8CE1Dim S As Long
If (条件A) Then S = 1
If (条件B) Then S = S + 2
If (条件C) Then S = S + 4
...
Select Case S
Case 1
Case 2
...
みたいな形にした方がいいと思う。
途中にループとか挟まるなら関数として分けろ。
0710デフォルトの名無しさん
2016/01/31(日) 17:31:33.51ID:oGNCocg8でも増改築していくと結局4つぐらいになってる
0711デフォルトの名無しさん
2016/01/31(日) 17:46:37.03ID:k5bfrJJo前に書いたけど、分岐はその使い方によって以降の分岐を避けられる場合がある。
Case文の場合は作られたケースを順番に評価するのはトレースすると解るよね。
まずそこで使い分けが発生するんだけど、単純にそれで書くと読みにくくなることがある。
処理のレスポンスと可読性どちらを取るかはケースバイケースで、組んでる人のセンスの見せ処にもなる。
後は上の人がループの切り分けの話をしていたけど俺の感覚からすれば
関数やメソッドは単一責任原則に則って作っていればループや分岐は別に分かれていなくてもいいと思ってる。
つまり何が幾つまでという切り分けで作るのではなく一つの役割で一つの関数やメソッドを作っておけば、
基本スパゲティコードになることはない筈なので
後は分岐数は見やすければお好きにどうぞと言いたい。俺個人の意見としてはね。
0712デフォルトの名無しさん
2016/01/31(日) 21:42:48.93ID:3A1xW7mu>>710
>>711
ありがとうございます。
1行だけの単純命令ならいくらでも入れ子できそうですが
本日多数の関数を持ったelse付きの数行あるコードを4層構造に仕込もうとしましたが
複雑に入り組みすぎて、途中で脳が沸騰しそうになり未だに完成していません。
Caseでやるのもよさそうですね
正直もうくたくたで何もやる気も起きません。
0713デフォルトの名無しさん
2016/01/31(日) 21:49:46.31ID:3A1xW7mu0714デフォルトの名無しさん
2016/01/31(日) 22:37:46.23ID:fN9K6rqb0715デフォルトの名無しさん
2016/01/31(日) 22:44:30.24ID:/MiBgNRG0716デフォルトの名無しさん
2016/01/31(日) 22:54:07.60ID:fJmO8CE1それまでで得られた結果を反映した強くてニューゲームした方がいい。
ただしアルゴリズムとかマトモに学んでないと、そういう時に手段が限られて苦労する。
0717デフォルトの名無しさん
2016/01/31(日) 23:37:12.06ID:OOAiq76c小さな問題と大きな問題の両方に悩まされる。
一筋縄ではいかない。
0718デフォルトの名無しさん
2016/02/02(火) 19:46:44.38ID:n8+/YJjg0719デフォルトの名無しさん
2016/02/02(火) 21:29:47.13ID:xMBhBprBしかし100銘柄〜200銘柄も取り込むと膨大な時間がかかってしまいます。
取り込む時間を最小限にするために、テーブルの中の一か所だけを取り込むようにしたいです。
例:
・URL http://kabutan.jp/stock/finance?code=1301
・テーブル「今期予想」の「予 2016.03」の「経常益」のみ(3000という数字)を取り込みたい
―――参考までに「ウェブクエリでテーブルをエクセルに取り込むマクロ」―――
Sub sssample2()
Dim fff As String
fff = ThisWorkbook.Path & "http://kabutan.jp/stock/finance?code=1301"
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;" & fff, Destination:=Range("B2"))
.RefreshStyle = xlOverwriteCells
.WebTables = "12"
.WebFormatting = xlWebFormattingNone
.Refresh BackgroundQuery:=False
End With
End Sub
――――――――――――――――――――――――――――――――――
よろしくお願いします。
0720デフォルトの名無しさん
2016/02/03(水) 00:11:42.99ID:phHyrAirウェブクエリはテーブルの一部だけを取り込むことは基本的にできないし、
そもそも動作が遅すぎるので大量データの取得には向いてない
「XMLHTTPオブジェクト」おすすめ
0721デフォルトの名無しさん
2016/02/03(水) 01:21:36.38ID:xSOyaD7Aハードルは高そうですが調べてみます
0722デフォルトの名無しさん
2016/02/03(水) 10:22:57.26ID:/plcvGK1すっごい初心者な質問なのですが…
vbaでie操作して最後にieで完了ページが表示された事を確認してからieを閉じたいのですが
if instr(objIE.document.body.innerhtml."完了しました。") 〉0 then
とじる
else
やりなおし
end if
としていますが機能していないようで
こういう目的の場合どういった方法を取るものなのでしょうか
0723デフォルトの名無しさん
2016/02/03(水) 12:15:31.59ID:kFs/rV/l0724デフォルトの名無しさん
2016/02/03(水) 13:23:42.06ID:zCM4JqWj機能していないとは?
0725デフォルトの名無しさん
2016/02/03(水) 21:32:48.21ID:HBzsb+pO各人の最も勉強した科目は何でその勉強はいくらかを計算するプログラムを作りたいのですが、
何か良い案をお教えいただけないでしょうか?
またこのようにプログラムを全く思いつかない場合、どのように検索・勉強すればよいのでしょうか?
宜しければご教授下さい
0726725
2016/02/03(水) 21:34:02.56ID:HBzsb+pO>勉強はいくらか
「勉強時間はいくらか」の間違いです。
申し訳ありません
0727デフォルトの名無しさん
2016/02/03(水) 22:06:22.01ID:owuQJz30検索キーは [VBA クロス集計]
クロス集計はこんな感じ
http://www4.synapse.ne.jp/yone/excel_exercise/exercise_vba_cross.html
0728725
2016/02/03(水) 22:22:33.44ID:HBzsb+pO早速の返信ありがとうございます
おかげさまで解決出来ました
心より感謝申し上げます
0729デフォルトの名無しさん
2016/02/05(金) 00:08:37.08ID:TXCmVTvBExcelのVBAでDo While Cellsを使用して
sheet1のA6セルに入力されたデータをsheet2のS列のデータと比較し
重複データがあれば「重複データが存在します」
なければ「重複チェック終了しました」とメッセージ表記されるようにしました。
これで続けて重複データをsheet1のA10以降に表示されるようにしたいです。
この後にどのように入力したらいいでしょうか。
当初はオートフィルでやってたのですが、cells利用してもできると聞いて
調べて見たのですがよくわからなくて困っています。
数日前に始めたばかりで勝手がわかっていなかったらすみません。
0730デフォルトの名無しさん
2016/02/05(金) 00:36:52.27ID:blBw672Yとりあえず、作ったVBAをどこかに貼って
短ければここでもいいし
0731デフォルトの名無しさん
2016/02/05(金) 00:50:11.46ID:U+VxVXPfウォートホッグなの
0732デフォルトの名無しさん
2016/02/05(金) 04:20:30.65ID:tis1OD9TA10に、A6の値を代入する
A10 = A6の値
0733デフォルトの名無しさん
2016/02/05(金) 04:25:48.17ID:LfaH5pAK0734デフォルトの名無しさん
2016/02/05(金) 04:40:03.69ID:LfaH5pAKccc = 1
For Each eee In Sheets("Sheet2").Range("S1:S100")
If eee.Value = Sheets("Sheet1").Range("A6").Value Then
Sheets("Sheet1").Range("A10").Cells(ccc, 1) = eee.Value
ccc = ccc + 1
End If
Next
End Sub
0735デフォルトの名無しさん
2016/02/05(金) 05:36:50.98ID:eBNdrWRtその度新しくブックを作り直さなきゃならなくなる
0736729
2016/02/05(金) 11:08:36.96ID:j1/kW8gU>>730
Sub sheet1()
'
' sheet1 Macro
'
Dim i, ii As Integer
i = 0
ii = 0
Do While Cells(6 + i, 2) <> ""
Do While Worksheets("sheet2").Cells(2 + ii, 2) <> ""
If Cells(6 + i, 2) = Worksheets("sheet2").Cells(2 + ii, 2) Then Worksheets("Sheet2").Cells(2 + ii, 2).Value = Cells(10 + i, 2).Value
ii = ii + 1
Loop
i = i + 1
Loop
MsgBox ("重複チェック終了しました。")
Exit Sub
End Sub
>>729の後、データの存在の有無は不要ということで終了後に「重複チェック終了しました。」と表示されるだけにしました。
これで実行してもメッセージが出るだけでデータの抽出ができません。
>>731
sheet1のA6に入力欄を作り、実行するとA10以下に表示される、という仕組みを作りたかったので…
これまでVBAに触ったこともなかったので色々と効率の悪いことをしていると思います。
0737デフォルトの名無しさん
2016/02/05(金) 12:44:29.76ID:VJfh6At3シートモジュールに@のコードを書くとうまくいきますが、Aのコードを書くと
上手くいきません。
なぜなんでしょうか?教えてください。
@
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
Sheet2.Cells(Target.Row, 5) = Time
Sheet2.Cells(Target.Row, 5).Copy
ActiveSheet.Cells(17, 5).Paste
End If
End Sub
A
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
Sheet2.Cells(Target.Row, 5) = Time
Sheet2.Cells(Target.Row, 5).Copy
ActiveSheet.Paste
End If
End Sub
0738デフォルトの名無しさん
2016/02/05(金) 14:28:18.31ID:7bhw2NUKやりたい事 今一つ分ってないけと なんとなく
If Cells(6 + i, 2) = Worksheets("sheet2").Cells(2 + ii, 2) Then Worksheets("Sheet2").Cells(2 + ii, 2).Value = Cells(10 + i, 2).Value
これ
・・・・・・・・Then Cells(10 + i, 2).Value = Worksheets("Sheet2").Cells(2 + ii, 2).Value
じゃないかなと思うのだけど(代入文の 右辺と左辺が逆)
>>737
EXCELのバージョンはいくつ?
俺ん所(EXCEL2016)では
目的どおり動作するかどうか関係なく 単純に動く/動かないだと
@ Pasteで実行時エラー
A 動く
なんだけどな
0739デフォルトの名無しさん
2016/02/05(金) 14:54:32.80ID:VJfh6At3Excel2010です。
何が原因なんでしょうか?
0740デフォルトの名無しさん
2016/02/05(金) 15:07:44.85ID:RDrjDYLWWorksheets(2).Select
Cells(target.Row, 5)=Time
Cells(17, 5) = Cells(target.Row, 5)
0741デフォルトの名無しさん
2016/02/05(金) 15:19:29.05ID:VJfh6At3返信ありがとうございます。
sheet2でコピーしたものをシート1に持ってきたいのです。
ご教示お願いします。
0742738
2016/02/05(金) 15:22:59.01ID:7bhw2NUKちょっと確認
>>737 の通り
@ ○
A ×
の動作でいいのよね
俺ん所では 逆だから これ以上は回答できないけど
0743デフォルトの名無しさん
2016/02/05(金) 15:29:10.07ID:RDrjDYLWactivesheetを1にした場合で
copyする範囲がa1〜h1だとした例
With Worksheets(2)
For i = 1 To 8
Cells(1, i) = .Cells(1, i)
Next i
End With
0745738
2016/02/05(金) 15:37:37.09ID:7bhw2NUKなら
https://www.moug.net/tech/exvba/0050103.html
のように
Destination を指定する
0746デフォルトの名無しさん
2016/02/05(金) 15:58:15.69ID:VJfh6At3無事にできました。
ご教示ありがとうございます。
0747デフォルトの名無しさん
2016/02/05(金) 21:58:27.26ID:qfst1uAUそのプロシージャ内でApplication.Caller で呼び出し元を調べると
"角丸四角形 1" とか出てくるけど、その図形のNameプロパティーを調べると
”Rounded Rectangle 1" っていうふうに英語名で出てくる。
シート上の複数の図形から同じプロシージャを呼び出して、
呼び出し元の図形の列位置(Column)に応じて処理を分岐させるってのをやりたくて
こんなコード書いたんだけど、
Application.Caller の結果と Nameプロパティーが違うんで上手くいかなかった。
Sub Test()
Dim v As Variant
Dim shp As Shape
Dim clm As Long
v = Application.Caller
For Each shp in Thisworkbook.Sheets(1).Shapes
If shp.Name = v Then
clm = shp.Column
Exit For
End If
Next shp
End Sub
できればどっちか(なるべくなら英語のほう)に統一したいんだけど、
どうすりゃいいの?
0748デフォルトの名無しさん
2016/02/05(金) 22:08:37.95ID:blBw672YActiveSheet.Shapes(Application.Caller).Name
あたりで英語の名前が取得できるはず
0749デフォルトの名無しさん
2016/02/05(金) 22:27:47.03ID:RDrjDYLW複数の画像をシートに配置し1画像をクリックしたら個々の処理をしたい
そのマクロを画像数に関係しないで1ルーチンでしたい、、ってことかな?
0750デフォルトの名無しさん
2016/02/05(金) 22:33:57.04ID:qfst1uAU早速の回答ありがとうございます。
Sub Test()
Dim ws As Worksheet
Dim str As String
Dim shp As Shape
Dim clm As Long
Set ws = ThisWorkbook.Sheets(1)
str = ws.Shapes(Application.Caller).Name
For Each shp In ws.Shapes
If shp.Name = str Then
clm = shp.TopLeftCell.Column
Exit For
End If
Next shp
Set ws = Nothing
Debug.Print clm
End Sub
おかげさまで無事に期待通りの動作になりました。
0751デフォルトの名無しさん
2016/02/05(金) 22:36:08.61ID:qfst1uAUすみません、リロードしてなかったので気付きませんでした
>そのマクロを画像数に関係しないで1ルーチンでしたい、、ってことかな?
そうです、そんな感じです
0752デフォルトの名無しさん
2016/02/06(土) 08:53:13.29ID:P3+owK3wおいらの場合だが、、画像を貼る時
ユニーク(唯一)な画像名を入れ、実行するマクロ名は全て同一にしている
マクロのほうでクリックされた画像名を取得すれば、どうにでもできる
0753デフォルトの名無しさん
2016/02/06(土) 09:06:55.95ID:P3+owK3wobjshape.name
マクロの登録については
selection.onactionあたりをgoogってw
0754デフォルトの名無しさん
2016/02/06(土) 15:32:47.34ID:lnO4bcRFセル範囲をctrol+Cとかでクリップボードにいれた状態で
その内容をVBAで配列等にしたい場合、内容を地道にCRLFとHTでsplitするしか方法がないのでしょうか
0755デフォルトの名無しさん
2016/02/06(土) 19:18:20.53ID:o+SuU72l質問の答えは>>738の通りと思うけど気になった点を2つほど
・A6以降の値を調べるならループ必要だけど、A6のみなら最初のDoループは不要では?
・最後のExit Subは自分なら書かないかな(なくても問題ないため)
0756デフォルトの名無しさん
2016/02/06(土) 19:26:54.79ID:k9/r4E4xなぜクリップボードに入れる前に普通にValueプロパティで配列化しないの?
0757デフォルトの名無しさん
2016/02/06(土) 19:29:16.46ID:d/rSshNVRangeオブジェクトを使う方向で考えた方がいい
Rangeから配列へはVariant変数にただ代入するだけ
0758デフォルトの名無しさん
2016/02/06(土) 19:48:03.96ID:eyuorlkiググったりしてたんですが意味わからんものでしてそれぞれのプログラムの説明も良かったら頼みます
やりたいことはコマンドプロンプトのコマンドの実行とコマンドプロンプト画面を表示したくないためです
0759デフォルトの名無しさん
2016/02/06(土) 20:00:25.86ID:lnO4bcRF通常なら提言通りの方法でやるのですが
システムの関係でExcelのインスタンスが2つになってるんです
そこでインスタンスAでCtrol+CをしてインスタンスBでマクロを動かし
クリップボードのセル範囲情報を取り出そうとしているんです
0760デフォルトの名無しさん
2016/02/06(土) 20:54:04.56ID:l536E6T4retval = Shell("c:\t\t.bat", vbHide)
0761デフォルトの名無しさん
2016/02/06(土) 21:16:39.44ID:eyuorlkiググったら「ExecかRunをWScript.Shellで実行」できるというのを見たんですがそれらと
>>760の実行は何か違いがあるんですかね?
それとググったら発見したんですが
CreateObject("WScript.Shell").Run "CMD.EXE C:\>コマンドプロンプトのコマンドの実行文", 0
これでも通じますか?また通じたとしたら何か問題ありますかね?
0762デフォルトの名無しさん
2016/02/06(土) 21:25:25.27ID:d/rSshNV基本Excelの中身ってCOMだからGetObjectでBからA見たりできるよ
getobject 複数 インスタンスでぐぐれ
0763デフォルトの名無しさん
2016/02/06(土) 21:29:36.07ID:l536E6T4字数の多いのは機能も多いだろう
軽自動車か高級車の違いで
コンビニ行くなら同じ
0764デフォルトの名無しさん
2016/02/06(土) 21:40:35.45ID:eyuorlkiつまり>>760この実行文は余計なものを省いたような文なんでしょうかね?
それだったらありがたいんですがその実行文は何をしてるんですかね?
良かったら説明お願いします
0765デフォルトの名無しさん
2016/02/06(土) 21:53:20.80ID:P9swx1tr× "CMD.EXE C:\>コマンドプロンプトのコマンドの実行文"
○ "CMD.EXE /C コマンドプロンプトのコマンドの実行文"
ですよ
×の方でやったらループして動かなくなった(EXCEL2016)
ちなみに
RC = CreateObject("WScript.Shell").Run("CMD.EXE /C コマンドプロンプトのコマンドの実行文", vbHide , True)
なら
マンドの実行終了を待ち合せてくれて 実行結果の終了コード(番号)が返ってきます(通常 正常終了は 0)
これは Shell関数は使えない。
0766デフォルトの名無しさん
2016/02/06(土) 22:07:31.95ID:eyuorlkiそれで実行できました
ところで
CreateObject("WScript.Shell").Run "empty *", 0
この実行文は前に作ったものなんですが違いはなんなんでしょう?
0767デフォルトの名無しさん
2016/02/06(土) 22:14:02.79ID:cR3OuN6O特定のOSの機能を使いたいのかはっきりさせてほしいところだ。
0768デフォルトの名無しさん
2016/02/06(土) 23:55:45.18ID:eyuorlkiタスク機能でバックグランド実行しようとしてたんですわ
0769デフォルトの名無しさん
2016/02/07(日) 00:08:40.73ID:z3M1lb5nPowerShellでええやろ。
PowerShell_ISE でも使って見れば?
WSH, VBScript もあるし
0770デフォルトの名無しさん
2016/02/07(日) 01:04:57.37ID:S151Vk4MExcelの右クリックにメニュー追加したいんですが、右クリックメニューって何種類ありますか?
Application.CommandBars("Cell")とかでRowとかいろいろあると思うんですが。
もしくは右クリックメニューすべてに追加するみたいな方法ってあるのでしょうか。
■ このスレッドは過去ログ倉庫に格納されています