X



Excel VBA 質問スレ Part52
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
垢版 |
2018/01/27(土) 20:25:05.67ID:Xe+uGT7T
スレ立ての際は一行目に
!extend:checked:vvvvv:1000:512
と入れてスレ立てして下さい

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

※関連スレ
VBAなんでも質問スレ Part2
http://mevius.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://mevius.2ch.net/test/read.cgi/tech/1328536426/

※前スレ
Excel VBA 質問スレ Part51
http://mevius.2ch.net/test/read.cgi/tech/1510107990/
0851デフォルトの名無しさん
垢版 |
2018/04/21(土) 08:38:57.92ID:GXQ98g1T
エクセルは統計に使う関数が一通り揃ってるんで投資分野は使いやすいぞ
インジケータならMT4とか使った方がいいような気はするけど
0854デフォルトの名無しさん
垢版 |
2018/04/21(土) 10:09:46.33ID:FdDi/Wma
>>851
むしろエクセルはまともに統計に使える関数少ないだろ。重回帰くらいしかない。
相関行列や時系列分析なんかないし。自分で作るしかない
しかもエクセルじゃビッグデータは重すぎて、全体的な見通しも悪い。
0855デフォルトの名無しさん
垢版 |
2018/04/21(土) 10:14:19.71ID:g3Kr5e2D
他の選択肢を知れば知るほどもうVBAはねえわってなるよね普通
VBAに執着する人ってどんだけ勉強嫌いなんだろう
0856デフォルトの名無しさん
垢版 |
2018/04/21(土) 10:14:56.03ID:lPKh0fp6
>>853
VBAでシートから配列に変換してdllに渡す
計算結果は配列でVBAに返す

dll側はシートなどのExcelオブジェクトと切り離す
0858デフォルトの名無しさん
垢版 |
2018/04/21(土) 11:33:54.73ID:C2C7Ud8C
フォルダAにある現在開いているファイル以外のファイルをフォルダBにコピーし、
その後、フォルダAにある現在開いているファイル以外を削除する方法を教えていただけますでしょうか。
よろしくお願いします。
0859デフォルトの名無しさん
垢版 |
2018/04/21(土) 12:13:41.84ID:g71h8OPL
>>858
Dim fn as String
fn = Dir(ThisWorkbook.Path & "\")

Do While Not fn = ""
 If Not fn = ThisWorkbook.Name Then
  Name ThisWorkbook.Path & "\" & fn As "フォルダBのパス" & "\" & fn
 End If
 fn = Dir()
Loop

これでどうかな
実験してないのでこけるかも知れない
0862デフォルトの名無しさん
垢版 |
2018/04/21(土) 12:55:33.20ID:ERfeW7nP
ブック1のシート1とブック2のシート2を開いてシート2がアクティブの時、
シート1の選択範囲を取得する方法はありますか?
0863デフォルトの名無しさん
垢版 |
2018/04/21(土) 14:20:03.89ID:qaO+nC3q
切り替わるタイミングでアクティブなセルの番地を拾っておけばできるんじゃないか。
0865デフォルトの名無しさん
垢版 |
2018/04/21(土) 22:31:31.47ID:nN/toUY2
エクセルのことわざわざ英語でEXCELって書くやつなんなん?
0866デフォルトの名無しさん
垢版 |
2018/04/21(土) 22:34:09.27ID:dFQ+pJAQ
そこはさすがにエクセルのほうが違和感あるわ
0872デフォルトの名無しさん
垢版 |
2018/04/22(日) 09:21:51.06ID:KfecN0Qu
JIS(?)っぽい思想だとカタカナでエクセルなんだろうなぁ、とか
0874デフォルトの名無しさん
垢版 |
2018/04/22(日) 10:20:16.74ID:G5t9FUHp
複数シートの中で売上という文字列が入っているシートがいくつかあり、
そのシート内のB列にデータがないシートのみを削除する方法を
教えていただけますでしょうか。
宜しくお願い致します。
0876デフォルトの名無しさん
垢版 |
2018/04/22(日) 10:23:26.90ID:Ilmcglgl
>>862
マクロの記録でどう出るか確認したら?
0877デフォルトの名無しさん
垢版 |
2018/04/22(日) 10:24:40.29ID:Ilmcglgl
>>875
宿題か何かだろうね。
0878デフォルトの名無しさん
垢版 |
2018/04/22(日) 10:25:45.97ID:Ilmcglgl
>>874
そのまえに、そんな乱暴にシートを削除してよいのか?
0879デフォルトの名無しさん
垢版 |
2018/04/22(日) 11:37:43.72ID:kYJUlnih
>>874
ディテールの書き方が少し甘い
売上という文字列はシート名に入ってるの?
それともシート上のどこかのセルとかコメントに入ってるの?
0881デフォルトの名無しさん
垢版 |
2018/04/22(日) 12:15:10.53ID:bQIDMX1u
その程度も書けないようじゃマクロ使わない方がいい。特にシート削除は理解してないと危険。
0883デフォルトの名無しさん
垢版 |
2018/04/22(日) 12:29:32.98ID:g5wVKO/X
マクロの記録でヒントでも掴んでみろって事じゃないの
みんなトライエラー繰り返してる中、トライもせずに質問投げるのは印象良くない
0884デフォルトの名無しさん
垢版 |
2018/04/22(日) 15:01:52.07ID:jW53Gcv8
>>874
・for each で全シートをなめます。
・シート名に「売上」が含まれている場合、さらにB列の値を数えます。
・条件に合致したらシートを削除します。

上2つはGGればいくらでも情報でてきます。
一番下はマクロ記録でわかります。
動作上不都合な挙動があれば、その挙動を潰す方法を調べます。
基本的な動作の羅列なので、がんばって。
0885デフォルトの名無しさん
垢版 |
2018/04/22(日) 15:40:59.16ID:Ilmcglgl
シートを削除するのではなく、新しいファイルを作成する方向でやってくれないかな?

こういう素人が増えると困るんだよ。

一般人はファイルのバックアップもしないし、削除してゴミ箱まで空にして、ファイルを復元しろと言い出すから迷惑。
0888デフォルトの名無しさん
垢版 |
2018/04/22(日) 16:30:45.70ID:Ilmcglgl
>>874 を見直すと「売上」という文言が入っているシートと解釈した方が自然。

各シートのどこかに「売上」と入力されていたらという条件は不自然。
0889デフォルトの名無しさん
垢版 |
2018/04/22(日) 16:39:52.54ID:T8IjF/fs
そうだね
一旦配列とかのコンテナに入れといて
for each アイテム in コンテナ
Worksheets(アイテム).Delete
next
が安全かな
0890デフォルトの名無しさん
垢版 |
2018/04/22(日) 16:44:25.17ID:jW53Gcv8
>>887
あらそうだっけ? じゃぁアプローチ方法かえないとね。
削除の度に再評価とか?
ワークシート数で回せばOK?
先に調査して配列格納したシート名で削除しにいくのが安全か。
どんな方法がスマートだろう?

>>885
ファイルのバックアップはそりゃやっておいた方が無難でしょうね。
それは作り手本人が実際に困ってその必要性を痛感した時点で
学べばいい。
元データが何かのシステムからExcel形式で何度でもサクッと出力
できるもので、その一次加工の工程ならなくてもいいと思う。
0891デフォルトの名無しさん
垢版 |
2018/04/22(日) 17:48:00.30ID:Ilmcglgl
質問者がいないのに、
0892デフォルトの名無しさん
垢版 |
2018/04/22(日) 18:19:48.56ID:u/gXMUne
B列にデータがないのを効率よく判定する方法はなんだ?
背景色とかついてても空白セルならデータがないとすべきか
数式が入ってても結果が空白セルならデータがないとすべきか
半角スペースはデータがあると判定するのか
NaNやError Valueはデータがないとみなすか
考え出すと思ったより難しいなこれ
0893デフォルトの名無しさん
垢版 |
2018/04/22(日) 18:22:08.85ID:PsQCMKRd
>>892
そもそもお前が悩む必要が皆無な件w
0894デフォルトの名無しさん
垢版 |
2018/04/22(日) 18:34:56.15ID:lFCngtN7
>>892 B列最終行から上に向けてxlupして
データがあったら何行目か分かるから、
それで判定したらいいんでない?
と、俺は思った
0896デフォルトの名無しさん
垢版 |
2018/04/22(日) 18:56:09.26ID:Ilmcglgl
そんな自動化しなくてはいけないほど、シートの数が多いExcelファイルがあるなら、B列に値が入っていると決めつけているのも怖いよな。

そんなExcelファイルを作る職場だとExcelファイルのフォーマットが変更されていないかどうかのチェックも必要。
0897デフォルトの名無しさん
垢版 |
2018/04/22(日) 19:09:33.32ID:PsQCMKRd
>>896
だからお前が心配する必要が皆無な件w
0898デフォルトの名無しさん
垢版 |
2018/04/22(日) 20:10:15.74ID:8Z9OLZMo
条件が曖昧ならここでうだうだ考えずに質問者に明確に書くよう言えば良いだろ。
それが出てこないなら質問の体をなさないということで却下するもよし、回答したい人間が自分の想像で
回答するもよしで。
質問に書かれていないバックアップがどうこうってのも、そんなもん質問者が考えれば良いことであってこっちが
どうこう考えることじゃない。
0900デフォルトの名無しさん
垢版 |
2018/04/22(日) 21:42:52.36ID:Ilmcglgl
>>898
下手な回答を書かれると第3者が参考にしてしまう。
0901862
垢版 |
2018/04/22(日) 22:40:57.74ID:QxU3gWrv
>>864
同一EXCELアプリケーション内でも良いので教えていただけますか

>>876
Activeではないシートの選択範囲を取得するには、どのように記録を取ればいいでしょうか
0903デフォルトの名無しさん
垢版 |
2018/04/23(月) 02:23:36.29ID:sEcyfSnM
>>901
やったことがないけど、ワークブックオブジェクト変数を使えばできるかな。
0904デフォルトの名無しさん
垢版 |
2018/04/23(月) 13:20:01.73ID:7NmKhRsO
ちょっと教えて下さい
列挙型の項目に数字が先頭に来ると表示が変になるのですが、なんとかなりますか?
0905デフォルトの名無しさん
垢版 |
2018/04/23(月) 13:49:02.96ID:bp7TOG8C
何がどうなってるか具体的な事一切説明せずにおかしい!おかしい!って言うのがこのスレの質問者のデフォ w
0906デフォルトの名無しさん
垢版 |
2018/04/23(月) 16:09:56.14ID:jyC8yCZ+
>>901
アクティブなシートをコードで切り替えていけばSelectionで取れる
たとえば

Workbooks("Book1.xlsx").Worksheets(1).Activate
Debug.Print Selection.Address

Workbooks("Book2.xlsm").Worksheets(2).Activate
Debug.Print Selection.Address

これで両方ブックの選択中のセルアドレスが出力されるはず

選択範囲という概念はActivateされているシートにしかないので
これ以外の方法でやるなら>>863のようにどっかに書き出しておく必要があると思われる
0907デフォルトの名無しさん
垢版 |
2018/04/23(月) 20:16:07.45ID:o4ACymGu
>>906
それだとAddressプロパティを持たないオブジェクトがSelectされてるときにエラーにならないか?
TypeName(Selection)で"Range"が返ってきたときだけ番地を拾うようにするとか、Shapeオブジェクトの場合はTopLeftCell.Addessを拾うようにするとか
0908デフォルトの名無しさん
垢版 |
2018/04/23(月) 22:29:47.83ID:jyC8yCZ+
>>907
たとえばーなので、あとは>>862の好きにしてってことで

そもそも2つブックを開いてセルを選択するという操作を人間がやる必要性があるのか
自分だったらそこも自動化したいと思いましたとさ
0909デフォルトの名無しさん
垢版 |
2018/04/24(火) 01:52:45.14ID:lbZwsvg0
興味本位で触り始めて面白かったから本腰入れて勉強してるんだが
教本レベルから実務までのハードルが結構高いな
これ、基本的なコード覚えてしまえばほとんどパズルだよね?
上手になるとまた別の見え方ができるんかね
0910862
垢版 |
2018/04/24(火) 04:06:55.23ID:nqJXgBuC
>>908
ありがとうございます。
ひとまず、ワークブック切り替えで対応してみます。
0911デフォルトの名無しさん
垢版 |
2018/04/24(火) 06:45:33.52ID:ineULIRb
>>909
実務レベルで使えるようになってから自分で作ったプログラムを見てみると確かに基本的なコードや基本的なアルゴリズムのパズルでしかないと思えるが、教本を読まないとコードが書けない初心者のうちからそのように侮っていても実務レベルに到達することはない
パズルの組み方そのものが問題になるからだ
実務で行いたい処理があるという前提で、そのためにVBAで実現する機能はどのようなものか、どのようなコードを書けば安全かつ確実に期待通りの機能を実現できるか、というベクトルの思考を繰り返して試行錯誤する以外に近道はないぞ
0912デフォルトの名無しさん
垢版 |
2018/04/24(火) 18:46:56.86ID:g60rXxGt
現在、入力ファイルAの体裁を整えてファイルBとして出力するツールをVBAで作成しています。
その中で、入力ファイルAではS-JISになっている文字コードを出力ファイルBではJISにしてほしいと頼まれています。(先方でのファイル取り込み時の都合のようです。)
自分で調べたところ、文字列を1文字ずつVBAのAsc関数でS-JISコード(10進数)にして、さらにHex関数によりS-JISコード(16進数)に変換するところまではたどり着きました。
さらに、ここからS-JISコード→JISコード変換のアルゴリズムに当てはめればJISコード(16進数)までは取得できると思います。

そこで質問なのですが、JISコード(16進数)から日本語文字列を復元する方法はあるのでしょうか?
Chr関数ではS-JISコード(10進数)には対応していてもJISコードには対応していない?ようでした
0914デフォルトの名無しさん
垢版 |
2018/04/24(火) 19:42:22.62ID:R3k7NdiR
>>912
16ビットのJISコードに変換したら上位8ビットと下位8ビットに分けてChrB関数で1バイトずつ出力すればいい
0915デフォルトの名無しさん
垢版 |
2018/04/24(火) 19:43:52.16ID:R3k7NdiR
>>912
文字コードなんか自分で変換するより既製品を使った方が早いよ
変換ツールや変換関数は無数に公開されてる
0916912
垢版 |
2018/04/24(火) 19:50:39.85ID:vM6+2E7U
>>913
そうなんですか?不勉強でした

>>914
ありがとうございます
今日はもう帰宅してしまったので明日試してみようと思います

>>915
それはそうかもしれないですが、どうせ他にも色々とツールを介して値やフォーマットをいじったりするので、別のツールを使わずについでに直せるならその方が楽だなって思いまして
繰り返し使うものなので、一手間増えるだけでもヒューマンエラーを呼び兼ねませんし
0917デフォルトの名無しさん
垢版 |
2018/04/24(火) 20:12:06.67ID:QhqCN0U8
Get-Content ./Input.txt -Encoding ([Text.Encoding]::GetEncoding('Shift-JIS')) |
Out-File ./Output.txt -Encoding ([Text.Encoding]::GetEncoding('ISO-2022-JP'))
0919デフォルトの名無しさん
垢版 |
2018/04/24(火) 21:27:53.13ID:PN6zL45J
>>912
なんでADODB.Stream使わないのか理解に苦しむ
0922デフォルトの名無しさん
垢版 |
2018/04/24(火) 23:00:27.91ID:swLaOBA7
>>916
そもそもなぜExcel VBAでやるのか?
0924デフォルトの名無しさん
垢版 |
2018/04/25(水) 06:51:43.78ID:8LB4hW/t
ちょっと待てオイ、kanjiコード変換機能ぐらい標準で提供されていないのか。
何かの参照を有効にする程度で実現できないと、VBA、幾らなんでも使えないんじゃ。
0926デフォルトの名無しさん
垢版 |
2018/04/25(水) 07:41:12.84ID:/BAngWYJ
VBAは子供のオモチャ
幸い日本のビジネスマンは子供レベルしかいないので重宝されてる
0927デフォルトの名無しさん
垢版 |
2018/04/25(水) 07:47:41.06ID:rm2LBzKT
日頃の鬱憤を「VBA使えない」と喚くことでしか発散できないってのもなかなか可哀想だなw
本当に使えなかったら普及してないんだけどそこまで頭回らない辺りが不憫
0928デフォルトの名無しさん
垢版 |
2018/04/25(水) 07:49:03.35
>>924
つ ADODB.Stream
0929デフォルトの名無しさん
垢版 |
2018/04/25(水) 08:23:50.15ID:O5bsMvPg
使える・使えないが普及率に直結するとか世界観チープすぎるだろ
VBAはチープな言語だからお似合いっちゃそうだが
0930デフォルトの名無しさん
垢版 |
2018/04/25(水) 08:44:24.36ID:rm2LBzKT
「直結する」なんて言ってないんだけどw
お人形遊びが好きだねぇ図星を疲れたのがそんなに悔しかったんだな
0932912
垢版 |
2018/04/25(水) 09:56:12.06ID:hFZ7TZpJ
>>919>>928
ありがとうございます
ADODB.streamを調べていて気になったことがあったので重ねて質問させてください
いくつかのウェブページを見たところ、ADODAを利用するときには参照設定Microsoft ActiveX Data Objects 2.8をチェックしろと書いているページがいくつかありました(書いてないページもありました)

自環境で試したところ、特にチェックしなくてもADODB.streamは動作するみたいなんですが、この参照設定はどういうためのものなんでしょうか?
0933デフォルトの名無しさん
垢版 |
2018/04/25(水) 11:31:08.53ID:7GDPhwwg
>>931
煽るならせめておのれのスペルチェックぐらいしろ、と
あんたのインテリセンスを疑うぞ、と

見たり読んだりする前に、指が違和感感じねえの?
フィジカルセンスも疑っとけよ
0934デフォルトの名無しさん
垢版 |
2018/04/25(水) 11:47:13.44
>>932
Object型で使うなら参照設定はいらない
その代わりエディタの補完機能は使えないけど、動作に支障はない
0936デフォルトの名無しさん
垢版 |
2018/04/25(水) 12:43:28.06ID:qfD/6Ux6
VBAでHTMLに入っているJavaScriptのオンクリックを配列に入れたいのですがヒントを下さい
0940デフォルトの名無しさん
垢版 |
2018/04/25(水) 22:55:18.79ID:TGx01Nms
>>909
亀レスだけど、多分最初に「何言ってたんだろ俺・・・」となって
その後しばらく続けた後に
「あれ?パズルって違った意味で正しいじゃん」ってなって
更に少ししてから
「最初に言った意味と後で考えた意味って違うと思ってたけど実は根本は同じだったんだ。
やっぱり俺は正しかったんだ!!」
・・・ってなると思う。多分。

君の言ってることは正しいから
そのままの考えでやって行けばいいと思うよ。
0941デフォルトの名無しさん
垢版 |
2018/04/25(水) 22:59:37.34ID:K7PRE5LI
発言をリファクタしたいが
そもそも意図がわからない
まさにVBAメンタル
0942デフォルトの名無しさん
垢版 |
2018/04/25(水) 23:02:51.00ID:RV/USVw1
VBAエンジニアの鑑
0943デフォルトの名無しさん
垢版 |
2018/04/25(水) 23:30:05.36ID:TGx01Nms
なぜここにいる者がみなVBA「だけ」やってると思ってるような発言している人がいるんだろう。
何かと便利だからVBA「も」やっている人もいるというところまでの考えに至らないのかな?
0944デフォルトの名無しさん
垢版 |
2018/04/25(水) 23:40:48.35ID:lWlKIfdP
何かと便利?
そもそもまずこれVBAじゃなくてよくね?じゃ?
仕方なくVBA使うはめになるんだが
0946デフォルトの名無しさん
垢版 |
2018/04/26(木) 00:34:59.65ID:6UTEs8Zh
VBAはマジで他になにも使えない厳しい環境にいる人かなんかこじらせた人が使うもの
でも標準でPSあるから他になにも使えない環境ってのは今は滅多にないんだよね
0947デフォルトの名無しさん
垢版 |
2018/04/26(木) 00:58:31.77ID:/vLmdzNr
PSがVBAより便利とかいうやつはそもそもVBAの用途がわかってないとしか思えん
0948デフォルトの名無しさん
垢版 |
2018/04/26(木) 01:02:16.31ID:11we/xOQ
ここはVBAのスレだからVBAの話をするんじゃないのか
別に他の話題を出すなとは言わんが、なんでVBAなの?みたいな話は流石に空気読めてないかと
0949デフォルトの名無しさん
垢版 |
2018/04/26(木) 01:18:15.87ID:WexEyoKw
なんでVBAなの?は一つの案としてアドバイスでもあるだろ

100キロの道案内をチャリで行くにはどうしたらいいですか?
って聞いてきたら、まずなんでチャリなの?ってなるやろ
0950デフォルトの名無しさん
垢版 |
2018/04/26(木) 01:26:45.61ID:vXKBXetI
「なんでチャリなの?」をサイクリングスレで言い出すクソバカはどんな脳みそしてるんだって話題でしょ
海を渡りたいとかいう話なら別だけどチャリで行けそうだからチャリの話題を出してるのに
「チャリは疲れるから車で行け」とか「これだからチャリンコ乗りは」とか言い出すのは場違いに決まってるだろ
レス数が950を超えています。1000を超えると書き込みができなくなります。

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