Excel VBA 質問スレ Part64

■ このスレッドは過去ログ倉庫に格納されています
2019/12/02(月) 23:43:54.18ID:ngrqyTy20
!extend:checked:vvvvv:1000:512

ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

※前スレ
Excel VBA 質問スレ Part63
https://mevius.5ch.net/test/read.cgi/tech/1568630099/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2デフォルトの名無しさん (ドコグロ MM1d-w5bQ)
垢版 |
2019/12/03(火) 00:17:07.29ID:C8UnG3E4M
>>1
MSgbox "乙"
2019/12/03(火) 06:50:45.90ID:EPisquqd0
北海道のグラサンのハゲはここにこないのー?
4デフォルトの名無しさん (ササクッテロラ Sp79-SL5O)
垢版 |
2019/12/03(火) 07:23:30.55ID:0rVoayhJp
前レスナンバー999

なんとなくわかるけど
a = msgbox 文字列

これならmsgboxが戻り値とわかるが
cells.border()

これはborderの戻り値が〜じゃなくてcellsの戻り値がボーダーに入ってんじゃないの?
関係図を教えて
2019/12/03(火) 09:16:21.04ID:9IKqMgsD0
>>4
じゃないの
a = cells()
a.border()
って事なの
2019/12/03(火) 10:50:38.75ID:eFWYyMY/0
セルのボーダーのラインスタイルの戻り値にxlInsideHorizontalを入れようとしている。
2019/12/03(火) 16:53:00.11ID:HVSFa5J10
>>4
Cells(i, j).Borders(xlDiagonalDown).LineStyle = xlInsideHorizontal
↑色々省略されている。
↓なるべく略さずに書き直してみる。
Let Excel.Application.ActiveSheet.Cells(i,
j).Borders(xlDiagonalDown).LineStyle = xlInsideHorizontal
先頭の「Let」はステートメント(命令)で、「この行のコードの右辺の値を左辺に
代入してね」という命令になっている。
また、このコード例の場合、ピリオドの右に続く単語はすべて(たまたま)「プロパ
ティ」になっている。
だが、「ApplicationプロパティのActiveSheetプロパティ」だとか「Cellsプロパ
ティのBordersプロパティ」だとかいう語は成り立たない。
ExcelオブジェクトライブラリのApplicationプロパティにより、Applicationクラス
のインスタンス(Applicationオブジェクト)を参照(Get)
→ApplicationオブジェクトのActiveSheetプロパティにより、Worksheetクラスのイ
ンスタンス(WorkSheetオブジェクト)を参照(Get)
 →WorkSheetオブジェクトのCellsプロパティにより、Rangeクラスのインスタンス
(Rangeオブジェクト)を参照(Get)
  (Rangeオブジェクトのデフォルトプロパティの引数にi・jを指定し、Rangeクラ
スの別のインスタンス=Rangeオブジェクトを参照)
  →RangeオブジェクトのBordersプロパティにより、Bordersクラスのインスタン
ス(Bordersオブジェクト)を参照(Get)
   (Bordersオブジェクトのデフォルトプロパティの引数にxlDiagonalDownを指
定し、Borderクラスのインスタンス=Borderオブジェクトを参照)
   →BorderオブジェクトのLineStyleプロパティにxlInsideHorizontalを代入
(Let)してね(=LineStyleプロパティプロシージャの引数にxlInsideHorizontalを指
定して、LineStyleプロパティプロシージャを実行してね)。
2019/12/03(火) 16:57:39.86ID:eFWYyMY/0
>>7
多分、初心者は何言ってるかサッパリ分からんだろうなw
2019/12/03(火) 18:21:24.00ID:0X+RZN9Ra
>>8
そう・・・
>>4
「Cells.Borders」は
1.アクティブなWorksheetオブジェクトのCellsプロパティを参照(Get)
 →戻り値はRangeオブジェクト
2.RangeオブジェクトのBorders(Borderではない)プロパティを参照(Get)
 →戻り値はBordersオブジェクト
という表現。
Borders()の括弧の中にxlBordersIndex定数を指定した場合、
戻り値はBorderオブジェクトになる。

「いきなりプロパティからはじまるのはおかしい」と思うかもしれないが、それは>>7に書いたとおり色々と省略しているから。
2019/12/03(火) 18:47:20.18ID:0X+RZN9Ra
>>7
って、なんかめちゃくちゃ改行入っとる・・・

書き直し。
Let Excel.Application.ActiveSheet.Cells(i, j).Borders(xlDiagonalDown).LineStyle = xlInsideHorizontal

ExcelオブジェクトライブラリのApplicationプロパティにより、Applicationクラスのインスタンス(Applicationオブジェクト)を参照(Get)
→ApplicationオブジェクトのActiveSheetプロパティにより、Worksheetクラスのインスタンス(Worksheetオブジェクト)を参照(Get)
 →WorksheetオブジェクトのCellsプロパティにより、Rangeクラスのインスタンス(Rangeオブジェクト)を参照(Get)
  (Rangeオブジェクトのデフォルトプロパティの引数にi・jを指定し、Rangeクラスの別のインスタンス=Rangeオブジェクトを参照)
  →RangeオブジェクトのBordersプロパティにより、Bordersクラスのインスタンス(Bordersオブジェクト)を参照(Get)
   (Bordersオブジェクトのデフォルトプロパティの引数にxlDiagonalDownを指定し、Borderクラスのインスタンス=Borderオブジェクトを参照)
   →BorderオブジェクトのLineStyleプロパティにxlInsideHorizontalを代入(Let)してね(=LineStyleプロパティプロシージャの引数にxlInsideHorizontalを指定して、LineStyleプロパティプロシージャを実行してね)。
11デフォルトの名無しさん (ササクッテロラ Sp79-SL5O)
垢版 |
2019/12/03(火) 19:15:56.54ID:0rVoayhJp
>>10
インスタンスねぇ…
プログラム1ヶ月の人にわかると思う?荒らしか?
2019/12/03(火) 20:14:07.74ID:GoxUwlnv0
メソッドの引数は普通だけど、プロパティの引数って特別な呼び方ある?
よく考えたら他の言語にプロパティの引数って見たことないような
2019/12/03(火) 21:25:51.83ID:qY14OTyg0
>>11
それがわからんと理解できないよ
そもそも一般には聞き慣れないと言うだけでそんなに難しい概念じゃないし
2019/12/03(火) 22:00:54.56ID:Af3RUiJcx
>>12
インデクサの一種だろ
2019/12/03(火) 23:06:13.37ID:h3dlk8FC0
インスタンス?
VB.Netとかだと最初の1日目か2日目に学習することだとか言ったらまた荒れるんだろうなぁ
2019/12/03(火) 23:11:52.57ID:Af3RUiJcx
インスタンスとクラスが分からないとお話にならんわな
式で参照取得しているものが何なのかまるで分かってないってことだから
2019/12/04(水) 00:04:05.95ID:teYzVY+x0
上級者でもわかってないと思うけどな。
シートモジュールに書くと、エラー出た時に、どこで止まったか分からないから、
標準モジュール書け!とかさwww
2019/12/04(水) 07:44:27.63ID:95sMFvbJ0
そんな話じゃね―だろ。
Cells(1, 1)はA1セルを返す。

Cells(1, 1).Borders(xlDiagonalDown)はA1セルの右下がり斜め線の罫線を返す。

Cells(1, 1).Borders(xlDiagonalDown).LineStyleはA1セルの右下がり斜め線の罫線の線スタイルを返す。

Cells(1, 1).Borders(xlDiagonalDown).LineStyle = xlContinuousはA1セルの右下がり斜め線の罫線の線スタイルに直線を代入(設定)している。

初心者はこの程度の理解でOK。
2019/12/04(水) 07:45:37.52ID:95sMFvbJ0
>>17
それは上級者ではない。
2019/12/04(水) 07:49:29.48ID:k4fgFX/Ba
>>17
自分で作ってないだろ
2019/12/04(水) 12:58:07.59ID:pTwF3wZxd
クリップボードの文字を操作するのはdataobjectで可能らしいですが、
スクショ撮った後に任意の座標の画素値を自動で取得するのは不可能なのでしょうか?
また、やるとするとシートに画像貼り付け→画像をbmp保存→その画像をバイナリで読み込みという流れになってしまうのでしょうか?
2019/12/04(水) 13:01:40.27ID:T2HYa+hHx
>>18
返す
直線を代入
このあたりの表現の曖昧さでひっかかるかどうかが初心者に留まる人と上級者になれる人の違いってことだわな
2019/12/04(水) 14:05:40.23ID:95sMFvbJ0
>>21
スクショ取った後じゃないとダメなの?
別にスクショ取らなくても取得できるんだが。
勿論スクショ取った後に、そのスクショの任意座標の画素値も取得できる。
2019/12/04(水) 14:06:26.73ID:95sMFvbJ0
>>21
シートに画像貼り付けとか必要無い。
2019/12/04(水) 18:01:03.06ID:pTwF3wZxd
>>23
やりたいこととしては、囲碁やオセロなどのゲーム中に、盤面をリアルタイムにスクショ等をして、そこから各座標の色を読み込むことで盤面をデータ化するという流れなのですが、画像保存の手間を省けるのであれば教えて頂きたいです。
dataobjectだとgettextでテキストのクリップボードは読み込めるのですが、スクショだとできませんでした、、
2019/12/04(水) 20:05:12.18ID:RAKlTKsZ0
>>25
いちいちクリップボードにスクショを入れなくても、ゲーム画面のデバイスコンテキストがわかれば、自由にピクセルの色を調べたり、逆にピクセルを書き込んだりできる
http://excel.syogyoumujou.com/memorandum/get_dc.html
2019/12/04(水) 20:36:16.46ID:M9X3+qe90
>>26
デバイスコンテキストなるものがあるのですか、、知らない概念でした、、
スクショ取るのは余計なステップだったのですね。素人にはこの発想しかなかったです
難しそうでまだざっとみただけですが、画面の画像認識系の自動化はこのやり方が基本なのですかね。
ゆっくり読んでやってみます!ありがとうございます
2019/12/04(水) 20:46:11.63ID:M9X3+qe90
ちなみにスクショでも可能とありましたが、その際はdataobjectではなく同様にwin32apiの何かを使うことになるのでしょうか
2019/12/04(水) 21:17:45.91ID:le08Bijgx
gdiplus.dllを使う感じかな
2019/12/04(水) 21:46:06.48ID:z+3QCMVld
>>27
>>26のリンク先に殆ど書いてある。
指定座標のピクセル値を取得するなら他にGetPixelを使う。
ただ、こいつは遅い。
大量に取得するならgdiplus系のGetPixel使った方が速いけど、そこまでする必要は無いかと思う。
どっちにしてもこの辺が自在に扱えるなら間違いなく上級者だね。

>>29
>>26のリンク先の内容で行くならgdiplusじゃない。
2019/12/04(水) 21:57:16.24ID:M9X3+qe90
>>29>>30
ある程度の範囲の取得になると方針が変わるのですね、、
とりあえずまずはリンク先のやり方を勉強してみることにしてみます。
ご丁寧にありがとうございます。
2019/12/06(金) 08:56:17.67ID:jTNEW24Lx
VBAスレの方でも質問させていただいたのですが、こちらのスレにも詳しい方がいらっしゃるようなので、質問させてください

Exchange / Outtlook VBAの質問です
初歩的な質問で申し訳ありません

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

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

なお配布リスト、連絡先グループいずれも個人ユーザーのみが登録されている前提なので、再帰によるメンバー取得は不要な状況です
2019/12/06(金) 12:30:08.82ID:G0zfLpZEM
>>32
> 配布リストや連絡先グループをExchange ユーザーとして取得するところまでは出来ているのですが、そこから先がうまくいきません
その部分のコード貼れよ
2019/12/06(金) 18:27:30.78ID:c6fF/5cl0
yokokara
2019/12/06(金) 20:54:35.91ID:Nvs1NFCt0
>>32
先に質問した方でちゃんと断ったん?
2019/12/06(金) 21:19:32.34ID:CNjj6fiz0
outlookを使わなければならないような身の上には同情する
さすがに人少なそうだしいいんじゃないかな
俺はoutlook自体持ってないから良くわからないや。あれまだあるのか
2019/12/06(金) 21:25:37.04ID:I1is1QTTM
今のOutlookは使いやすくなってるよ
俺の中のOutlookは2000で止まってたから久々に使うことになってびっくりした
もはや別物
2019/12/06(金) 21:33:39.56ID:CNjj6fiz0
そうなのか?
大変そうだしoutlook入ってるし使ってみるか、と思ったらメールアドレスが必要なので諦めた
頑張って!
2019/12/06(金) 22:46:30.30ID:Nvs1NFCt0
2013時点ではまだ使いにくい…
40デフォルトの名無しさん (オッペケ Src1-paXL)
垢版 |
2019/12/08(日) 04:18:02.80ID:b513l43Er
正直メール関係でマクロは怖いな
ローカルでサーバ建ててテストするならともかくExchangeでいきなり本番環境でしょ?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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