ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part57
https://mevius.5ch.net/test/read.cgi/tech/1536583359/
Excel VBA 質問スレ Part58
■ このスレッドは過去ログ倉庫に格納されています
2018/11/19(月) 06:47:24.99ID:Qq88xGOU
539デフォルトの名無しさん
2019/01/18(金) 20:36:05.00ID:3Aai6ayN 実行の話じゃないでしょ
540デフォルトの名無しさん
2019/01/18(金) 20:43:46.91ID:FdTpqa5z >>537
???
今まで何の話をしてたんだ?
PowerShellの方がVBAより有利だと言いたかったんじゃないの?
君の発言を聞いてるとPowerShellはますます使いものにならないように感じるんだが、もしかして君は実はVBAの方が有利だと言いたかったのか?
???
今まで何の話をしてたんだ?
PowerShellの方がVBAより有利だと言いたかったんじゃないの?
君の発言を聞いてるとPowerShellはますます使いものにならないように感じるんだが、もしかして君は実はVBAの方が有利だと言いたかったのか?
541デフォルトの名無しさん
2019/01/18(金) 21:06:07.91ID:dGgLcYHd542デフォルトの名無しさん
2019/01/18(金) 21:45:43.94ID:WMbv0rpV あれ? ExcelってVBAをデフォルトで実行できたっけ?
543デフォルトの名無しさん
2019/01/18(金) 22:19:33.59ID:dGgLcYHd544デフォルトの名無しさん
2019/01/18(金) 23:37:19.13ID:c34mocfv 設定を変えなければ動かないことをデフォルトでは動かないというんじゃないかね
設定を変えるのが簡単かどうかは別問題だろ
設定を変えるのが簡単かどうかは別問題だろ
545デフォルトの名無しさん
2019/01/18(金) 23:49:44.04ID:LGpZNaP9 右クリックするだけだろ
546デフォルトの名無しさん
2019/01/19(土) 00:13:36.27ID:Fjsb0QYM 既定では
右クリック→管理者として実行
右クリック→やWindowsPowerShellで実行
いずれも.ps1スクリプトは実行できない
>>543もまちがい
既定状態のPCでも
powershell -executionpolicy remotesigned -file 'hoge.ps1'
などと打てば自動的にプロセススコープで自作のスクリプトなどを実行可能
右クリック→管理者として実行
右クリック→やWindowsPowerShellで実行
いずれも.ps1スクリプトは実行できない
>>543もまちがい
既定状態のPCでも
powershell -executionpolicy remotesigned -file 'hoge.ps1'
などと打てば自動的にプロセススコープで自作のスクリプトなどを実行可能
547デフォルトの名無しさん
2019/01/19(土) 02:49:20.82ID:S0ghMGDC PowerShell -Part 3
https://mevius.5ch.net/test/read.cgi/tech/1539074808/
https://mevius.5ch.net/test/read.cgi/tech/1539074808/
548デフォルトの名無しさん
2019/01/19(土) 05:10:03.36ID:+IqL7b8U549デフォルトの名無しさん
2019/01/19(土) 06:27:03.00ID:wkXfpZQC VBAってデフォルトでは動かないんだっけ?
マクロ入りファイルを開く時は許可か設定が必要だけど、新規ブックならいきなり使えたような
再インストールして確認するのは面倒だからうろ覚えだけど
マクロ入りファイルを開く時は許可か設定が必要だけど、新規ブックならいきなり使えたような
再インストールして確認するのは面倒だからうろ覚えだけど
550デフォルトの名無しさん
2019/01/19(土) 07:08:08.04ID:fPDnzLoP VBAはそもそもオフィスのインストールという過酷な作業が必要だからな
アマチュアの事務員さんは用意されたパソコンを使うだけだから知らないのかもしれないがな
プロはプロジェクトのたびに全員のパソコンを誰かが準備しなきゃならんのよ
オフィスのインストール作業は地味にでかい工数になるんだ
アマチュアの事務員さんは用意されたパソコンを使うだけだから知らないのかもしれないがな
プロはプロジェクトのたびに全員のパソコンを誰かが準備しなきゃならんのよ
オフィスのインストール作業は地味にでかい工数になるんだ
551デフォルトの名無しさん
2019/01/19(土) 08:17:46.72ID:pNQS4Xn+ デフォルトで信頼されてる場所のファイルでも動かなかったっけ?
大昔のエクセルならデフォルトでどこでもマクロ動いてたけどなw
大昔のエクセルならデフォルトでどこでもマクロ動いてたけどなw
552デフォルトの名無しさん
2019/01/19(土) 10:55:07.59ID:gJfblIQ2 実行するファイルとは別に呼び出す仕組みを用意する必要があるからpowershellがクソだって言われてるのが分からないのか?
頭悪すぎない?
頭悪すぎない?
553デフォルトの名無しさん
2019/01/19(土) 11:03:22.61ID:Fjsb0QYM 実行スコープを細かく規定出来るのは進歩。クソだとのたまうアホはセキュリティ意識がおかしい
554デフォルトの名無しさん
2019/01/19(土) 11:07:55.26ID:OmtBIHUo 右クリックするだけだろ
555デフォルトの名無しさん
2019/01/19(土) 11:12:21.71ID:gJfblIQ2 そのスコープを組み込めない時点で終わってるという話をしているんですよ?
556デフォルトの名無しさん
2019/01/19(土) 11:39:33.19ID:fPDnzLoP スコープを組み込む
この言葉の意味がよくわからんので詳しく説明してみて
この言葉の意味がよくわからんので詳しく説明してみて
557デフォルトの名無しさん
2019/01/19(土) 11:47:23.37ID:fPDnzLoP vbaもエクセルファイル自体が実行可能な訳じゃなくエクセルというプログラムが解釈してやってるだけ
なのでvbaも別に呼び出す仕組みが必要と言っていい
その仕組みは膨大なインストール時間とライセンス料金を支払ってオフィスをインストールするという苦行を乗り越えないと利用できない
それに比べたらパワーシェルは実行までの手間は殆ど無視できるほど小さい
シェルでたったの1行コマンドレットを打つだけでOK
しかも無料なので嬉しいね
なのでvbaも別に呼び出す仕組みが必要と言っていい
その仕組みは膨大なインストール時間とライセンス料金を支払ってオフィスをインストールするという苦行を乗り越えないと利用できない
それに比べたらパワーシェルは実行までの手間は殆ど無視できるほど小さい
シェルでたったの1行コマンドレットを打つだけでOK
しかも無料なので嬉しいね
558デフォルトの名無しさん
2019/01/19(土) 11:47:30.68ID:gJfblIQ2 OSのデフォルト状態で出来ることが前提
拡張子が.ps1の場合右クリックのメニューにremotesingedを表示させるとか?
拡張子が.ps1の場合右クリックのメニューにremotesingedを表示させるとか?
559デフォルトの名無しさん
2019/01/19(土) 11:51:02.97ID:8CGfSDeG もうその話はpowershellのスレに移動してやってください
560デフォルトの名無しさん
2019/01/19(土) 11:51:52.41ID:1cEunHBW561デフォルトの名無しさん
2019/01/19(土) 12:11:34.94ID:lm8WiCyM 現実社会では話ができない寂しい「プロ」」のプログラマどもが何やらくだらん
雑談をしてスレを潰してるけど質問者の皆さんはそんなヨタ話に付き合う必要
はありませんので、遠慮なく質問をどぞ〜
雑談をしてスレを潰してるけど質問者の皆さんはそんなヨタ話に付き合う必要
はありませんので、遠慮なく質問をどぞ〜
562デフォルトの名無しさん
2019/01/19(土) 12:14:32.41ID:oaSrkPrl ところでホンマにブロなん?プロさんて?なんかあやしいんですけどw
563デフォルトの名無しさん
2019/01/19(土) 12:25:03.26ID:4FsWRGgY Officeインストールするしないがオプションなんて事業所あるの?
564デフォルトの名無しさん
2019/01/19(土) 12:40:58.29ID:wkXfpZQC 厳密な定義や資格があるわけじゃないんで「プロ」を名乗るのは自由です
565デフォルトの名無しさん
2019/01/19(土) 13:14:50.16ID:fPDnzLoP566デフォルトの名無しさん
2019/01/19(土) 13:21:53.40ID:+IqL7b8U567デフォルトの名無しさん
2019/01/19(土) 13:26:53.56ID:4FsWRGgY CADなんかの専用ソフトしか動かさんとか開発機とかそういうのならわかるけど、
このスレで話題にする以上関係ないというか対象外でしょ
このスレで話題にする以上関係ないというか対象外でしょ
568デフォルトの名無しさん
2019/01/19(土) 13:35:07.44ID:Fjsb0QYM 普通はイメージで展開して、個別はライセンス認証だけっしょ一台数分
569デフォルトの名無しさん
2019/01/19(土) 14:06:33.45ID:/+FUwnIm >>558
へえ、ExcelってOSのデフォルト状態で使えるんだ?
へえ、ExcelってOSのデフォルト状態で使えるんだ?
570デフォルトの名無しさん
2019/01/19(土) 14:46:59.67ID:Qiw5pxsO WSHだろ常考
571デフォルトの名無しさん
2019/01/19(土) 15:22:25.47ID:wiNfQeeu >>523-537
例えば、クリップボードでも、Ruby から、powershell コマンドを呼ぶ。
a.rb
str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換
これをダブルクリックで起動したいのなら、バッチかVBS で起動する。
a.bat
ruby .\a.rb
テキスト処理は、VSCode, Rubyで十分!
例えば、クリップボードでも、Ruby から、powershell コマンドを呼ぶ。
a.rb
str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換
これをダブルクリックで起動したいのなら、バッチかVBS で起動する。
a.bat
ruby .\a.rb
テキスト処理は、VSCode, Rubyで十分!
572デフォルトの名無しさん
2019/01/19(土) 15:49:39.46ID:BW5TF7JU >>571
VSCodeは個別にライセンスのある膨大な数のオープンソースソフトウェアの塊であり、
PowerShellを禁止しているような糞組織のPCにインストールすることは不可能
RubyもライセンスにGPLの文字を見つけた途端に情シスが卒倒するレベルで全くもって論外
VSCodeは個別にライセンスのある膨大な数のオープンソースソフトウェアの塊であり、
PowerShellを禁止しているような糞組織のPCにインストールすることは不可能
RubyもライセンスにGPLの文字を見つけた途端に情シスが卒倒するレベルで全くもって論外
573デフォルトの名無しさん
2019/01/19(土) 21:28:25.59ID:AuMD8hxP プロさんてバカしかおらんの?
574デフォルトの名無しさん
2019/01/19(土) 21:35:07.05ID:+IqL7b8U 所詮自称プロだしw
575デフォルトの名無しさん
2019/01/19(土) 21:40:37.46ID:AuMD8hxP >>574
開きなおるなバカ
開きなおるなバカ
576デフォルトの名無しさん
2019/01/19(土) 22:05:47.19ID:+IqL7b8U577デフォルトの名無しさん
2019/01/19(土) 22:06:05.61ID:ARTGttMK excelってVBAからpythonに変わるっていってなかったっけ?
>>577
いってるだけ、今のところは
いってるだけ、今のところは
579デフォルトの名無しさん
2019/01/20(日) 00:48:58.52ID:QFn18v7i dictionaryに格納してるItemを検索して、存在してればKeyを返却する方法が知りたいのだけど、ループさせてヒットしたら値を出す方法以外でfind的な一発でポンと返す記述の仕方はない?
>>579
Item 間に順序関係があればそれを利用して二分探索を適用できる、無論、記述はループチェックに比べて量が多くなる
Item 間に順序関係があればそれを利用して二分探索を適用できる、無論、記述はループチェックに比べて量が多くなる
581デフォルトの名無しさん
2019/01/20(日) 03:54:11.74ID:IAu7YphR >>579
一行で書きたいということなら、文字列ならワークシート関数Matchで検索できます。
ただ存在しなかった場合はエラーが返るので例外処理か事前に調べておく必要があります。
例)
Dim map As Dictionary
Set map = New Dictionary
map.Add "みかん", "橙"
map.Add "りんご", "赤"
map.Add "さくらんぼ", "赤"
map.Add "ぶどう", "紫"
On Error Resume Next
Debug.Print map.Keys(WorksheetFunction.Match("赤", map.Items, 0) - 1)
'りんご
Debug.Print map.Keys(WorksheetFunction.Match("白", map.Items, 0) - 1)
'エラー
On Error GoTo 0
個人的には普通に関数作った方が使いやすいと思います。
一行で書きたいということなら、文字列ならワークシート関数Matchで検索できます。
ただ存在しなかった場合はエラーが返るので例外処理か事前に調べておく必要があります。
例)
Dim map As Dictionary
Set map = New Dictionary
map.Add "みかん", "橙"
map.Add "りんご", "赤"
map.Add "さくらんぼ", "赤"
map.Add "ぶどう", "紫"
On Error Resume Next
Debug.Print map.Keys(WorksheetFunction.Match("赤", map.Items, 0) - 1)
'りんご
Debug.Print map.Keys(WorksheetFunction.Match("白", map.Items, 0) - 1)
'エラー
On Error GoTo 0
個人的には普通に関数作った方が使いやすいと思います。
582デフォルトの名無しさん
2019/01/20(日) 08:04:01.23ID:cWi8furK583デフォルトの名無しさん
2019/01/20(日) 08:25:03.17ID:KJwN8fo6 配列とかコレクションに対してSQLが使えればいいんだけどな。
matchやvlookupより速いんだけど、いちいちシートとかcsvに書き出さなきゃならん。
matchやvlookupより速いんだけど、いちいちシートとかcsvに書き出さなきゃならん。
584デフォルトの名無しさん
2019/01/20(日) 09:17:44.39ID:OfXqqqKI そこまで行くとAccessのお仕事を食っちまう
585デフォルトの名無しさん
2019/01/20(日) 09:22:18.21ID:1t0h4eLG Access VBAでやればいいじゃん
586デフォルトの名無しさん
2019/01/20(日) 09:32:11.24ID:brNktcWU >>582
おっと、回答いただけるとは。
onkeyだと、activeworkbookだろうが、thisworkbookだろうが、後定義したほうが上書き、後勝ちしません?
active側に定義されたショートカットがそれぞれ反応してくれると嬉しいのですが。
おっと、回答いただけるとは。
onkeyだと、activeworkbookだろうが、thisworkbookだろうが、後定義したほうが上書き、後勝ちしません?
active側に定義されたショートカットがそれぞれ反応してくれると嬉しいのですが。
587デフォルトの名無しさん
2019/01/20(日) 10:54:01.49ID:mVpLWWyp588デフォルトの名無しさん
2019/01/20(日) 13:02:37.66ID:QFn18v7i589デフォルトの名無しさん
2019/01/20(日) 13:13:34.11ID:k7Xn9dKz C#スクリプトってOSSで軌道に乗っちゃってるからExcelの処理系として採用されることはないと思うぞ
同じものをClosedで再発明するってのも馬鹿馬鹿しいしな
強力な言語を使いたいならその言語を主としてExcelをコントロールすればいい
それで十分だ
わざわざExcelに乗っける必要性は薄い
同じものをClosedで再発明するってのも馬鹿馬鹿しいしな
強力な言語を使いたいならその言語を主としてExcelをコントロールすればいい
それで十分だ
わざわざExcelに乗っける必要性は薄い
590デフォルトの名無しさん
2019/01/20(日) 13:31:13.08ID:mVpLWWyp 再発明とか意味わからん w
591デフォルトの名無しさん
2019/01/20(日) 16:43:57.95ID:tNp2z70l この場合の再発明と言われれば車輪の再発明を連想出来ないのはかなり緩いんだろう
592デフォルトの名無しさん
2019/01/20(日) 17:26:38.62ID:GHMQXw/N 文脈的には再発明と言うより再実装かな
593デフォルトの名無しさん
2019/01/20(日) 17:32:05.81ID:mVpLWWyp いや、車輪の再発明はいいとして何を再発明するんだよって話
C#処理系のソースライセンス見てないけどMSが自社製品に使えなくなるようなライセンスにはなってないだろうし(なってたらVisual Studioの有償版とか売れなくなる)
普通にExcelに組み入れるだけだろ
C#処理系のソースライセンス見てないけどMSが自社製品に使えなくなるようなライセンスにはなってないだろうし(なってたらVisual Studioの有償版とか売れなくなる)
普通にExcelに組み入れるだけだろ
594デフォルトの名無しさん
2019/01/20(日) 17:45:17.54ID:TQeakhfS >>593
メンテナンスのコストを甘く見すぎ
Excelに入れるなら最低でも以後10年は完全な互換性を維持し続けなきゃいけないわけ
今メインストリームのC#環境を入れるなら.NET Coreを組み込むことになるだろうけど、
.NET Coreって完全なサイドバイサイドを前提にガンガン破壊的変更をぶっ込んでいくスタイルだから、
Excelのバージョンアップのときに単純に.NET Coreのバージョンを上げるわけにはいかなくて、
Excel専用のブランチを作って継続的にメンテしていかざるを得ないの
それは実質的には新たに.NETの兄弟分を作って独立して育てていくことに他ならず、多大なメンテナンスコストを生じる上、
.NET エコシステムの分断を生むことになる
そんな馬鹿げたことをするくらいなら普通に.NET Coreを直接使わせた方が遥かにマシだろう
メンテナンスのコストを甘く見すぎ
Excelに入れるなら最低でも以後10年は完全な互換性を維持し続けなきゃいけないわけ
今メインストリームのC#環境を入れるなら.NET Coreを組み込むことになるだろうけど、
.NET Coreって完全なサイドバイサイドを前提にガンガン破壊的変更をぶっ込んでいくスタイルだから、
Excelのバージョンアップのときに単純に.NET Coreのバージョンを上げるわけにはいかなくて、
Excel専用のブランチを作って継続的にメンテしていかざるを得ないの
それは実質的には新たに.NETの兄弟分を作って独立して育てていくことに他ならず、多大なメンテナンスコストを生じる上、
.NET エコシステムの分断を生むことになる
そんな馬鹿げたことをするくらいなら普通に.NET Coreを直接使わせた方が遥かにマシだろう
595デフォルトの名無しさん
2019/01/20(日) 17:59:54.91ID:mVpLWWyp596デフォルトの名無しさん
2019/01/20(日) 18:07:02.56ID:TQeakhfS597デフォルトの名無しさん
2019/01/20(日) 18:28:52.57ID:mVpLWWyp >>596
いや破壊的かどうかは別にしてもVBAも色々機能追加とかされてるだろ
VBAの機能追加をやめてそのリソースをC# for Officeに割くだけだよ
そもそもMac版はともかくWindows版のOfficeなら.NET Coreじゃなくて.NET Framework上に構築するだろうしな
いや破壊的かどうかは別にしてもVBAも色々機能追加とかされてるだろ
VBAの機能追加をやめてそのリソースをC# for Officeに割くだけだよ
そもそもMac版はともかくWindows版のOfficeなら.NET Coreじゃなくて.NET Framework上に構築するだろうしな
598デフォルトの名無しさん
2019/01/20(日) 18:31:24.08ID:wKV5+GB/ みっともないからいいかげん止めや似非プロさんの一人語り
そもそも出鱈目やってバレバレのプロ風の話して誰に対してマウント取りたいねんw
そもそも出鱈目やってバレバレのプロ風の話して誰に対してマウント取りたいねんw
599デフォルトの名無しさん
2019/01/20(日) 18:46:13.28ID:TQeakhfS600デフォルトの名無しさん
2019/01/20(日) 20:02:31.83ID:mVpLWWyp601デフォルトの名無しさん
2019/01/20(日) 22:44:30.32ID:aU4dkoPo A4用紙に上から4件ずつ異なるデータを入力して、
印刷したいのですが、どうすればいいか教えて下さい。
データ数は日によって異なり、30件〜50件程度あります。
1ページ目に1〜4、2ページ目に5〜8・・・という感じです。
うまく説明出来なくてすいません。
4つデータを入力して印刷したら次、っていう感じの
ループ処理のコードのサンプルなどありましたら教えてください。
印刷したいのですが、どうすればいいか教えて下さい。
データ数は日によって異なり、30件〜50件程度あります。
1ページ目に1〜4、2ページ目に5〜8・・・という感じです。
うまく説明出来なくてすいません。
4つデータを入力して印刷したら次、っていう感じの
ループ処理のコードのサンプルなどありましたら教えてください。
602デフォルトの名無しさん
2019/01/20(日) 22:48:25.28ID:GTDVzsz1603デフォルトの名無しさん
2019/01/20(日) 22:55:12.40ID:aU4dkoPo >>602
ありがとうございます。
ありがとうございます。
604デフォルトの名無しさん
2019/01/21(月) 09:00:45.75ID:MgnF8xe3 このループw
他言語を推奨してる奴らには馬鹿しかいない。
ExcelVBAのスレなんだからExcelが動いてるのが大前提なんだよ。
そこへノコノコ乗り込んで来てOfficeインスト―ルとか言ってる馬鹿は滑稽。
テキスト処理とかもアホ丸出し。
Excel関係無いなら、そもそもVBAでやる必要全く無い。
そして全くのスレ違い。
他言語を推奨してる奴らには馬鹿しかいない。
ExcelVBAのスレなんだからExcelが動いてるのが大前提なんだよ。
そこへノコノコ乗り込んで来てOfficeインスト―ルとか言ってる馬鹿は滑稽。
テキスト処理とかもアホ丸出し。
Excel関係無いなら、そもそもVBAでやる必要全く無い。
そして全くのスレ違い。
605デフォルトの名無しさん
2019/01/21(月) 09:04:27.40ID:MgnF8xe3 その後のC#やPythonを組み込んでくれって話はどうでもいい。
入って来たらそれで組むだけだ。
入って来たらそれで組むだけだ。
606デフォルトの名無しさん
2019/01/21(月) 10:06:31.18ID:NbFzEAOW 終わった話にノコノコ乗り込んでくるウスノロかよww
607デフォルトの名無しさん
2019/01/21(月) 12:17:14.05ID:HulQp10o 言われてみればVBAの破壊的仕様変更ってまったく無いよな。
オブジェクトを省略してて挙動が変わったくらいならあるけど。
64bit対応くらいじゃ無いか?
オブジェクトを省略してて挙動が変わったくらいならあるけど。
64bit対応くらいじゃ無いか?
608デフォルトの名無しさん
2019/01/21(月) 16:29:48.24ID:0Hj4ohcs LongPtr型とPtrSafe宣言くらいか
609デフォルトの名無しさん
2019/01/21(月) 20:06:20.50ID:mtdQDW0I >>607
ただパッチいれたら動かなくなったことはあった
ただパッチいれたら動かなくなったことはあった
610デフォルトの名無しさん
2019/01/21(月) 20:57:18.88ID:MgnF8xe3 2007の時、グラフ周りが軒並み動かなくなったことはあったな。
611デフォルトの名無しさん
2019/01/21(月) 22:36:48.74ID:+ZXh/xZN 改ページ位置の誤検出がヒドイ。
一旦、改ページプレビューにしてから戻せば大丈夫ですとか、何だよそれ。
一旦、改ページプレビューにしてから戻せば大丈夫ですとか、何だよそれ。
612デフォルトの名無しさん
2019/01/21(月) 23:15:39.37ID:liT1rB8S 64bitはスクリプトオブジェクトがないとかは?
613デフォルトの名無しさん
2019/01/22(火) 00:07:05.98ID:TC75Tgsq よろしくお願いします。
あるシートのコピーだけを新規の別ファイルとして保存したいのですが、
1 dim fn as string
2 fn="c:\*****\集計表.csv"
3 ThisWorkbook.Worksheets("集計表").Copy
4 Application.DisplayAlerts = False
5 ActiveWorkbook.SaveAs fileName:=fn, FileFormat:=xlCSV
6 ActiveWorkbook.Close
このように書きました。普通だと問題なくいっているのですが、この処理をしている途中で、
使用者がガチャガチャとマウスをイジり、いくつも開いているうちの適当なブックをアクティブにしてしまった
りなどしてると、想定通りの動作をしなくなってしまいます。
3行目でコピーしたときに、コピー先のその新しいブック自体を名指しできれば、いいのではないかと
思うのですが、いかがでしょうか?
「ActiveWorkBook」ではなく、ちゃんと名指しする方法ってないでしょうか?
あるシートのコピーだけを新規の別ファイルとして保存したいのですが、
1 dim fn as string
2 fn="c:\*****\集計表.csv"
3 ThisWorkbook.Worksheets("集計表").Copy
4 Application.DisplayAlerts = False
5 ActiveWorkbook.SaveAs fileName:=fn, FileFormat:=xlCSV
6 ActiveWorkbook.Close
このように書きました。普通だと問題なくいっているのですが、この処理をしている途中で、
使用者がガチャガチャとマウスをイジり、いくつも開いているうちの適当なブックをアクティブにしてしまった
りなどしてると、想定通りの動作をしなくなってしまいます。
3行目でコピーしたときに、コピー先のその新しいブック自体を名指しできれば、いいのではないかと
思うのですが、いかがでしょうか?
「ActiveWorkBook」ではなく、ちゃんと名指しする方法ってないでしょうか?
いろいろな事情があって、ExcelVBA に専心することになりそうです…Excel VBA から任意の win32api を呼び出すことは可能ですか?
615デフォルトの名無しさん
2019/01/22(火) 00:44:54.38ID:KMNb7p7Q >>613
処理中いじるなと表示させたフォームをモーダルにして処理終わるまで×ボタン消しとくとかは?
処理中いじるなと表示させたフォームをモーダルにして処理終わるまで×ボタン消しとくとかは?
616デフォルトの名無しさん
2019/01/22(火) 02:38:45.16ID:WVGq8ekA activeじゃなくてもsaveできるだろ
617デフォルトの名無しさん
2019/01/22(火) 05:03:39.16ID:1xYsQegz >>613
方法1:新規ブックはWorkbooksコレクションの末尾に追加されるはずなので、Workbooks (Workbooks.Count)で参照できます。
方法2:先に新規ブックを作っておけば参照出来ます。
余計な新規シートが触られる不安があるなら削除する必要があります※
例)
With Workbooks.Add
Dim fn As String: fn = "c:\*****\集計表.csv"
Worksheets("集計表").copy Before:=.Worksheets(1)
Application.DisplayAlerts = False
Dim elem As Worksheet '※
For Each elem In .Worksheets
If elem.Name <> "集計表" Then elem.Delete
Next elem
.SaveAs Filename:=fn, FileFormat:=xlCSV
.Close
End With
方法3:集計表なので数式が入っていると思いますから、Copy時のCalculateイベントでシート自身に保存させます。
例)
Private Sub Worksheet_Calculate()
If Worksheets.Count > 1 Then Exit Sub 'Copyされた単一シートか判定
Dim fn As String: fn = "c:\*****\集計表.csv"
Application.DisplayAlerts = False
ThisWorkbook.SaveAs Filename:=fn, FileFormat:=xlCSV
ThisWorkbook.Close
End Sub
上記を集計表シートのシートモジュールに書き込むと、Worksheets("集計表").Copy だけで自動的に保存されます。
方法1:新規ブックはWorkbooksコレクションの末尾に追加されるはずなので、Workbooks (Workbooks.Count)で参照できます。
方法2:先に新規ブックを作っておけば参照出来ます。
余計な新規シートが触られる不安があるなら削除する必要があります※
例)
With Workbooks.Add
Dim fn As String: fn = "c:\*****\集計表.csv"
Worksheets("集計表").copy Before:=.Worksheets(1)
Application.DisplayAlerts = False
Dim elem As Worksheet '※
For Each elem In .Worksheets
If elem.Name <> "集計表" Then elem.Delete
Next elem
.SaveAs Filename:=fn, FileFormat:=xlCSV
.Close
End With
方法3:集計表なので数式が入っていると思いますから、Copy時のCalculateイベントでシート自身に保存させます。
例)
Private Sub Worksheet_Calculate()
If Worksheets.Count > 1 Then Exit Sub 'Copyされた単一シートか判定
Dim fn As String: fn = "c:\*****\集計表.csv"
Application.DisplayAlerts = False
ThisWorkbook.SaveAs Filename:=fn, FileFormat:=xlCSV
ThisWorkbook.Close
End Sub
上記を集計表シートのシートモジュールに書き込むと、Worksheets("集計表").Copy だけで自動的に保存されます。
618デフォルトの名無しさん
2019/01/22(火) 05:11:20.49ID:1xYsQegz Worksheets("集計表").copy
↓修正
ThisWorkbook.Worksheets("集計表").Copy 👀
Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b)
↓修正
ThisWorkbook.Worksheets("集計表").Copy 👀
Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b)
619デフォルトの名無しさん
2019/01/22(火) 08:07:57.46ID:rTM/luD7 >>614
トリッキーな技が技があるかもだけど「任意の」となると単独では無理と思った方がいい
トリッキーな技が技があるかもだけど「任意の」となると単独では無理と思った方がいい
620デフォルトの名無しさん
2019/01/22(火) 08:14:29.14ID:J7GVb3Rk621デフォルトの名無しさん
2019/01/22(火) 12:45:48.79ID:/p6ZcYuK declareで追加するだけでしょ
ぐぐればサンプル大量に出てくるし
高度でもない
ぐぐればサンプル大量に出てくるし
高度でもない
622デフォルトの名無しさん
2019/01/22(火) 13:00:35.87ID:/wbMKv3O 厚生省の中の人がプログラムで不正するように描いてたのってExcel?
623デフォルトの名無しさん
2019/01/22(火) 14:06:11.20ID:Hs2/RF8Y あれはファイルの更新日をいじっただけだったはず(開いて上書き保存かもしれんが)
624デフォルトの名無しさん
2019/01/22(火) 16:11:53.74ID:twW7M/a9 関数間違えたって報道されてなかったっけ
625デフォルトの名無しさん
2019/01/22(火) 20:39:31.87ID:J7GVb3Rk >>621
それは静的に呼び出すということ。
動的の場合は、LoadLibraryとかGetProcAddressとかを使う話になる。
昔、調べまくってサンプル作ったことあるけど、何でも自由に動かせるものじゃなかった。
というより殆どのAPIは動かなかった記憶が。
それは静的に呼び出すということ。
動的の場合は、LoadLibraryとかGetProcAddressとかを使う話になる。
昔、調べまくってサンプル作ったことあるけど、何でも自由に動かせるものじゃなかった。
というより殆どのAPIは動かなかった記憶が。
626デフォルトの名無しさん
2019/01/22(火) 20:52:29.66ID:nExxZ55X LongPtr型とPtrSafe宣言ってそれぞれどういうときに使うんですか?
627デフォルトの名無しさん
2019/01/22(火) 20:59:55.76ID:IR20P2NM >>626
どっちも64bitでAPI呼ぶ時に使うけど、ほかの使い方は知らん
どっちも64bitでAPI呼ぶ時に使うけど、ほかの使い方は知らん
628デフォルトの名無しさん
2019/01/22(火) 22:38:47.81ID:CihaJZ6+ Excelはどのくらいポリゴン表示出来るの?
1. PS並み
2. PS2並み
3. PS3並み
4. PS4並み
1. PS並み
2. PS2並み
3. PS3並み
4. PS4並み
629デフォルトの名無しさん
2019/01/23(水) 00:32:34.72ID:glGBkXdT 5. PS5並み
630デフォルトの名無しさん
2019/01/23(水) 00:54:57.75ID:26O4EHUh 今のPCならオートシェイプで3DレンダリングしてもPS1には楽勝だろう
631デフォルトの名無しさん
2019/01/23(水) 01:22:36.39ID:xNUzgFQe >>617
ありがとうございました!
ありがとうございました!
632デフォルトの名無しさん
2019/01/23(水) 03:00:22.02ID:aTlBVQjl633デフォルトの名無しさん
2019/01/23(水) 13:19:24.15ID:dfxLcevf 闘神伝のエリスのシースルーは再現可能ということですね。
634デフォルトの名無しさん
2019/01/23(水) 13:59:08.25ID:b9b+73n9 >>625
馬鹿には無理
馬鹿には無理
635デフォルトの名無しさん
2019/01/23(水) 15:57:45.44ID:uebkOjvn もともと「任意の」APIだったのが途中から動的に呼び出す話になってる
636デフォルトの名無しさん
2019/01/23(水) 16:19:34.41ID:CpZRwgZL 回答者の連中が勝手に条件を考えて話をややこしくするのも
質問者がそれを修正しようとしないのもこのスレのお約束
質問者がそれを修正しようとしないのもこのスレのお約束
637デフォルトの名無しさん
2019/01/23(水) 17:37:28.67ID:uebkOjvn だいたいDeclareなしに呼び出さなきゃいけない要件なんてあるか?
候補となるAPIの範囲なんてどう考えても限られてるだろう。
ジグネチャ情報ごと外部からもらうのか?
候補となるAPIの範囲なんてどう考えても限られてるだろう。
ジグネチャ情報ごと外部からもらうのか?
638デフォルトの名無しさん
2019/01/23(水) 21:06:47.46ID:e5qX8jhS■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市早苗総理「金利上昇よりも日本の成長が大事」 ★2 [Hitzeschleier★]
- 【将棋】福間香奈 女流六冠が会見 妊娠・出産でタイトル戦の事実上不戦敗 「妊娠したら、どちらか一方を諦めないといけない状況」 [冬月記者★]
- 【コメ】卸売業者「簡単に安売りできない」「大暴落起きれば大赤字に」 JA「新米の販売進度が近年になく遅い。コメの回転が悪い」 ★2 [Hitzeschleier★]
- 「残クレ」でマイホーム、国が銀行向け保険 新型住宅ローン普及促す -日経 ★2 [少考さん★]
- 【野球】止まらぬ野球人口減少に危機感 ラミレス氏「野球人口は激減、人気自体も下がっている」「もっと野球ができる環境を整えるべき」 [冬月記者★]
- 小泉防衛相「危険回避のための十分な情報なかった」「問題の本質は30分にわたるレーダー照射」…中国側の音声公開を強く批判 [♪♪♪★]
- 【速報】共同通信スクープキタ━(゚∀゚)━!!「実際は日本の自衛隊機が中国機に対してレーダ照射ロックオンしていたことが発覚」 [339712612]
- 【悲報】銀、世界中で枯渇、一晩で16円値上りし未曾有の領域に入ってしまうwwwwwwwwwwwwwwwwwwww [802034645]
- 【悲報】タマキン「高市さんはようやっとる!撤回の必要なし!」高市「早くトランプに会いたい🤗」国会にて [359965264]
- 日銀ETF、時価83兆円、評価益+46兆円 [256556981]
- androidの人「しゃりんのくに」って入力してみて
- 【んな🏡】お昼のまったりふな🍬ハウス🏰
