VBAを使った質問ならなんでもござれ
本来の対象であるオフィスアプリを操作する以外の話もOK
ゲーム作り、Webアクセス、外部アプリの操作
COM(ActiveX)、Win32API、.NET Framework、DirectXなどなど
VBAで実行するものであればなんでも質問してください
VBAを開発環境としていろいろ作っちゃいましょう
前スレ
VBAなんでも質問スレ
http://peace.2ch.net/test/read.cgi/tech/1342087380/
関連スレ
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/tech/1419718732/
Access VBA 質問スレ Part1
http://peace.2ch.net/test/read.cgi/tech/1328536426/
VBプログラマ質問スレ(Ver.6.0 まで) part64
http://peace.2ch.net/test/read.cgi/tech/1393069842/
Excel総合相談所 118 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/bsoft/1430352555/
VBAなんでも質問スレ Part2 [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2015/05/21(木) 10:52:44.71ID:KLv0vQmm218デフォルトの名無しさん
2016/06/14(火) 08:45:39.28ID:2DTiTbF7 >>216
ショートカットから開く方法ですか、考えもしなかったです。
確実に再現するバグではない(場合によっては20分くらい経ってからクラッシュしますし、端末によっては何も起きなかったりします。)
なので、原因を掴むのが難しいです。
>>217
なるほど、プロセスが分離されているから巻き込まれなかったんですかね。
前後のコードを見返しているのですが、shell関数を読んだ直後に
Kill thisworkbook.fullName
thisworkbook.close
を読んで終了させているんですが、ひょっとしたらこの兼ね合いが原因かも?とふと思いました。
shell関数は非同期処理で、会社の共有フォルダを開くときはローカルと違って若干起動に時間がかかります。
shell関数の処理が完了しきっていないのに即終了させるから、動作が不安定になってる可能性はありますかね・・。
なのでとりあえずShell関数を、Wscript.ShellのRunメソッドの同期処理に置換えてみました。
それで明日会社でテストしてみます。
ショートカットから開く方法ですか、考えもしなかったです。
確実に再現するバグではない(場合によっては20分くらい経ってからクラッシュしますし、端末によっては何も起きなかったりします。)
なので、原因を掴むのが難しいです。
>>217
なるほど、プロセスが分離されているから巻き込まれなかったんですかね。
前後のコードを見返しているのですが、shell関数を読んだ直後に
Kill thisworkbook.fullName
thisworkbook.close
を読んで終了させているんですが、ひょっとしたらこの兼ね合いが原因かも?とふと思いました。
shell関数は非同期処理で、会社の共有フォルダを開くときはローカルと違って若干起動に時間がかかります。
shell関数の処理が完了しきっていないのに即終了させるから、動作が不安定になってる可能性はありますかね・・。
なのでとりあえずShell関数を、Wscript.ShellのRunメソッドの同期処理に置換えてみました。
それで明日会社でテストしてみます。
219デフォルトの名無しさん
2016/06/15(水) 20:38:23.92ID:985LHqkd それVBAとか関係なく、普通にネットワーク上のフォルダを表示してるエクスプローラでも発生してるんじゃないのか?
https://support.microsoft.com/ja-jp/kb/972685#/ja-jp/kb/972685
https://support.microsoft.com/ja-jp/kb/2494427#/ja-jp/kb/2494427
とりあえず俺はこの二つで直ったが、エクスプローラ 落ちる とかでググってみ
https://support.microsoft.com/ja-jp/kb/972685#/ja-jp/kb/972685
https://support.microsoft.com/ja-jp/kb/2494427#/ja-jp/kb/2494427
とりあえず俺はこの二つで直ったが、エクスプローラ 落ちる とかでググってみ
220218
2016/06/16(木) 07:48:37.40ID:MO4h1nff >>219
同期処理に変えたら全く落ちなくなりました。
どうやら推測は当たったみたいです。
手動で立ちあげてる時には同じトラブルは一度も起こったこと無く、誰からも聞いていないので、
VBA処理が原因で間違いないと思います。
ぐぐっては見てたんですけど、VBA関連でのエラー報告は0でしたね。
しかし、元々この手のトラブル報告がかなり多いことにはびっくりしました。
とりあえずは解決です。皆さんどうも有難うございました。
同期処理に変えたら全く落ちなくなりました。
どうやら推測は当たったみたいです。
手動で立ちあげてる時には同じトラブルは一度も起こったこと無く、誰からも聞いていないので、
VBA処理が原因で間違いないと思います。
ぐぐっては見てたんですけど、VBA関連でのエラー報告は0でしたね。
しかし、元々この手のトラブル報告がかなり多いことにはびっくりしました。
とりあえずは解決です。皆さんどうも有難うございました。
221デフォルトの名無しさん
2016/06/16(木) 14:05:29.72ID:tOwQ8tvq タイミングの問題で、バグが起きるときは、
sleep 3秒などで、時間稼ぎすることが多いな
sleep 3秒などで、時間稼ぎすることが多いな
222デフォルトの名無しさん
2016/06/16(木) 16:27:03.77ID:YtVxucfB223デフォルトの名無しさん
2016/06/16(木) 21:40:45.67ID:JOmdLZoV ' キャッシュ反映を待って5秒待つ
↑これなんとかして
↑これなんとかして
224デフォルトの名無しさん
2016/06/16(木) 21:53:33.23ID:EpEOLr57225デフォルトの名無しさん
2016/06/17(金) 01:16:02.29ID:Sh+IdTol 起動方法と起動のタイミングの問題で
>1分〜数分以内に「エクスプローラは停止しました」
>場合によっては20分くらい経ってからクラッシュ
のような症状が出るとは考えにくいけどな
まあ、直ったって言うならそれでいいけど
>1分〜数分以内に「エクスプローラは停止しました」
>場合によっては20分くらい経ってからクラッシュ
のような症状が出るとは考えにくいけどな
まあ、直ったって言うならそれでいいけど
226樵の結び目。
2016/09/03(土) 18:27:18.44ID:Ms7vNg4j227デフォルトの名無しさん
2016/09/28(水) 19:27:48.59ID:BVBInYIb vbaの And, Or って短絡評価してくれないの???
228デフォルトの名無しさん
2016/09/28(水) 20:30:34.84ID:X231kNmm229デフォルトの名無しさん
2016/09/28(水) 22:20:25.14ID:w7cfX4QA X(n) And Y(m) で X(n) = False だった場合、Y(m) は評価しなくても式が False と確定する
Or でも同様のことが可能
VBAがショートサーキットしているかどうかは、各関数で Debug ログを出力してみればわかる
Or でも同様のことが可能
VBAがショートサーキットしているかどうかは、各関数で Debug ログを出力してみればわかる
230デフォルトの名無しさん
2016/09/29(木) 04:55:17.68ID:IF5lu7hc >>229
いちいち短絡評価の説明なんてしなくていいよ...
いちいち短絡評価の説明なんてしなくていいよ...
231227
2016/09/29(木) 08:22:26.74ID:l2tsRcXf くぅ。
短絡評価してくれるもんだと思って、
True, False, Nullを返す関数の結果で、
NullをFalseに倒したくて、
左辺でNot isNullやってたけど、
右辺もNullで動いてしまってエラーになってはまったわ。
短絡評価してくれるもんだと思って、
True, False, Nullを返す関数の結果で、
NullをFalseに倒したくて、
左辺でNot isNullやってたけど、
右辺もNullで動いてしまってエラーになってはまったわ。
232デフォルトの名無しさん
2016/09/29(木) 12:46:05.66ID:tIM+raH6 VBAあるある
233デフォルトの名無しさん
2016/10/06(木) 19:51:33.65ID:prbbit7d .NetならOrElseやAndAlsoが使えるし
Nullable指定も出来るから便利なんだけどなー
まあ無いものねだりしても始まらないか
Nullable指定も出来るから便利なんだけどなー
まあ無いものねだりしても始まらないか
234デフォルトの名無しさん
2016/10/08(土) 17:43:11.29ID:fiaM9vLl VB(A)はWithとかある割にそういうとこは全然気が利かないよな
C言語すら知らない人が作った言語なんだろう事は判る
C言語すら知らない人が作った言語なんだろう事は判る
235デフォルトの名無しさん
2016/10/08(土) 22:59:38.27ID:315EhZFM VBって元々はMSじゃないんだよね BASIC好きのゲイツが惚れ込んで買収しただけ
236デフォルトの名無しさん
2016/10/27(木) 20:44:38.40ID:LE0ob9Yw vbaの中、上級者向けの書籍を教えてください
237デフォルトの名無しさん
2016/10/27(木) 21:44:23.99ID:BIHhfe0H 漠然と「VBAの初心者向けの本を教えてください」ってのはよくあるが、上級者向けは珍しいね
ある程度基礎が身に付き、やりたいことが分かってきていれば
○○に関する本、ってなるように思うんだが・・・
田中亨氏の「Excel VBA 逆引き辞典パーフェクト 」は名著だよ
ある程度基礎が身に付き、やりたいことが分かってきていれば
○○に関する本、ってなるように思うんだが・・・
田中亨氏の「Excel VBA 逆引き辞典パーフェクト 」は名著だよ
238デフォルトの名無しさん
2016/10/28(金) 04:23:54.86ID:s9odN72t239デフォルトの名無しさん
2016/10/28(金) 15:06:05.95ID:Sg+Wt/Uz アプリ作成で学ぶExcel VBAプログラミングユーザーフォーム&コントロール(横山達大著)
かんたんプログラミング 応用編(大村あつし著)
同じく、かんたんプログラミング コントロール関数編
デバッグ関連だと
立山秀利著の本
かんたんプログラミング 応用編(大村あつし著)
同じく、かんたんプログラミング コントロール関数編
デバッグ関連だと
立山秀利著の本
240デフォルトの名無しさん
2016/10/29(土) 23:22:10.90ID:b3lytwnZ VBAでコードを抜き出してSVNやgitで管理したりするとそれだけで上級者っぽくなる
241デフォルトの名無しさん
2016/10/30(日) 08:10:21.54ID:R4QvvoTp それ以上にバカっぽいけどなw
242デフォルトの名無しさん
2016/10/30(日) 09:23:46.57ID:2kQlDpFE 今時差分管理もしてないのかよ
243デフォルトの名無しさん
2016/10/31(月) 23:59:17.10ID:9abcSnRr VBACとか使ってんの?
244デフォルトの名無しさん
2017/02/06(月) 12:06:59.89ID:1XFRepCN PowerPointのVBAでファイルを閉じた後も変数の値が保存されるようにしたいんですが外部のテキストに書き出す以外にファイル本体にどうにかして埋め込む方法はありますか?
245デフォルトの名無しさん
2017/02/06(月) 14:57:53.43ID:atuXlQHb 透明のシェイプとかに書くとか色々あるけど
実際本体ファイルを更新されるとバージョン管理とか使う側が気持ち悪がるとか運用面で問題が出そう
実際本体ファイルを更新されるとバージョン管理とか使う側が気持ち悪がるとか運用面で問題が出そう
246デフォルトの名無しさん
2017/02/06(月) 19:29:23.46ID:4FxLnD3n Excel脳っすなぁ
標準的なユーザーデータ保存場所がちゃんとあるんだからそれ使えばいいじゃん
標準的なユーザーデータ保存場所がちゃんとあるんだからそれ使えばいいじゃん
247デフォルトの名無しさん
2017/02/06(月) 19:58:54.20ID:KOZLaxG/ >>246
どうすればいいでしょうか
どうすればいいでしょうか
248デフォルトの名無しさん
2017/02/06(月) 21:21:37.88ID:VJg+IRhi >>244
Presentation.CustomDocumentProperties
https://msdn.microsoft.com/ja-jp/library/office/ff744661.aspx
Presentation.CustomDocumentProperties
https://msdn.microsoft.com/ja-jp/library/office/ff744661.aspx
249デフォルトの名無しさん
2017/02/07(火) 07:09:26.95ID:HIDKMkau250デフォルトの名無しさん
2017/02/07(火) 07:27:10.54ID:ff698yUf251デフォルトの名無しさん
2017/02/07(火) 07:40:32.09ID:xddq+MTq ファイル本体に埋め込みすんのがアホなんだよわかれよ素人
ゴミを量産して人に迷惑かけないでくれ
独りよがりの仕事してんじゃねえよ
ゴミを量産して人に迷惑かけないでくれ
独りよがりの仕事してんじゃねえよ
252デフォルトの名無しさん
2017/02/07(火) 08:07:27.12ID:ff698yUf 単なる基地害だったのか
253デフォルトの名無しさん
2017/02/07(火) 20:25:02.30ID:1dqSFjs6 実際に仕事してるとそれこそ基地外避けを作る必要が出てきたりするんだよな
254デフォルトの名無しさん
2017/02/07(火) 21:24:47.40ID:lpX4EXgF ユーザーデータを変な場所に保存したりするやつとか避けないとな
255デフォルトの名無しさん
2017/02/07(火) 22:43:16.46ID:diTiDCUQ256デフォルトの名無しさん
2017/02/13(月) 17:14:33.92ID:QPcPOced 50枚のスライドが入ったパワポが5個あります。
これを統合したいのですが
ファイル1の1枚目
ファイル2の1枚目
ファイル3の1枚目
ファイル4の1枚目
ファイル5の1枚目
ファイル1の2枚目。。。
という順番にしたいのです。
どういうマクロを書けばいいでしょうか?
これを統合したいのですが
ファイル1の1枚目
ファイル2の1枚目
ファイル3の1枚目
ファイル4の1枚目
ファイル5の1枚目
ファイル1の2枚目。。。
という順番にしたいのです。
どういうマクロを書けばいいでしょうか?
257デフォルトの名無しさん
2017/02/13(月) 21:36:30.61ID:MAF656mM >>256
その通りのマクロを書けばいいのでは?
その通りのマクロを書けばいいのでは?
258デフォルトの名無しさん
2017/02/13(月) 21:54:55.31ID:1gaAmlEB 新規で作ったらコピペを繰り返すだけ
259デフォルトの名無しさん
2017/02/14(火) 00:38:49.96ID:hvVJhpIb パワポってマクロ使えるんだ
そらそうだわな
そらそうだわな
260デフォルトの名無しさん
2017/02/14(火) 01:58:27.90ID:ahDpDw9M ExcelVBAをつかいこなしていても
パワポはマクロの記録がないと腰が重いな
パワポはマクロの記録がないと腰が重いな
261デフォルトの名無しさん
2017/02/15(水) 08:18:34.60ID:uIQboeV9262デフォルトの名無しさん
2017/02/15(水) 13:14:12.73ID:zgJtAmDR >>256
スマホからだから試してないけどこんな感じかな
Application.Presentations.Open(ひとつ目のファイル)
Application.Presentations.Open(ふたつ目のファイル)
...
Application.Presentations.Open(いつつ目のファイル)
Set P = Application.Presentations.Add
For I = 1 To 50
For J = 1 To 5
Application.Presentations.Item(J).Slides(I).Copy
P.Slides.Paste
Next
Next
P.SaveAs(新規のファイル)
スマホからだから試してないけどこんな感じかな
Application.Presentations.Open(ひとつ目のファイル)
Application.Presentations.Open(ふたつ目のファイル)
...
Application.Presentations.Open(いつつ目のファイル)
Set P = Application.Presentations.Add
For I = 1 To 50
For J = 1 To 5
Application.Presentations.Item(J).Slides(I).Copy
P.Slides.Paste
Next
Next
P.SaveAs(新規のファイル)
263デフォルトの名無しさん
2017/02/23(木) 13:32:21.69ID:xPy6pfR0 選択されているセル範囲内の文字、図形を削除する手順を作ってみましたが、処理がえらく重いです。
もっと処理を早くする方法はないでしょうか?
Sub sakujo()
Application.ScreenUpdating = False '画面更新を停止
Dim shp As Shape
Dim rng As Range
If TypeName(Selection) <> "Range" Then Exit Sub
For Each shp In ActiveSheet.Shapes
Selection.ClearContents
Set rng = Range(shp.TopLeftCell, shp.BottomRightCell) '図形の配置されているセル範囲をオブジェクト変数にセット
If Not (Intersect(rng, Selection) Is Nothing) Then '図形の配置されている範囲と選択されているセル範囲が重なっているときに図形を削除
shp.Delete
End If
Next
Application.ScreenUpdating = True '画面更新を再開
End Sub
もっと処理を早くする方法はないでしょうか?
Sub sakujo()
Application.ScreenUpdating = False '画面更新を停止
Dim shp As Shape
Dim rng As Range
If TypeName(Selection) <> "Range" Then Exit Sub
For Each shp In ActiveSheet.Shapes
Selection.ClearContents
Set rng = Range(shp.TopLeftCell, shp.BottomRightCell) '図形の配置されているセル範囲をオブジェクト変数にセット
If Not (Intersect(rng, Selection) Is Nothing) Then '図形の配置されている範囲と選択されているセル範囲が重なっているときに図形を削除
shp.Delete
End If
Next
Application.ScreenUpdating = True '画面更新を再開
End Sub
264デフォルトの名無しさん
2017/02/23(木) 14:40:32.47ID:bekNjoMq265デフォルトの名無しさん
2017/02/23(木) 15:02:34.32ID:Q2T7iSLN 処理の基本をよく考えるべき。
1.Shape毎にSelection.ClearContentsする意味は?
2.shp.Delete後もループする意味は?
3.そもそもSelectionって何?つまり何が選択されている時に削除したいの?
For Each shp In ActiveSheet.Shapes
If shp Is Selection Then
shp.Delete
Exit For
End If
Next
じゃ駄目?
1.Shape毎にSelection.ClearContentsする意味は?
2.shp.Delete後もループする意味は?
3.そもそもSelectionって何?つまり何が選択されている時に削除したいの?
For Each shp In ActiveSheet.Shapes
If shp Is Selection Then
shp.Delete
Exit For
End If
Next
じゃ駄目?
266デフォルトの名無しさん
2017/02/23(木) 15:08:21.72ID:Q2T7iSLN 選択されているセル範囲については最初のIf文でExit Subしてるから削除されないんじゃ?
処理がよく分からん。
選択されているShapeの下のRangeの内容を削除したいならshp=Selectionの場合に
Range(shp.TopLeftCell,shp.BottomRightCell).ClearContents
で良いんじゃ?
処理がよく分からん。
選択されているShapeの下のRangeの内容を削除したいならshp=Selectionの場合に
Range(shp.TopLeftCell,shp.BottomRightCell).ClearContents
で良いんじゃ?
267デフォルトの名無しさん
2017/02/23(木) 15:10:34.31ID:Q2T7iSLN shp=Selectionの場合じゃなくてshp Is Selectionの場合だな。
shp.Deleteの前ね。
shp.Deleteの前ね。
268デフォルトの名無しさん
2017/02/23(木) 15:24:01.29ID:5OVH7aZj >>265
質問者じゃないけど変わって説明するよ
・シート上に文字と図形が複数箇所に設定されている
・消す範囲を選択して、その範囲内の文字と図形を消すコードを書いた
・でもなぜか遅い
質問者に言えるのは、
・Selection.ClearContentsはfor eachの外でいい
・試しに100個のshapeを貼り付けて50個くらいが入る範囲を選択して消してみたら一瞬で終了(もちろんコードでだよ)
・遅いって具体的にどれくらいなの?
質問者じゃないけど変わって説明するよ
・シート上に文字と図形が複数箇所に設定されている
・消す範囲を選択して、その範囲内の文字と図形を消すコードを書いた
・でもなぜか遅い
質問者に言えるのは、
・Selection.ClearContentsはfor eachの外でいい
・試しに100個のshapeを貼り付けて50個くらいが入る範囲を選択して消してみたら一瞬で終了(もちろんコードでだよ)
・遅いって具体的にどれくらいなの?
269デフォルトの名無しさん
2017/02/23(木) 16:00:14.32ID:Q2T7iSLN >>268
コード見りゃわかる。
でもコードがやってることは無駄な部分が多いから聞いてる。
最初のIf文を見ればRangeを選択した場合はExit Subしたいみたいだがら範囲選択した場合は処理して欲しく無いんだよな。
→じゃ、どんな時に処理して欲しいの?
For Each shp In ActiveSheet.Shapes
If shp Is Selection Then
Range(shp.TopLeftCell,shp.BottomRightCell).ClearContents
shp.Delete
Exit For
End If
Next
じゃ駄目なの?
コード見りゃわかる。
でもコードがやってることは無駄な部分が多いから聞いてる。
最初のIf文を見ればRangeを選択した場合はExit Subしたいみたいだがら範囲選択した場合は処理して欲しく無いんだよな。
→じゃ、どんな時に処理して欲しいの?
For Each shp In ActiveSheet.Shapes
If shp Is Selection Then
Range(shp.TopLeftCell,shp.BottomRightCell).ClearContents
shp.Delete
Exit For
End If
Next
じゃ駄目なの?
270デフォルトの名無しさん
2017/02/23(木) 16:07:14.86ID:xPy6pfR0 今までは長い時で1〜1.5秒程止まっていました
>>268さんの言われた通り、Selection.ClearContentsの位置を変えたらスムーズになりましたのでこれで行こうと思います
たくさんご意見頂きありがとうございました
>>268さんの言われた通り、Selection.ClearContentsの位置を変えたらスムーズになりましたのでこれで行こうと思います
たくさんご意見頂きありがとうございました
271デフォルトの名無しさん
2017/02/23(木) 16:14:41.52ID:5OVH7aZj272デフォルトの名無しさん
2017/02/26(日) 14:44:16.79ID:nMuhJunv エクセルのマクロでも質問大丈夫でしょうか?
名前と同じファイル名の画像を名前セルの隣に貼り付けるプログラムなんですが
Sub ボタン1_Click()
Const n As Long = 2
Dim i As Long
Dim x As Double
Dim s As String
Dim t As FileDialog
Dim m As VbMsgBoxResult
With ActiveSheet
For i = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row Step 6
Set r = .Cells(i, 3).MergeArea
s = "D:\画像\1\" & .Cells(i, 2).Value & ".jpg"
Dir Application.Path
With .Pictures.Insert(s).ShapeRange
.LockAspectRatio = msoTrue
x = Application.Min(r.Width / .Width, (r.Height - n) / .Height)
.Width = .Width * x
.Left = r.Left + (r.Width - .Width) / 2
.Top = r.Top + (r.Height - .Height) / 2
End With
Next
End With
End Sub
この"D:\画像\1\"の部分をフォルダ選択できるようにしたいので
Dim s As String
Dim t As FileDialog
Set t = Application.FileDialog(msoFileDialogFolderPicker)
s = "t" & .Cells(i, 2).Value & ".jpg"
としたら「1004 PicturesクラスのInsertプロパティを取得できません。」と実行できません
どうしたら"D:\画像\1\"の部分をフォルダ選択できるようにできるのでしょうか?ご教示お願い致します。
名前と同じファイル名の画像を名前セルの隣に貼り付けるプログラムなんですが
Sub ボタン1_Click()
Const n As Long = 2
Dim i As Long
Dim x As Double
Dim s As String
Dim t As FileDialog
Dim m As VbMsgBoxResult
With ActiveSheet
For i = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row Step 6
Set r = .Cells(i, 3).MergeArea
s = "D:\画像\1\" & .Cells(i, 2).Value & ".jpg"
Dir Application.Path
With .Pictures.Insert(s).ShapeRange
.LockAspectRatio = msoTrue
x = Application.Min(r.Width / .Width, (r.Height - n) / .Height)
.Width = .Width * x
.Left = r.Left + (r.Width - .Width) / 2
.Top = r.Top + (r.Height - .Height) / 2
End With
Next
End With
End Sub
この"D:\画像\1\"の部分をフォルダ選択できるようにしたいので
Dim s As String
Dim t As FileDialog
Set t = Application.FileDialog(msoFileDialogFolderPicker)
s = "t" & .Cells(i, 2).Value & ".jpg"
としたら「1004 PicturesクラスのInsertプロパティを取得できません。」と実行できません
どうしたら"D:\画像\1\"の部分をフォルダ選択できるようにできるのでしょうか?ご教示お願い致します。
273デフォルトの名無しさん
2017/02/26(日) 16:00:22.84ID:nt1S72uw >>272
Dim s As String
Dim t As String
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = False Then Exit Sub
t = .SelectedItems(1) & "\"
End With
'途中省略
s = t & .Cells(i, 2).Value & ".jpg"
じゃないかな?
あと
元コードもそうだけど
フォルダ内に その画像ファイルが存在してなかった時の対策も必要だと思うよ
同じエラーになるぞ それとも絶対 あるのが 確定してる?
Dim s As String
Dim t As String
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = False Then Exit Sub
t = .SelectedItems(1) & "\"
End With
'途中省略
s = t & .Cells(i, 2).Value & ".jpg"
じゃないかな?
あと
元コードもそうだけど
フォルダ内に その画像ファイルが存在してなかった時の対策も必要だと思うよ
同じエラーになるぞ それとも絶対 あるのが 確定してる?
274デフォルトの名無しさん
2017/02/26(日) 16:45:49.33ID:nMuhJunv >>273
大変ありがとうございます!
ただ、貼り付ける画像は複数あり、貼り付けるたびにフォルダ選択画面が出てしまいますので、一気に貼り付けられないものでしょうか?
ファイルが存在してない時の対策は、セルの状態を色変えて罫線で斜線を挿入したいと考えてますが、まだそこまで進む前段階がクリアできないので困ってます
よろしくお願いします
大変ありがとうございます!
ただ、貼り付ける画像は複数あり、貼り付けるたびにフォルダ選択画面が出てしまいますので、一気に貼り付けられないものでしょうか?
ファイルが存在してない時の対策は、セルの状態を色変えて罫線で斜線を挿入したいと考えてますが、まだそこまで進む前段階がクリアできないので困ってます
よろしくお願いします
275デフォルトの名無しさん
2017/02/26(日) 16:51:45.39ID:nt1S72uw >>274
ん? そこは分ってるとおもたよ
フォルダ選択部分は Forループの外だよ
↓ここねw
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = False Then Exit Sub
t = .SelectedItems(1) & "\"
End With
ん? そこは分ってるとおもたよ
フォルダ選択部分は Forループの外だよ
↓ここねw
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = False Then Exit Sub
t = .SelectedItems(1) & "\"
End With
276デフォルトの名無しさん
2017/02/26(日) 16:57:59.74ID:nMuhJunv >>275
あっ!できました!ありがとうございます!助かりました!
あっ!できました!ありがとうございます!助かりました!
277デフォルトの名無しさん
2017/03/06(月) 23:29:36.96ID:QCgyLcj6 こんにちは。
パワーポイント2013のVBAについて分かる方教えて下さい。
やりたいことは、グラデーションの塗りつぶしがあるシェイプのGradientStopsのそれぞれの色を変化させるアニメーションの方法です。
2013ではできないけど2016ではできる等の情報もあればお願い致します。
パワーポイント2013のVBAについて分かる方教えて下さい。
やりたいことは、グラデーションの塗りつぶしがあるシェイプのGradientStopsのそれぞれの色を変化させるアニメーションの方法です。
2013ではできないけど2016ではできる等の情報もあればお願い致します。
278デフォルトの名無しさん
2017/03/08(水) 21:50:45.20ID:DO0ivfK5 vbaだけでhttpサーバーって出来る?
279デフォルトの名無しさん
2017/03/08(水) 23:04:04.36ID:Tpob7EG8280デフォルトの名無しさん
2017/03/09(木) 01:39:01.40ID:UFk6xx1O VBAだけってのが
外部コントロール使用禁止
API呼び出し禁止
なら不可能です
外部コントロール使用禁止
API呼び出し禁止
なら不可能です
281デフォルトの名無しさん
2017/04/09(日) 15:56:17.26ID:9WwYB+FH VBAの変数の値を次回の処理を行う時まで記録しておくのにセルに書き込みをしたりしていますが、
セルにアクセスするのを減らすためにセルに記録しなくて処理終了時に変数値をVBA内で保存しておいてくれる一次記憶領域みたいな物はないのでしょうか?
セルにアクセスするのを減らすためにセルに記録しなくて処理終了時に変数値をVBA内で保存しておいてくれる一次記憶領域みたいな物はないのでしょうか?
282デフォルトの名無しさん
2017/04/09(日) 16:02:56.39ID:9WwYB+FH ちりも積もればの話ですが
足し算引き算割り算レベルの計算をセルに関数を割り当てて行うのと
同じ計算式を変数を用いてVBAで書いて実行するのとで、より処理速度が速いのはどちらでしょうか?
足し算引き算割り算レベルの計算をセルに関数を割り当てて行うのと
同じ計算式を変数を用いてVBAで書いて実行するのとで、より処理速度が速いのはどちらでしょうか?
283デフォルトの名無しさん
2017/04/09(日) 16:09:57.30ID:Lq/WJuQk284デフォルトの名無しさん
2017/04/09(日) 16:14:42.36ID:K8MFArI9 >>281
説明がいまいち分かりにくい。
次回ってのは何時のことを言ってる?
グローバルな変数じゃダメなの?
次にそのブックを開くまで保持したいならセルってのも分かるんだが。
で、その場合にセルの代わりに保持したいならCustomDocumetProperties使ったりするかな。
説明がいまいち分かりにくい。
次回ってのは何時のことを言ってる?
グローバルな変数じゃダメなの?
次にそのブックを開くまで保持したいならセルってのも分かるんだが。
で、その場合にセルの代わりに保持したいならCustomDocumetProperties使ったりするかな。
285デフォルトの名無しさん
2017/04/09(日) 16:27:32.06ID:9WwYB+FH286デフォルトの名無しさん
2017/04/09(日) 16:44:07.10ID:9WwYB+FH >>284
プロシージャの上に定義すると処理が終了しても最終定義された内容は残ったままなんですね!
今まで処理を中断する必要がある場合は変数をすべてセルに書き出していましたが大発見です。ありがとうございました。
プロシージャの上に定義すると処理が終了しても最終定義された内容は残ったままなんですね!
今まで処理を中断する必要がある場合は変数をすべてセルに書き出していましたが大発見です。ありがとうございました。
287デフォルトの名無しさん
2017/04/09(日) 19:39:59.08ID:9WwYB+FH Public変数もしくは通常の変数の指定数の限界はあるのでしょうか?
問題なく動くレベルは何個ぐらいでしょうか?
50個
100個
1000個
10000個でも平気だっり?
実は
100000個以上でも問題ないとか?
問題なく動くレベルは何個ぐらいでしょうか?
50個
100個
1000個
10000個でも平気だっり?
実は
100000個以上でも問題ないとか?
288デフォルトの名無しさん
2017/04/09(日) 19:51:50.86ID:0T9WQSVM289デフォルトの名無しさん
2017/04/09(日) 23:55:43.90ID:K8MFArI9290デフォルトの名無しさん
2017/04/10(月) 02:47:06.39ID:AhmZ51rM 日曜の午後からずっとVBAを書いてるけどまだおわらね〜
てかやればやるほど選択肢が爆発的に増えてきて一生かかってもおわりそうにね〜!w
てかやればやるほど選択肢が爆発的に増えてきて一生かかってもおわりそうにね〜!w
291デフォルトの名無しさん
2017/04/10(月) 04:05:13.85ID:sRLMXvmn >>287
しかもEndやErrorで抜けたら破棄されるという罠
しかもEndやErrorで抜けたら破棄されるという罠
292デフォルトの名無しさん
2017/04/11(火) 00:40:18.97ID:egN7ZnVO 素数や組み合わせ爆発のような数学の迷宮的な問題に陥って
一生かかってもコードを完成させるのは無理ですよみたいな場合もあるのでしょうか?
一生かかってもコードを完成させるのは無理ですよみたいな場合もあるのでしょうか?
293デフォルトの名無しさん
2017/04/11(火) 10:41:22.79ID:Ei1BFwyD >>292
数学的バックグラウンドがなければコードが書けないという類いの問題はあるね。
たとえばNP困難なやつ。
巡回セールスマンとかナップサック問題とか、ナーススケジューリング問題とか。
自力でなければ、それなりの回答が得られる解法(コード)が既に存在してるものもある。
数学的バックグラウンドがなければコードが書けないという類いの問題はあるね。
たとえばNP困難なやつ。
巡回セールスマンとかナップサック問題とか、ナーススケジューリング問題とか。
自力でなければ、それなりの回答が得られる解法(コード)が既に存在してるものもある。
294デフォルトの名無しさん
2017/04/11(火) 11:01:45.96ID:o/k96Ri6 問題を解く方法を考案するのと、その方法をコンピューター言語に翻訳する作業は別ですわ
それぞれに異なった知識と才能が必要となりますので
それぞれに異なった知識と才能が必要となりますので
295デフォルトの名無しさん
2017/04/11(火) 11:03:15.94ID:6dnWkPrh >>291
End Subの行にブレークポイント、これ
End Subの行にブレークポイント、これ
296デフォルトの名無しさん
2017/04/12(水) 22:41:46.94ID:iuenojzm パブリック変数で
1000個
10000個でも平気だっり?
とかどんな拷問なんだよw
1000個
10000個でも平気だっり?
とかどんな拷問なんだよw
297デフォルトの名無しさん
2017/04/20(木) 23:26:11.80ID:92wBssf5 テストしてみたがパブリック変数500個は問題なく動いた。
もっと使ってる人いる?
もっと使ってる人いる?
298デフォルトの名無しさん
2017/04/21(金) 19:40:41.67ID:TpPjDerb いらない
299デフォルトの名無しさん
2017/04/21(金) 21:22:06.10ID:BWuBR5xw 変数の一部を変数にする事は出来ないのでしょうか?(代入
とかではなく)
たとえば↓はイメージですが変数名の箇所を文字列をつなぎ合わせる時と
同じように変数をわりあてられないのでしょうか?(以下は動きませんがphpではこれができます。)
dim aaa1
dim aaa
dim no
dim bbb
aaa1=例文1
aaa=aaa
no=1
aaa & no = bbb
msgbox bbb
↓
結果は「例文1」 と表示されますみたな、、
とかではなく)
たとえば↓はイメージですが変数名の箇所を文字列をつなぎ合わせる時と
同じように変数をわりあてられないのでしょうか?(以下は動きませんがphpではこれができます。)
dim aaa1
dim aaa
dim no
dim bbb
aaa1=例文1
aaa=aaa
no=1
aaa & no = bbb
msgbox bbb
↓
結果は「例文1」 と表示されますみたな、、
300デフォルトの名無しさん
2017/04/21(金) 21:28:31.62ID:BWuBR5xw >>299
最終的には
aaa1=「例文1」
aaa2=「例文2」
aaa3=「例文3」
・
・
とし
aaa & no のno番号だけ差し替えて制御するみないな感じで使います。
ただしnoの番号は連続した数字ではなく他の集計結果からランダムに発生するため
ループ処理等では成り立たず変数のように扱う必要があります。
最終的には
aaa1=「例文1」
aaa2=「例文2」
aaa3=「例文3」
・
・
とし
aaa & no のno番号だけ差し替えて制御するみないな感じで使います。
ただしnoの番号は連続した数字ではなく他の集計結果からランダムに発生するため
ループ処理等では成り立たず変数のように扱う必要があります。
301デフォルトの名無しさん
2017/04/21(金) 22:10:11.53ID:9tskJEPF >>300
aaa1とかaaa2を変数として捉えず、文字列と数値を要素に持つ2次元配列と見れば良い
で、データ全体を制御するときは、aaa1,aaa2...の2次元配列全てを要素として持つコレクションオブジェクトを生成して操作する
aaa1とかaaa2を変数として捉えず、文字列と数値を要素に持つ2次元配列と見れば良い
で、データ全体を制御するときは、aaa1,aaa2...の2次元配列全てを要素として持つコレクションオブジェクトを生成して操作する
302デフォルトの名無しさん
2017/04/21(金) 22:18:30.36ID:TpPjDerb >>300
Dictionaryのkeyにすれば良いんじゃね
Dictionaryのkeyにすれば良いんじゃね
303デフォルトの名無しさん
2017/04/21(金) 22:25:23.50ID:9tskJEPF CollectionよりDictionaryだな、確かに
304デフォルトの名無しさん
2017/04/21(金) 23:24:44.93ID:3F+Ljh12 そういう質問、初心者によく聞かれるわ
普通は配列を使えと教えるもんだが
普通は配列を使えと教えるもんだが
305デフォルトの名無しさん
2017/04/22(土) 06:16:50.97ID:zUhE/Mll306299
2017/04/22(土) 08:27:20.54ID:zUhE/Mll307デフォルトの名無しさん
2017/04/22(土) 08:53:12.92ID:MM2jcjjz >>306
変数名を数字だけで管理する方法はない。
VBAの仕様上、できない。
というか、その集計結果なるものがプログラム実行時に決定するのだとしたら、集計結果を格納する変数の名前に集計結果の数値をはじめから盛り込もうとするのは無理があるし、そもそも理由が分からない。
やりたいことを実現するにはもっと適切な他の方法があるんじゃないかな。
変数名を数字だけで管理する方法はない。
VBAの仕様上、できない。
というか、その集計結果なるものがプログラム実行時に決定するのだとしたら、集計結果を格納する変数の名前に集計結果の数値をはじめから盛り込もうとするのは無理があるし、そもそも理由が分からない。
やりたいことを実現するにはもっと適切な他の方法があるんじゃないかな。
308デフォルトの名無しさん
2017/04/22(土) 11:27:30.44ID:6RXuRSFv >>306
Dictionaryのvalueは変更可能
Dictionaryのvalueは変更可能
309299
2017/04/22(土) 15:29:06.19ID:zUhE/Mll310デフォルトの名無しさん
2017/04/22(土) 20:43:48.30ID:zUhE/Mll Dim dic As New Dictionary
Dim i As Integer
dic.Add "キー1", "アイテム1"
dic.Add "キー2", "アイテム2"
dic.Add "キー3", "アイテム3"
Dictionaryで指定した"キー"と "アイテム"は処理が終了するとリセットされるようですが、
グローバル変数のように処理が終了しても次実行されるまで記憶させておくようにする事は出来ないのでしょうか?
Dim i As Integer
dic.Add "キー1", "アイテム1"
dic.Add "キー2", "アイテム2"
dic.Add "キー3", "アイテム3"
Dictionaryで指定した"キー"と "アイテム"は処理が終了するとリセットされるようですが、
グローバル変数のように処理が終了しても次実行されるまで記憶させておくようにする事は出来ないのでしょうか?
311デフォルトの名無しさん
2017/04/22(土) 22:48:51.75ID:AOzJBbd9 >>310
プロシージャを跨いで値を保持させるなら、グローバルな配列変数、(アプリケーションがExcelならば)セル、シェイプ、カスタムドキュメントプロパティ、グローバルコレクション、自作のグローバルクラスのインスタンスなどに値を記憶させるしかない
でもそれならわざわざプロシージャ内でDictionaryを使って連想配列を操作するより、ExcelのセルにKeyと値を書き込んで配列アクセスして読み書きする処理の方が遥かに楽だと思う
プロシージャを跨いで値を保持させるなら、グローバルな配列変数、(アプリケーションがExcelならば)セル、シェイプ、カスタムドキュメントプロパティ、グローバルコレクション、自作のグローバルクラスのインスタンスなどに値を記憶させるしかない
でもそれならわざわざプロシージャ内でDictionaryを使って連想配列を操作するより、ExcelのセルにKeyと値を書き込んで配列アクセスして読み書きする処理の方が遥かに楽だと思う
312デフォルトの名無しさん
2017/04/22(土) 23:30:15.48ID:zUhE/Mll >>311
ありがとうございます。
今作っているコードでセルへのアクセスが膨大になってきて処理時間がどんどん長くなる傾向がみられまして
全操作をセルにアクセスせずに完結させようと色々考えていましたがなかなかそうはいかないようですね。
ありがとうございます。
今作っているコードでセルへのアクセスが膨大になってきて処理時間がどんどん長くなる傾向がみられまして
全操作をセルにアクセスせずに完結させようと色々考えていましたがなかなかそうはいかないようですね。
313デフォルトの名無しさん
2017/04/23(日) 05:30:19.61ID:t5ve42Di314デフォルトの名無しさん
2017/04/23(日) 10:16:09.39ID:wfwXXeKO >>312
標準モジュールとかでDictionary型のオブジェクト変数をグローバルスコープ(Public)でNew宣言すれば、処理を抜けてもDictionaryのItemは初期化されないんじゃないのかな
ただ単なる配列の処理でデータが数千件程度なら、描画止めた状態でワークシート使った方が遥かに楽だと思うが。
標準モジュールとかでDictionary型のオブジェクト変数をグローバルスコープ(Public)でNew宣言すれば、処理を抜けてもDictionaryのItemは初期化されないんじゃないのかな
ただ単なる配列の処理でデータが数千件程度なら、描画止めた状態でワークシート使った方が遥かに楽だと思うが。
315デフォルトの名無しさん
2017/04/23(日) 16:51:51.75ID:fs201BJ1316デフォルトの名無しさん
2017/04/23(日) 17:11:32.92ID:yvJyPXpi >>315
何の引数に渡すことを指してるのかな?
何の引数に渡すことを指してるのかな?
317デフォルトの名無しさん
2017/04/23(日) 18:02:04.26ID:fs201BJ1■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★3 [ぐれ★]
- Perfume・あ~ちゃんの結婚相手の一般男性、吉田カバンの社長と判明 [977261419]
- Perfume・あ~ちゃん、一般人男性と結婚wwwwwwwwwwwwwwwwwwwwwwww
- 日本、高市のお陰で破滅に近づくwwwwwwww
- 自民党議員「高市は先人が築き上げた日中関係を壊した。外務省が謝罪に言ってるが自分で責任を取れ」 [834922174]
- まみちゃん
- ちっしゃーねーな。俺が習近平のアナルに武力侵攻してきてやるよ
