Excel VBA 質問スレ Part48 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 6f8e-Fc1g)
垢版 |
2017/05/16(火) 08:24:45.78ID:iIGA/64l0
!extend:checked:vvvvv:1000:512

スレ立ての際は一行目に
!extend:checked:vvvvv:1000:512
と入れてスレ立てして下さい

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

※前スレ
Excel VBA 質問スレ Part47 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1489557874/

※関連スレ
VBAなんでも質問スレ Part2
http://echo.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://echo.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 125
http://echo.2ch.net/test/read.cgi/bsoft/1481369538/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2017/06/04(日) 12:55:28.25ID:NZhuuX9z0
>>487
シートにあるやつを一回配列かコレクションか(俺はやらないけどレコードセットでもいい)にクラスん中でまとめるのよ
メインコードにリストに入れる処理入れるとごちゃごちゃするからさ
2017/06/04(日) 13:22:31.55ID:tlzlLDo0x
>>488
レスありがとう
なるほどね
複数のレコードに対して同じ処理を繰り返す必要がある場合には便利そう
2017/06/04(日) 17:48:58.65ID:1s3T2QVw0
>>484
全然ちがう。
win32API使って別スレッド作る方法はあるし可能だよ。
けどExcelVBAでそれをやると物凄い不安定になる。
自分が試した感触ではRangeとかCellとかのExcelのオブジェクト触った瞬間にExcelごと落ちる感じ。

じゃあ、Excelのオブジェクト触らずに計算する所だけなら良いかというと、動く場合もあるけど複雑なものになると処理が間に合わなくて落ちるらしい。

基本、やめた方が良い。
2017/06/05(月) 01:20:19.17ID:oPyz6kCkd
別処理をWord使って処理させようとしてもOffice全体で連携かかってるみたいでうまくいかなかったことがある
変なとこで作り込まれていてやりたいようにできないんだよな
2017/06/05(月) 08:37:00.53ID:nJSdLO+iM
元々マルチスレッドに対応してないものを無理矢理動かそうとして文句言われてもなぁ...
2017/06/05(月) 08:43:10.54ID:+xVCJOY00
文句じゃなくね
2017/06/05(月) 08:55:26.49ID:btJTHdak0
想定外の使い方ができないぞ!ってのは文句じゃないのか
2017/06/05(月) 09:24:51.60ID:Sx3XxldLd
>>490
ほほ同じ経験がある。
自分の場合は処理が終了したデータをDBにINSERTするところは上手くマルチスレッド化できた。
待ち合わせが必要ないパターンだったし。

COMそのものがマルチスレッドだめなんかね?
2017/06/05(月) 11:01:11.07ID:bwrXOc4qH
>>490
> 自分が試した感触ではRangeとかCellとかのExcelのオブジェクト触った瞬間にExcelごと落ちる感じ。
それGUIアプリの常識。
全然関係ないスレッドからUIスレッド管理下のものに触ってはいけない。
https://ja.wikipedia.org/wiki/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%82%A4%E3%82%B9%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89
2017/06/05(月) 11:54:25.53ID:Sx3XxldLd
>>496
プライマリスレッドからでもダメなこと多かったよ。
2017/06/05(月) 11:59:36.00ID:bwrXOc4qH
>>497
> プライマリスレッドからでもダメなこと多かったよ。
どの言語で?
2017/06/05(月) 12:54:03.39ID:cR57/ADJM
>>495
> COMそのものがマルチスレッドだめなんかね?
COM 自体はアパートメントモデルをちゃんと設定すればマルチスレッドでも動く
http://eternalwindows.jp/com/apartment/apartment01.html
個々のオブジェクトが正しく動作するかどうかはまた別の話
500デフォルトの名無しさん (ササクッテロラ Sp3d-mjoq)
垢版 |
2017/06/05(月) 23:38:18.98ID:bd1ggU41p
マクロを作成は通常MODULEですが、
Sheet1やThisworkbookに記入するのはどういうときでしょうか。済みません。
2017/06/06(火) 00:15:48.16ID:d6CS0Xy90
なんでVBAでマルチスレッドにするの
2017/06/06(火) 04:12:26.65ID:NdFOOmMr0
>>501
要望として有るのは待ち状態の時に先に進めるためとか。

ダイアログの中には何らかの操作をしてダイアログ自体を閉じさせないと次のステップに行かない物がある。
そういう時に別スレッドで無限ループ中でそのダイアログが見つかったら操作する処理を動かしてからダイアログ表示させるとか。

例えばメッセージボックス表示させるんだけど10秒間ボタンが押されなかったらキャンセルするとか。

こういうのは上手く書くと動く。

他にも複数の関連しない計算に時間がかかっている時に単純に速度アップのために使いたいと思うかもしれない。

でも動いても趣味のプログラム以外じゃ危なっかしくて使えない。
マルチプロセスで代替えできるものも多いから無理する必要もない。
2017/06/06(火) 04:20:46.72ID:LBKXQv4G0
>>500

>Sheet1
そのシートをActiveにした時の処理、DeActivateにする時の処理、あるいは
特定のセルにデータを入れた時の処理 etc

>Thisworkbook

ブックの起動時や終了時にDBとの接続処理や切断処理を入れてる
2017/06/06(火) 07:54:06.29ID:xLIl+dL/0
sheetやbookに書くのはそのオブジェクトのイベント
使い捨ての整形マクロなんかはsheetに書いてもいいけど、標準モジュールに書いたほうベター
2017/06/06(火) 09:05:13.69ID:YhE+Nuz8x
>>500
シートやブックのイベントを使用するためだよ
2017/06/06(火) 20:09:22.46ID:Uy4z/eLw0
vlookup等を使用しているとソルバーが使えないらしいのでVBAで作ろうと思っていますが、定番というか定石というか、参考になるサイトややり方等はありますか?
言ってて抽象的だなとは思ってはいますが、どうすべきなのか判らず…よろしくお願いします。
2017/06/06(火) 21:53:22.27ID:efHThVDq0
>>500
Thisworkbook.Worksheets(Activesheet.Name).Cells(1,1).Value=1
って書くのが面倒くさくて、
Me.Cells(1,1).Value=1
って書きたい時とか。

Me.も要らねえだろって?
何らかの理由でActivesheetが変わっちゃったら嫌じゃないですか?
508デフォルトの名無しさん (ササクッテロラ Sp3d-mjoq)
垢版 |
2017/06/06(火) 21:56:25.64ID:vXDpJbBwp
教えてください。

マクロでハイパーリンクを実行したいのですが、セルにリンクを貼る必要がない、ただマクロから実行するだけというとき、どう書けば良いのでしょうか。
2017/06/06(火) 22:06:15.37ID:XIE7cY+50
>>508
これ?

Sub foo()
ThisWorkbook.FollowHyperlink "http://www.google.co.jp/";
End Sub
2017/06/06(火) 22:14:17.43ID:efHThVDq0
そっち?

ハイパーリンクじゃなきゃダメなのか、
飛べば何でもいいのか。

Dim Ie As InternetExplorer
Set Ie = CreateObject("InternetExplorer.Application")
Ie.Visible = True
Ie.Navigate "http://www.google.co.jp/";
2017/06/06(火) 22:21:53.88ID:efHThVDq0
↑Microsoft Internet Controlsを参照設定しないとだめだわ。
2017/06/06(火) 22:53:35.96ID:xLIl+dL/0
>>510
IEではなく、chromeインスタンスを作ることって出来ますか?
2017/06/06(火) 23:09:15.48ID:NPrNQzK4x
Dim objShell as Object
Set objShell = CreateObject(“WScript.Shell”)
GC.Run (“chrome.exe -url ” & アクセスしたいページのアドレス)
2017/06/06(火) 23:10:19.79ID:NPrNQzK4x
間違えたので

Dim objShell as Object
Set objShell = CreateObject(“WScript.Shell”)
objShell.Run (“chrome.exe -url ” & アクセスしたいページのアドレス)
2017/06/07(水) 00:14:23.17ID:iB9NoSxCd
>>507
activesheetがどこだろうとsheetモジュールに書いてんなら関係なかんべ

sheetオブジェクトまで省略できる手抜きコードで済ますのにたまに使ってるわ
あとsheetをコンフィグ書いとくのに使ってるときにプロパティ的な関数を置いといたりな
あまり行儀よくはない自覚はある
2017/06/07(水) 01:08:40.19ID:0NeAqWbNM
>>506
詳しくはないけど、VBAでやるものじゃない印象。
Excelのソルバーで収束するように数式を書き換えるか、他の言語やツールを使うのがいいんじゃないかなあ。
「ソルバー アルゴリズム」でググれば色々手段が出てくるよ。
517デフォルトの名無しさん (ワッチョイ 7d6d-28Zt)
垢版 |
2017/06/08(木) 01:09:56.48ID:eFwaOcHQ0
あるサイトのスクロールバーを一番下まで下げて
キャプチャしてシートに貼り付けてトリミング。
同じページにあるフレーム内のスクロールバーを下まで下げて
キャプチャしてシートに貼り付けてトリミング。ってのを
3ページ分位繰り返し行いたいのですが
http://www.vba-ie.net/ie/iescroll.html
この辺とか見てるんですがヒントください
2017/06/08(木) 05:16:07.28ID:1DKX/Vru0
>>517
なんでこんなヘンテコなことしなきゃならんの?
JavaScriptなんて必要無いぞ。
と思ったけど、ちょっと調べてみるとJavaScriptでスクロールしてる例が多いな。
今、試す環境が無いから何とも言えないな。

DOMの勉強するよろし。
2017/06/08(木) 07:40:44.87ID:fJC45ZIB0
>>517
パット見たけどかなりめんどくさそう
キーボードマクロの方が良いと思う
2017/06/08(木) 15:33:04.11ID:1DKX/Vru0
>>519
キーボードマクロは危険だよ。
動いてる最中にマウスクリックとかすると場合により大変なことになる。

操作は難しくないけどキャプチャをどうするかで難しくなるかも。
自分だったら難しい方法を選択するので。
2017/06/08(木) 20:37:38.86ID:HogApBmCa
VBA初心者です
For Nextループのカウンタ変数について質問です

1) データの最終行を取得
  カウンタ変数の初期値 2、終了値をデータの最終行に設定(仮に11とします)
2) For Nextループで処理
3) ループ終了後、A11セルの値を変数に代入したい

  For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
処理
Next
★変数 = Cells(i, 1).Value

★For Nextループを抜けた直後のカウンタ変数iは、データの最終行(i=11)のはずなので、
そのままCellsプロパティに代入すればA11セルの値を取得できると考えたのですが、
ループ終了時にカウンタ変数iが終了値に+1されて12になってしまいます

「For Nextループ終了後のカウンタ変数iは終了値+1になる」
というのは仕様なのでしょうか?
522デフォルトの名無しさん (ワッチョイ dd8b-Loth)
垢版 |
2017/06/08(木) 20:40:46.12ID:TyBSFeDZ0
仕様ではないけど現実はそうなる
2017/06/08(木) 20:45:04.87ID:xavUYSpk0
ループ変数が指定の範囲を「越えたら」ループを終了する、というのがForの仕様
2017/06/08(木) 20:46:19.32ID:x3QO3rgpx
>>521
xlupの値を使えばいいでしょ
525デフォルトの名無しさん (ワッチョイ dd8b-Loth)
垢版 |
2017/06/08(木) 20:46:39.16ID:TyBSFeDZ0
ループ変数が指定の範囲の「間」ループを繰替えす、というのがForの仕様
2017/06/08(木) 20:53:59.27ID:ajpliBtkx
>>522
仕様だよ
For Nextはカウンタ変数の値が引数endを超過した(または引数endの値未満になった)と判断したときにループ終了になる
Step1でループさせた場合、カウンタ変数がend+1の値になったときに次の処理に移るので、ループを抜けた後のカウンタ変数は当然end+1になる
2017/06/08(木) 20:55:48.28ID:HogApBmCa
お答えありがとうございます

>>523,525-526さんがおっしゃってるようなことかなー、と思ったのですが
カウンタ変数は終了値を維持するという謎の思い込みがあったので
詳しい方々にきちんと教えていただけて有り難いです

>>524
ごり押しでi=i-1とするつもりでしたが断然スマートですね
というか、最終行取得のCells(Rows.Count, 1).End(xlUp).Rowも定型文のように覚えていたので、
きちんと構文の意味と動作を調べ直します
2017/06/08(木) 20:59:19.38ID:x3QO3rgpx
>>527
へっ
良いってことよ!
達者でな
2017/06/08(木) 21:43:39.15ID:ZLqPeRaK0
i = 1
Do While i <= 11
i = i + 1
Loop

みたいなもんだね。
あと言語によってはループ変数(i)がfor文の中だけのスコープで
for文を抜けたら破棄されたりするから、ループ変数はループの中だけで
使う癖をつけておいた方が無難。
2017/06/08(木) 21:44:40.10ID:/ZCsTOrv0
別ブックのデータを自動で取り込むプログラムを書いていて思うんだけど、
そういうのが簡単に出来るクラスとかないの?
2017/06/08(木) 21:47:25.81ID:XdC3vCwF0
>>530
Workbooks.Open
2017/06/08(木) 21:52:58.35ID:ZLqPeRaK0
>>517
こんな感じかな?
出来るかはわかんないけど。

IEインスタンスを生成する
IEを表示する
IEにURLを送る
IEの表示を待つ
IEのページにフォーカスする
sendkeysで一番下までスクロールする
sendkeysでPrintScreen
0.1秒位待つ
シートに貼り付けてトリミングする
IEのiframeにフォーカスする
sendkeysで一番下までスクロールする
sendkeysでPrintScreen
0.1秒位待つ
シートに貼り付けてトリミングする
以下ループ

キーマクロは俺も考えたけど、エクセルの操作が融通ききにくそう。
UWSCとか使えばいいかもしれないけど、結局VBAで書くのと大差なくなる気がする。
2017/06/08(木) 22:01:50.62ID:/ZCsTOrv0
>>531
そうだけどさ、
自身のファイルを開いてないか?
開いたファイルにフィルタがかかってないか?
開こうとしているファイルは既に開いてないか?
xlsかcsvか?
って、色々チェックするの面倒じゃん。
2017/06/08(木) 22:16:37.58ID:fJC45ZIB0
作ればいいんじゃないの
2017/06/08(木) 22:40:42.97ID:XdC3vCwF0
>>533
Function foo1(FilePath As String) As Workbook
For Each x In Workbooks
If x.FullName = FilePath Then Set foo1 = x: Exit For
Next
If foo1 Is Nothing Then Set foo1 = Workbooks.Open(FilePath)
End Function

Function foo2(WS As Workbook, SheetName As String) As Worksheet
For Each x In WS.Worksheets
If x.Name Like SheetName Then Set foo2 = x: Exit For
Next
If Not foo2 Is Nothing Then foo2.AutoFilterMode = False
End Function

こんなんだろ。大した手間でもないと思うんだけど。
俺はモジュール一個にワークブック、ワークシート、セルの各種チェック含めた操作関係まとめてたけど、
二十個くらいにしかならなかったぞ。
536デフォルトの名無しさん (ワッチョイ dd8b-Kuea)
垢版 |
2017/06/08(木) 23:01:17.07ID:TyBSFeDZ0
>>535
まあそんなもんなら大した手間じゃないよな
それじゃ全然ダメだけど禿
2017/06/08(木) 23:08:59.28ID:fJC45ZIB0
Function foo1(FilePath As String) As Workbook
on error resume next
この魔法の一行で全て解決
2017/06/08(木) 23:28:03.30ID:XdC3vCwF0
On Errorだと原因が分からないからなぁ。
単純なマクロならそれでもいいんだけど。
2017/06/08(木) 23:37:56.75ID:ZLqPeRaK0
>>535
> If x.FullName = FilePath Then Set foo1 = x: Exit For
これ通るのか…知らなかった…
2017/06/08(木) 23:41:02.10ID:q8X0hO01M
application.runをaccessから呼んだんだけど、
activateしないと失敗してしまう。

あと、マクロを保持してるブックを開いてマクロを実行すると処理中はブックを触れないが、accessから呼ぶと触れてしまう。

おかげで処理に失敗するので、何とかならないだろうか。
2017/06/08(木) 23:47:27.35ID:XdC3vCwF0
>>539
コロンが改行の代わりになるから、コロンで区切りさえすればだいたいのものは通るぞ。

>>540
ExcelからAccessを触るようにしよう。
AccessからExcel触るのは管理がくっそ面倒だから(バージョンによるかもしれないが)
修飾付きのエクセルファイル出力がしたいとかでない限りやめた方がいい。

あとはExcelで直接DBを開いてSQLで制御するという地獄の選択肢もあるぞ。
2017/06/09(金) 03:33:36.27ID:Vt79/8Sl0
アクセル
2017/06/09(金) 04:45:48.88ID:e02rbmqe0
>>532
キーマクロもSendkeysもやめた方が良い。
Sendkeys等は宛先を指定しない。
VBA動作中でもアクティブウィンドウは操作で変更出来る。

IEのスクロールはページ表示後もDOMで出来る。

'1ページ高さ
lngPH=objIE.Document.DocumentElement.ClientHeight

'サイト高さ
lngBH=objIE.Document.Body.ScrollHeight

'1ページスクロール
objIE.DocumentParentWindow.ScrollTo 0, lngPH
2017/06/09(金) 07:54:37.94ID:SNIZYBKJM
>>542
なんかふと笑った
2017/06/09(金) 11:39:02.72ID:MW/jqskx0
excelで直接DBに接続してSQLの何が地獄なんだろう…
2017/06/09(金) 12:02:22.23ID:KaOScHzEx
>>545
説明できるほうに100億ドル










ただしジンバブエの
2017/06/09(金) 12:08:37.61ID:6C6XVn6H0
>>545
Accessと文法が違う
使えない命令がある
エラーが返ってこない
データ型の指定が出来ない

過去スレとかで何度も出たけど、だいたいこの辺の理由で地獄
2017/06/09(金) 12:17:15.07ID:lNiKtgPwM
>>546
ジンバブエドルってもう回収済みだから割と価値高いよな
2017/06/09(金) 12:23:12.97ID:6C6XVn6H0
今の1ジンバブエドル=0.3円らしいから、100億ジンバブエドル=30億円かな
2017/06/09(金) 12:48:37.15ID:8EXeePojM
>>541
access起点で作ってるらもう駄目だー。
551デフォルトの名無しさん (ブーイモ MMa9-+CHm)
垢版 |
2017/06/09(金) 12:52:52.49ID:jWLsfRM+M
素人にVBAを教えるとき
いきなりRange()とするんじゃなく

Workbooks("うんたら")〜.RangeやCells
と、ちゃんと上位層の指定を書くんよ!

って最初から教えるべき?
それとも慣れてから教えるべき?
2017/06/09(金) 14:03:55.81ID:DLo2rfbX0
>>551

>>466 のようなエラーがあるから
Cells Rangeの前には必ず上位層を指定する癖を 付けさせた方がいいと俺は思う

手を抜いて省略するのは慣れてからでもいいんじゃね?
2017/06/09(金) 14:16:07.35ID:ehLmIvolH
>>552
普通に、「シートモジュールから自分のシートを参照するときは不要、それ以外は必要」と教えれば?
2017/06/09(金) 14:20:33.43ID:6C6XVn6H0
>>551
べったり張り付いてられるなら失敗してから教える方がいい。
PC教室みたいに一過性の教育なら省略しない書き方で覚えさせた方がいい。
2017/06/09(金) 14:43:26.16ID:DLo2rfbX0
>>553
アンカミスなのか 俺宛てなのか分らが・・・

シートモジュールの場合 省略していいよじゃなくて 自分自身を示すMeを使って
Me.Range(・・・・) と教えた方が良いと思うんだけど
2017/06/09(金) 14:48:22.03ID:LCUpZwW2a
>>533
fso使って自分で作りゃいいじゃん
難しくないでしょ
2017/06/09(金) 14:50:28.52ID:LCUpZwW2a
>>551
同時に教える
動かして動かせたらなんでか、というふうに
2017/06/09(金) 14:56:10.12ID:ehLmIvolH
>>555
> Cells Rangeの前には必ず上位層を指定する癖を 付けさせた方がいいと俺は思う
に対する俺の意見なんで、アンカーは間違ってないよ。

> Me.Range(・・・・) と教えた方が良いと思うんだけど
これにも反対。
MSが言うように、実引数のときのみ使う方がわかりやすい。
https://msdn.microsoft.com/ja-jp/library/office/gg251792(v=office.15).aspx
そうしないとMeだらけになる。
2017/06/09(金) 15:00:45.88ID:DLo2rfbX0
>>558
あい分った
きみの主張を否定するつもりはないよ
でも俺の主張は >>552 で変えるつもりはない

これにて終了
2017/06/09(金) 15:05:08.05ID:6C6XVn6H0
Range(Cells,Cells)の教え方が本題じゃないし、
かといってエラーの網羅なんか現実的じゃないしで、
本題に沿わない意見ってだけだからな。

そもそも同じ話してないから否定も何も話し合いにならないぞ。
2017/06/09(金) 15:16:13.50ID:ehLmIvolH
>>559
まぁ、俺は全力で君の意見を否定するけどね。
2017/06/09(金) 16:06:32.05ID:Vt79/8Sl0
これにて終了
2017/06/09(金) 19:01:42.64ID:8JxPJdKv0
>>551
慣れてからは省略することが無くなった。そんなしょーもないとこで手を抜くとミスする確率が跳ね上がる
その分setは多用するけどね

set 集計シート = sheets("total")
集計シート.cells(1,1)
564デフォルトの名無しさん (ワッチョイ dd8b-Loth)
垢版 |
2017/06/09(金) 21:53:45.20ID:yARYpVIR0
>>563
sheetsは省略しとるけどええんかこれで?
2017/06/09(金) 21:53:49.39ID:Vt79/8Sl0
Set 集計シート = Sheets("Total")
集計シート.Cells(1, 1)
2017/06/09(金) 22:01:02.57ID:8JxPJdKv0
>>564
自分の信じた道を進めばいい
もし君の不注意が多いなら、いつか俺と同じ表記になる
sheetを書こうが書くまいが絶対にミスしないなら、sheetはずっと書かないのだろう
それはそれでいいことだと思う
567デフォルトの名無しさん (ワッチョイ dd8b-Loth)
垢版 |
2017/06/09(金) 22:04:36.45ID:yARYpVIR0
>>566
あいやーw伝わらんかなw
(デフォルトのワークブック.)sheets()
という表記になってるけどそれはええんか?
という意味やでw
2017/06/09(金) 22:12:56.26ID:8JxPJdKv0
>>567
/(^o^)\
単独ブックならbook名は省略するかな
単独シートでマクロを使う場合は省略はしない。拡張した時に大抵必要になるし、そのパターンが多い

で、複数のブックを使う場合は必ずsetする
set 設定シート = thisworkbook.sheets("設定シート")
set 転記元ブック = workbooks.open("転記元ブック")
set 転記元シート = workbooks.open("転記元ブック").sheets("転記元シート")
set 転記先シート = workbooks.open("転記先ブック").sheets("転記先シート")

大体こんな感じでsetしてから使うかな
俺の癖で、設定はマクロファイルに入れるので、thisworkbookだけはそのまま使う事が多い
569デフォルトの名無しさん (ワッチョイ 250d-kOr2)
垢版 |
2017/06/09(金) 22:15:20.46ID:dxrWbrOn0
worksheetsをsheetsと略してるのはどうなの?ってことだろ
2017/06/09(金) 22:21:42.71ID:8JxPJdKv0
>>569
グラフシートやマクロ4..0シートを使うなら問題かもしれないね
俺は使わないからどうでもいいけど
2017/06/09(金) 22:24:19.15ID:w6iYvsph0
面白いな。
そんな書き方あったのかよっていう例が色々。

でも、Openしたブックを直接セットしちゃったら、
ReadOnlyとかできるの?
2017/06/09(金) 22:26:44.97ID:e02rbmqe0
必ずBookも省略しない。
慣れだね。
気分でSetもWithも使わずに物凄い長い文を書くこともある。
ー度動かしてから修正するけどね。
2017/06/09(金) 22:28:37.54ID:8JxPJdKv0
>>571
https://msdn.microsoft.com/ja-jp/library/office/ff194819.aspx
3つめの引数で設定できるよ
Workbooks.Open(path,,true)
多分これで読み取り専用になる(はず)
2017/06/09(金) 22:30:26.13ID:e02rbmqe0
>>571
Open時に引き数として与えればOK
2017/06/10(土) 09:26:47.69ID:+HgNy1AT0
単独ブックで使うときだってブックは省略しない方がいいに決まってるだろ
ユーザーがどんな使い方するかなんてこっちで管理できないんだから
そもそも大した手間じゃねえし
576551 (ブーイモ MMa9-+CHm)
垢版 |
2017/06/10(土) 10:06:36.80ID:0yj13WovM
やはり、最後にはちゃんと指定を教えることにはなりますよね。

とりあえず、プログラミングが簡単って感じで入れればいいかなと思って
最初から細かく行くと嫌になってしまわないか?というところで悩むところ、、、
でも、全部上位から書くって別に複雑では無いんよね、、、
2017/06/10(土) 10:17:23.18ID:WC+0mLwsx
RangeとかCellsとか使うコードを書かせることは、コード量が少なくなるから一見エクセルマクロやプログラミングの初学者向きに見えるが、後々オブジェクトモデル理解の妨げになる
2017/06/10(土) 10:53:33.63ID:fc8/KSyR0
>>577
は?
自称上級者様はExcelVBAなのにシート使わないの?
579551 (ブーイモ MMa9-+CHm)
垢版 |
2017/06/10(土) 10:55:41.58ID:0yj13WovM
コード量のために
withやsetを教えるとまた最初に覚えないといけないことが増えるし。
インデントも教えないといけなくて、、、

悩む、、
2017/06/10(土) 11:32:19.99ID:1OFjIP+40
>>579
With はともかく Set はおまじないレベルでもいいので教えておくべきだ思う
2017/06/10(土) 11:34:39.43ID:WC+0mLwsx
>>578
基底クラスのRange、Cellsは使わない、という意味だよ
RangeクラスやCellsクラスを使う場合は必ず操作対象のブック、シートを指定する
2017/06/10(土) 11:59:16.65ID:7onqK0zV0
住所と一緒。
いきなり中央区と言われても「どこの?」となる。
ブックから指定した方が曖昧さが無くなる。
2017/06/10(土) 12:02:23.03ID:1OFjIP+40
>>581
お前は基底クラスの意味をもう一度調べてこい
知ったかかと思ったらそれ以下だったわ w
584デフォルトの名無しさん (ワッチョイ 2391-mrwT)
垢版 |
2017/06/10(土) 12:18:14.91ID:FN/PeeFU0
既定クラスの間違いかも
2017/06/10(土) 12:21:14.78ID:33ScHThx0
ちゃんとLetを書こう
586デフォルトの名無しさん (オッペケ Sr71-Kuea)
垢版 |
2017/06/10(土) 12:22:40.92ID:7x8i6naHr
でもなあ…このスレで上から目線で偉そうに語ってるやつは例外なく>>581レベルなんやで…かなりマジに…
2017/06/10(土) 12:38:07.24ID:6tSezeKAM
>>584
既定クラス?
なにそれ初耳なんだが...
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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