Excel VBA 質問スレ Part59

■ このスレッドは過去ログ倉庫に格納されています
2019/02/09(土) 15:12:30.70ID:3lTArmdf0
!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
2019/02/09(土) 15:22:25.15ID:8WZyJ5B/0
ただし、VBAが何かわからないような馬鹿はお断りです
2019/02/09(土) 15:40:14.54ID:CKZ2Rs4GM
他の言語スレでは相手にされずここならマウント取れるだろうとやって来る馬鹿もお断りです
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 & このプロシージャ名
に変更したくなりました。
「このプロシージャ名」を書く方法ってあるのでしょうか?
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()
これを使うんですよね?
2019/02/09(土) 22:30:32.98ID:nXE2v5Lv0
そうやって作ったのって、やっぱ実行速度はC#並みになるのかな。
VBAレベルに落ちちゃうなら、VBAに翻訳しちゃうとか。
2019/02/09(土) 22:39:52.86ID:M8bBhNwV0
エクセルvba勉強始めてるんですけど
言語がなんかすきになれないです
オブジェクトを生成してそれを操作するってのばっかりにみえるんですが
それならいっそパイソンやら使いやすい言語でcomオブジェクトからエクセルを操作したほうがいいんでしょうか?
2019/02/10(日) 00:05:20.18ID:cpoaXViK0
要望2だけ反映させてました
https://www.axfc.net/u/3958630
変更点
乱数はマイナスも作成できるようになりました
文字シャッフル機能を追加しました
ケンブリッジのあれも取り入れてみました

要望1はいいと言うことなのでこれで終わりたいと思います。
スレ汚し失礼しました。
2019/02/10(日) 03:10:28.77ID:T8b1EA5w0
>>5
無かったと思うな…
あるとしても ThisModuleな感じか…
2019/02/10(日) 03:26:25.40ID:5I+kynYZ0
>>8
別の言語でエクセルの操作はおすすめできない
やるならワークブック/ワークシートオブジェクトなどを操作した方がいい
オブジェクトを操作するだけならわざわざ高いOfficeも買わなくていいし
2019/02/10(日) 03:36:45.00ID:cpoaXViK0
デバッグしてたらとまりませんね・・・
何個かバグつぶしたので上げなおします
https://www.axfc.net/u/3958695
13デフォルトの名無しさん (アウアウクー MM91-eF01)
垢版 |
2019/02/10(日) 08:29:51.15ID:nwYV/fdtM
なんかすみませんね。深夜睡眠をけずってまでやってらったようで、、。ツールありがとうございます。
あとはこちらでいただいたツールをベースに必要に応じてカスタマイズします。
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ならいろいろあるようですが
2019/02/10(日) 09:40:27.91ID:7rlN1EyT0
>>14
そこだけVBSにするとか。
2019/02/10(日) 09:54:47.81ID:px4mCHlG0
>>14
JScriptは良くわからんが・・Javaは結構したけど
見当違いなら申し訳ないが
既にExcelが起動していて、シート1が選択され
範囲が選択されている状況で、JScriptを動かしているんで良いですよね
2019/02/10(日) 10:14:14.92ID:px4mCHlG0
>>5
単にプロシージャ名の変数を宣言しておき
各プロシージャ実行時にプロシージャ名に名前をセットして実行
エラー表示でプロシージャ名の変数を表示するだけでは
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;

でいけるんじゃないかな
試してないから間違ってたらごめん
2019/02/10(日) 10:48:51.96ID:px4mCHlG0
>>8
昔は、メモリーの領域を分け合って使ってたけど
いまわ全てオブジェクトと思え
エクセルは色々このオブジェクトの使い方が説明されていて
機能も多い
いやならすべて作ればとなるが、所詮何も出来ないだろ
2019/02/10(日) 10:52:53.82ID:px4mCHlG0
>>17
これは間違いだな、サブルーチンから戻った時を考えてない
サブルーチンでは、元の名前を保存しておき元に戻す処理が必要になるが
こんなの今時やらないな
2019/02/10(日) 10:57:18.71ID:px4mCHlG0
したがって、プロシージャ名は配列で宣言し、サブルーチンの時の処理が必要になるが
これは、システムが管理しているのを使うべきだな、すまない
2019/02/10(日) 11:29:32.47ID:adWOvpgi0
>>18
ありがとうございます!

それで動きました。 どこでそういうのは調べるのでしょうか。 なかなかググってもわかりません

>>15
最初にJScriptを始めたとき、ネットでJScriptの方が初心者向けにエクセルの操作とかわかりやすい記述が
見つかったので、JScriptを始めたのですが、VBSだと、VBAとぼとんど同じプロパティで同じことができますか?
そうなら、VBSに移ろうかな
2019/02/10(日) 12:19:38.78ID:px4mCHlG0
まあなんだな、質問して回答を実行してできたことが答えじゃなくて
何故できなくて、何で出来たのが答えなんだけどな
2019/02/10(日) 12:35:46.47ID:YUFMtInCx
>>22
今回の質問はエクセルのオブジェクトモデルに忠実に従えば解決するものだよ
VBS含め他のどんな言語を選択しようが、そのあたりの事情は変わらない

具体的には、今回はSelectionへのアクセス方法がおかしかったわけで、
MSDNリファレンスのプロパティ一覧を見たり、VBEのオブジェクトブラウザでプロパティを検索したりすれば、
Worksheetオブジェクトには現在の選択範囲へのアクセスを提供するSelectionプロパティがないことや、
SelectionプロパティはApplicationオブジェクトのメンバとして実装されていることが分かる
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況