!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part58
https://mevius.5ch.net/test/read.cgi/tech/1542577644/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
Excel VBA 質問スレ Part59
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ d2a3-A3MQ)
2019/02/09(土) 15:12:30.70ID:3lTArmdf02デフォルトの名無しさん (ワッチョイ a98e-Gewk)
2019/02/09(土) 15:22:25.15ID:8WZyJ5B/0 ただし、VBAが何かわからないような馬鹿はお断りです
3デフォルトの名無しさん (ブーイモ MM22-FdHg)
2019/02/09(土) 15:40:14.54ID:CKZ2Rs4GM 他の言語スレでは相手にされずここならマウント取れるだろうとやって来る馬鹿もお断りです
4デフォルトの名無しさん (アメ MMcd-pe6H)
2019/02/09(土) 17:15:55.60ID:Z3yo63+mM >>3
マウント取られちゃう怯えですか
マウント取られちゃう怯えですか
5デフォルトの名無しさん (ワッチョイ 8deb-/WZR)
2019/02/09(土) 21:48:35.35ID:dlyNQvdo0 前スレ終了直前でスルーされてしまった質問です。お願いします。
あるファイルに、
on error goto err
******
exit sub
err:
msgbox err.description
end sub
↑
こういうコードをたくさん書いてきました。
しかし、エラーが出たときに、どのプロシージャで発生したのか知りたくなり、
msgbox err.description & このプロシージャ名
に変更したくなりました。
「このプロシージャ名」を書く方法ってあるのでしょうか?
あるファイルに、
on error goto err
******
exit sub
err:
msgbox err.description
end sub
↑
こういうコードをたくさん書いてきました。
しかし、エラーが出たときに、どのプロシージャで発生したのか知りたくなり、
msgbox err.description & このプロシージャ名
に変更したくなりました。
「このプロシージャ名」を書く方法ってあるのでしょうか?
6デフォルトの名無しさん (ワッチョイ 911f-Q5xa)
2019/02/09(土) 22:15:26.08ID:J8bfqgzv0 C#で作成したライブリファイルをビルドしてtest.dllファイルを作成し仮にデスクトップに置きました。
中身は
public string[] GetData(string path,string file)
{
//処理
}
これをVBAで実行したのですが、標準モジュールでどう宣言したらできますか?
そもそも出来るんですか?
Declare Function strData Lib "???" Alias "???" () As string()
これを使うんですよね?
中身は
public string[] GetData(string path,string file)
{
//処理
}
これをVBAで実行したのですが、標準モジュールでどう宣言したらできますか?
そもそも出来るんですか?
Declare Function strData Lib "???" Alias "???" () As string()
これを使うんですよね?
7デフォルトの名無しさん (ワッチョイ 8dda-OF6d)
2019/02/09(土) 22:30:32.98ID:nXE2v5Lv0 そうやって作ったのって、やっぱ実行速度はC#並みになるのかな。
VBAレベルに落ちちゃうなら、VBAに翻訳しちゃうとか。
VBAレベルに落ちちゃうなら、VBAに翻訳しちゃうとか。
8デフォルトの名無しさん (ワッチョイ a969-z8kj)
2019/02/09(土) 22:39:52.86ID:M8bBhNwV0 エクセルvba勉強始めてるんですけど
言語がなんかすきになれないです
オブジェクトを生成してそれを操作するってのばっかりにみえるんですが
それならいっそパイソンやら使いやすい言語でcomオブジェクトからエクセルを操作したほうがいいんでしょうか?
言語がなんかすきになれないです
オブジェクトを生成してそれを操作するってのばっかりにみえるんですが
それならいっそパイソンやら使いやすい言語でcomオブジェクトからエクセルを操作したほうがいいんでしょうか?
9デフォルトの名無しさん (ワッチョイ a2a2-/WZR)
2019/02/10(日) 00:05:20.18ID:cpoaXViK0 要望2だけ反映させてました
https://www.axfc.net/u/3958630
変更点
乱数はマイナスも作成できるようになりました
文字シャッフル機能を追加しました
ケンブリッジのあれも取り入れてみました
要望1はいいと言うことなのでこれで終わりたいと思います。
スレ汚し失礼しました。
https://www.axfc.net/u/3958630
変更点
乱数はマイナスも作成できるようになりました
文字シャッフル機能を追加しました
ケンブリッジのあれも取り入れてみました
要望1はいいと言うことなのでこれで終わりたいと思います。
スレ汚し失礼しました。
10デフォルトの名無しさん (ワッチョイ f901-IbHV)
2019/02/10(日) 03:10:28.77ID:T8b1EA5w011デフォルトの名無しさん (ワッチョイ 25ce-0b7p)
2019/02/10(日) 03:26:25.40ID:5I+kynYZ012デフォルトの名無しさん (ワッチョイ a2a2-/WZR)
2019/02/10(日) 03:36:45.00ID:cpoaXViK013デフォルトの名無しさん (アウアウクー MM91-eF01)
2019/02/10(日) 08:29:51.15ID:nwYV/fdtM なんかすみませんね。深夜睡眠をけずってまでやってらったようで、、。ツールありがとうございます。
あとはこちらでいただいたツールをベースに必要に応じてカスタマイズします。
あとはこちらでいただいたツールをベースに必要に応じてカスタマイズします。
14デフォルトの名無しさん (ワッチョイ e188-drk2)
2019/02/10(日) 09:22:45.87ID:adWOvpgi0 JScriptでエクセルやってます
いろいろ出来るようになったのですが、VBAで選択した範囲の右下をとるときに、
y = Selection.Row + Selection.Rows.Count - 1
x = Selection.Column + Selection.Columns.Count - 1
としますが、JScripで、
var sheet = book.Worksheets( 1 );
var y = sheet.Selection.Row
とかしてもありませんと怒られます。どうしたらいいでしょうか
また、いろいろとググっているのですが、JScriptで使えるエクセル専用のオブジェクトやプロパティを
調べられるサイトってないのでしょうか。なかなか見つけられないのですがわかる方、教えてください
VBAならいろいろあるようですが
いろいろ出来るようになったのですが、VBAで選択した範囲の右下をとるときに、
y = Selection.Row + Selection.Rows.Count - 1
x = Selection.Column + Selection.Columns.Count - 1
としますが、JScripで、
var sheet = book.Worksheets( 1 );
var y = sheet.Selection.Row
とかしてもありませんと怒られます。どうしたらいいでしょうか
また、いろいろとググっているのですが、JScriptで使えるエクセル専用のオブジェクトやプロパティを
調べられるサイトってないのでしょうか。なかなか見つけられないのですがわかる方、教えてください
VBAならいろいろあるようですが
15デフォルトの名無しさん (ワッチョイ 8dda-OF6d)
2019/02/10(日) 09:40:27.91ID:7rlN1EyT0 >>14
そこだけVBSにするとか。
そこだけVBSにするとか。
16デフォルトの名無しさん (ワッチョイ 1df9-n/rh)
2019/02/10(日) 09:54:47.81ID:px4mCHlG0 >>14
JScriptは良くわからんが・・Javaは結構したけど
見当違いなら申し訳ないが
既にExcelが起動していて、シート1が選択され
範囲が選択されている状況で、JScriptを動かしているんで良いですよね
JScriptは良くわからんが・・Javaは結構したけど
見当違いなら申し訳ないが
既にExcelが起動していて、シート1が選択され
範囲が選択されている状況で、JScriptを動かしているんで良いですよね
17デフォルトの名無しさん (ワッチョイ 1df9-n/rh)
2019/02/10(日) 10:14:14.92ID:px4mCHlG018デフォルトの名無しさん (アークセー Sxd1-Hrf8)
2019/02/10(日) 10:29:08.47ID:D1+mLGbSx >>14
var sheet = book.Worksheets(1);
sheet.Activate;
var selected = book.Application.Selection;
var x = selected.Row + selected.Rows.Count - 1;
var y = selected.Column + selected.Columns.Count - 1;
でいけるんじゃないかな
試してないから間違ってたらごめん
var sheet = book.Worksheets(1);
sheet.Activate;
var selected = book.Application.Selection;
var x = selected.Row + selected.Rows.Count - 1;
var y = selected.Column + selected.Columns.Count - 1;
でいけるんじゃないかな
試してないから間違ってたらごめん
19デフォルトの名無しさん (ワッチョイ 1df9-n/rh)
2019/02/10(日) 10:48:51.96ID:px4mCHlG0 >>8
昔は、メモリーの領域を分け合って使ってたけど
いまわ全てオブジェクトと思え
エクセルは色々このオブジェクトの使い方が説明されていて
機能も多い
いやならすべて作ればとなるが、所詮何も出来ないだろ
昔は、メモリーの領域を分け合って使ってたけど
いまわ全てオブジェクトと思え
エクセルは色々このオブジェクトの使い方が説明されていて
機能も多い
いやならすべて作ればとなるが、所詮何も出来ないだろ
20デフォルトの名無しさん (ワッチョイ 1df9-n/rh)
2019/02/10(日) 10:52:53.82ID:px4mCHlG021デフォルトの名無しさん (ワッチョイ 1df9-n/rh)
2019/02/10(日) 10:57:18.71ID:px4mCHlG0 したがって、プロシージャ名は配列で宣言し、サブルーチンの時の処理が必要になるが
これは、システムが管理しているのを使うべきだな、すまない
これは、システムが管理しているのを使うべきだな、すまない
22デフォルトの名無しさん (ワッチョイ e188-drk2)
2019/02/10(日) 11:29:32.47ID:adWOvpgi023デフォルトの名無しさん (ワッチョイ 1df9-n/rh)
2019/02/10(日) 12:19:38.78ID:px4mCHlG0 まあなんだな、質問して回答を実行してできたことが答えじゃなくて
何故できなくて、何で出来たのが答えなんだけどな
何故できなくて、何で出来たのが答えなんだけどな
24デフォルトの名無しさん (アークセー Sxd1-Hrf8)
2019/02/10(日) 12:35:46.47ID:YUFMtInCx >>22
今回の質問はエクセルのオブジェクトモデルに忠実に従えば解決するものだよ
VBS含め他のどんな言語を選択しようが、そのあたりの事情は変わらない
具体的には、今回はSelectionへのアクセス方法がおかしかったわけで、
MSDNリファレンスのプロパティ一覧を見たり、VBEのオブジェクトブラウザでプロパティを検索したりすれば、
Worksheetオブジェクトには現在の選択範囲へのアクセスを提供するSelectionプロパティがないことや、
SelectionプロパティはApplicationオブジェクトのメンバとして実装されていることが分かる
今回の質問はエクセルのオブジェクトモデルに忠実に従えば解決するものだよ
VBS含め他のどんな言語を選択しようが、そのあたりの事情は変わらない
具体的には、今回はSelectionへのアクセス方法がおかしかったわけで、
MSDNリファレンスのプロパティ一覧を見たり、VBEのオブジェクトブラウザでプロパティを検索したりすれば、
Worksheetオブジェクトには現在の選択範囲へのアクセスを提供するSelectionプロパティがないことや、
SelectionプロパティはApplicationオブジェクトのメンバとして実装されていることが分かる
25デフォルトの名無しさん (ワッチョイ 8dda-OF6d)
2019/02/10(日) 12:45:32.26ID:7rlN1EyT0 >>22
無理に移るんじゃなくて、併用するとか。
無理に移るんじゃなくて、併用するとか。
26デフォルトの名無しさん (ワッチョイ 1df9-n/rh)
2019/02/10(日) 12:48:09.50ID:px4mCHlG0 前スレでもあったが、シートを選択してなければ、そのシートの選択範囲は取れない
ただそれだけだろ
ただそれだけだろ
27デフォルトの名無しさん (アークセー Sxd1-Hrf8)
2019/02/10(日) 12:56:37.91ID:YUFMtInCx >>26
元の質問のサンプルはsheet.Selectionという式の構文が間違っているので、仮にシートを選択していようが選択範囲は取れない
あと、シート上のSelectionの情報を取るだけなら画面遷移を伴うSelectではなくActivateで十分だろう
元の質問のサンプルはsheet.Selectionという式の構文が間違っているので、仮にシートを選択していようが選択範囲は取れない
あと、シート上のSelectionの情報を取るだけなら画面遷移を伴うSelectではなくActivateで十分だろう
28デフォルトの名無しさん (ワッチョイ e188-drk2)
2019/02/10(日) 13:00:02.97ID:adWOvpgi0 >>24
全く同じことをjsとvbsでやってみました。jsはうまく動作しますが、vbsは動きません
selectedにRowはないと言ってきます。レンジの選択はちゃんと出来ています
jsのコード
var book = GetObject("C:\\file.xls");
var sheet = book.Worksheets( 1 );
sheet.Select;
sheet.Range( "A1", "B10" ).Select
var selected = book.Application.Selection;
var x = selected.Column + selected.Columns.Count - 1;
var y = selected.Row + selected.Rows.Count - 1;
WScript.echo( "x=",x,", y=", y );
book = null;
WScript.Quit(2);
vbsのコード
Set book = GetObject("C:\\file.xls")
Set sheet = book.Worksheets( 1 )
sheet.Select
sheet.Range( "A1", "B10" ).Select
Set selected = book.Application.Selection
Set x = selected.Row ' ここでエラー
MsgBox "x:" & x
Set book = Nothing
全く同じことをjsとvbsでやってみました。jsはうまく動作しますが、vbsは動きません
selectedにRowはないと言ってきます。レンジの選択はちゃんと出来ています
jsのコード
var book = GetObject("C:\\file.xls");
var sheet = book.Worksheets( 1 );
sheet.Select;
sheet.Range( "A1", "B10" ).Select
var selected = book.Application.Selection;
var x = selected.Column + selected.Columns.Count - 1;
var y = selected.Row + selected.Rows.Count - 1;
WScript.echo( "x=",x,", y=", y );
book = null;
WScript.Quit(2);
vbsのコード
Set book = GetObject("C:\\file.xls")
Set sheet = book.Worksheets( 1 )
sheet.Select
sheet.Range( "A1", "B10" ).Select
Set selected = book.Application.Selection
Set x = selected.Row ' ここでエラー
MsgBox "x:" & x
Set book = Nothing
29デフォルトの名無しさん (ワッチョイ 1df9-n/rh)
2019/02/10(日) 13:03:50.84ID:px4mCHlG0 >>27
すまないな
>シート上のSelectionの情報を取るだけなら画面遷移を伴うSelectではなくActivateで十分
実質的にどう違うかわからないので申し訳ありませんが教えていただけませんか
すまないな
>シート上のSelectionの情報を取るだけなら画面遷移を伴うSelectではなくActivateで十分
実質的にどう違うかわからないので申し訳ありませんが教えていただけませんか
30デフォルトの名無しさん (アークセー Sxd1-Hrf8)
2019/02/10(日) 13:14:52.82ID:YUFMtInCx31デフォルトの名無しさん (ワッチョイ 9111-gf/b)
2019/02/10(日) 13:26:46.13ID:BFbUXkOH032デフォルトの名無しさん (ワッチョイ e188-drk2)
2019/02/10(日) 13:31:40.65ID:adWOvpgi0 >>31
出来た。 なんだかなあ、、、w
出来た。 なんだかなあ、、、w
33デフォルトの名無しさん (ワッチョイ e188-drk2)
2019/02/10(日) 13:44:31.83ID:adWOvpgi0 >>24
いろいろ試してみてわかりました
もともと、エクセルのマクロで
y = Selection.Row + Selection.Rows.Count - 1
x = Selection.Column + Selection.Columns.Count - 1
と書いていたものをjsでそのままやったら動かないので、
sheet.Selectionとしたり、book.Selectionとしたりいろいろと試したのですが、
Appliction.Selectionだったんですね
x = book.Application.Selection.Row + book.Application.Selection.Rows.Count - 1
とすれは、jsでもvbsでも両方で動きました
実際は、
Set selected = book.Application.Selection
と一旦とってからの方がやりやすいですね。ありがとうございました
いろいろ試してみてわかりました
もともと、エクセルのマクロで
y = Selection.Row + Selection.Rows.Count - 1
x = Selection.Column + Selection.Columns.Count - 1
と書いていたものをjsでそのままやったら動かないので、
sheet.Selectionとしたり、book.Selectionとしたりいろいろと試したのですが、
Appliction.Selectionだったんですね
x = book.Application.Selection.Row + book.Application.Selection.Rows.Count - 1
とすれは、jsでもvbsでも両方で動きました
実際は、
Set selected = book.Application.Selection
と一旦とってからの方がやりやすいですね。ありがとうございました
34デフォルトの名無しさん (ワッチョイ e188-drk2)
2019/02/10(日) 15:20:48.09ID:adWOvpgi035デフォルトの名無しさん (ワッチョイ a98e-Gewk)
2019/02/10(日) 15:55:33.83ID:hManQYIw036デフォルトの名無しさん (ワッチョイ 911f-Q5xa)
2019/02/10(日) 16:05:34.34ID:ZjJO7g3i0 >>6
だれかこれ分かる人おらん?
だれかこれ分かる人おらん?
37デフォルトの名無しさん (ワッチョイ 0201-3tWi)
2019/02/10(日) 16:25:54.76ID:vOpxNkmL038デフォルトの名無しさん (ワッチョイ 868c-RyKv)
2019/02/10(日) 18:24:50.29ID:kyKghR0l0 C#わからんから無責任発言するけどC++でdll作りゃ問題ないならそうすれば?
39デフォルトの名無しさん (ドコグロ MM09-/S9r)
2019/02/10(日) 18:46:31.86ID:96GWWqq3M C++で橋渡しするならC++/CLIでできるね
でもそんな面倒なことをするより普通にexe作るかpowershell書くかして別プロセスとして呼べばいいよ
データの受け渡しはコマンドライン引数なり標準入出力なりを使えばよい
でもそんな面倒なことをするより普通にexe作るかpowershell書くかして別プロセスとして呼べばいいよ
データの受け渡しはコマンドライン引数なり標準入出力なりを使えばよい
40デフォルトの名無しさん (ワッチョイ 0201-3tWi)
2019/02/10(日) 19:52:43.32ID:vOpxNkmL0 なんでより面倒な方法をドヤ顔で書いてるんだよ w
C#で書いてちゃんと設定すりゃインテリセンスも効くというのにコマンドラインとかありえねー
C#で書いてちゃんと設定すりゃインテリセンスも効くというのにコマンドラインとかありえねー
41デフォルトの名無しさん (アウアウウー Sa05-BKX2)
2019/02/10(日) 20:43:54.86ID:fHWqGmK3a42デフォルトの名無しさん (ワッチョイ 868c-RyKv)
2019/02/10(日) 21:28:15.49ID:kyKghR0l043デフォルトの名無しさん (ワッチョイ aeda-OF6d)
2019/02/11(月) 02:36:20.89ID:QZQ3TitU0 >>5
はるか昔に似たようなことやろうとしたが断念して↓で落ち着いた
MsgBox "Err." & err.Number & " " & err.Description, vbCritical, "モジュール名"
はるか昔に似たようなことやろうとしたが断念して↓で落ち着いた
MsgBox "Err." & err.Number & " " & err.Description, vbCritical, "モジュール名"
44デフォルトの名無しさん (ワッチョイ 911f-Q5xa)
2019/02/11(月) 14:06:13.76ID:2OxsMAwm0 >>37
やっぱ直接は無理か。管理者権限とかCOM経由しか無理なら諦めます。
やっぱ直接は無理か。管理者権限とかCOM経由しか無理なら諦めます。
45デフォルトの名無しさん (ワッチョイ 911f-Q5xa)
2019/02/11(月) 14:07:58.69ID:2OxsMAwm0 >>41
直接は無理そうなんで諦めます。
直接は無理そうなんで諦めます。
46デフォルトの名無しさん (JP 0H16-KbRv)
2019/02/11(月) 15:17:21.04ID:PhhkhwtYH >>5
CodeModuleプロパティでなんかできそうだけど使ったことないからわかんね
CodeModuleプロパティでなんかできそうだけど使ったことないからわかんね
47デフォルトの名無しさん (ワッチョイ a969-z8kj)
2019/02/11(月) 17:58:03.71ID:fFRcOW+J0 エクセルのシートやセルのオブジェクトにどんなメソッドやプロパティがあるのか見れるところないですか
48デフォルトの名無しさん (アウウィフ FF05-DOJB)
2019/02/11(月) 18:04:33.43ID:itY+kGJRF■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 自民・麻生太郎 副総裁 石破政権の1年は「どよーん」 高市政権の発足で「何となく明るくなった」「世の中のことが決まり動いている」 [Hitzeschleier★]
- JA全農が「新おこめ券」…来年9月末の有効期限を新設、必要経費のみ上乗せ [蚤の市★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 【27歳会社員】「自慰行為に使うために」コインランドリーの乾燥機から24歳女性の下着など計11点(時価8万2080円相当)盗んだ疑い [nita★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- 東京都「都民の税金1.5兆円が国に奪われている」「全国に分配されている」に地方民ブチギレ [Hitzeschleier★]
- 麻生太郎が石破政権の1年を酷評「どよーんとして何も動かない感じだったな。それに引き換え高市政権は物事が動いている」 [597533159]
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★3
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★4
- 【速報】室井佑月、米山隆一との離婚を決意wwwwwwwwwwwwwwwwwwww [802034645]
- 官僚「台湾有事についての質問か、『政府として逐一答えない』と…(カタカタカタ)」高市「私1人で答弁できるわよ!」 [972432215]
- 【朗報】 「ネット流行語100」に俺たちの『機動戦士Gundam GQuuuuuuX』&『シイコ・スガイ』キタ━━━━━━(゚∀゚)━━━━━━!!!!! [303493227]
