Excel VBA 質問スレ Part52
レス数が950を超えています。1000を超えると書き込みができなくなります。
スレ立ての際は一行目に
!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/ エクセルは統計に使う関数が一通り揃ってるんで投資分野は使いやすいぞ
インジケータならMT4とか使った方がいいような気はするけど >>807
88世代でもそこはN-BASICと言って
ジジイっぷりを発揮するべき >>847
エクセルで指定されたシートの範囲を dll にて取り出す方法がわかりません >>851
むしろエクセルはまともに統計に使える関数少ないだろ。重回帰くらいしかない。
相関行列や時系列分析なんかないし。自分で作るしかない
しかもエクセルじゃビッグデータは重すぎて、全体的な見通しも悪い。 他の選択肢を知れば知るほどもうVBAはねえわってなるよね普通
VBAに執着する人ってどんだけ勉強嫌いなんだろう >>853
VBAでシートから配列に変換してdllに渡す
計算結果は配列でVBAに返す
dll側はシートなどのExcelオブジェクトと切り離す >>855
そんな事言うためにこのスレに留まってるの? フォルダAにある現在開いているファイル以外のファイルをフォルダBにコピーし、
その後、フォルダAにある現在開いているファイル以外を削除する方法を教えていただけますでしょうか。
よろしくお願いします。 >>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
これでどうかな
実験してないのでこけるかも知れない >>859
ありがとうございます。
理想としていたことができました。 >>848
ヴィーバアーって読むん? それともビーバー? ブック1のシート1とブック2のシート2を開いてシート2がアクティブの時、
シート1の選択範囲を取得する方法はありますか? 切り替わるタイミングでアクティブなセルの番地を拾っておけばできるんじゃないか。 エクセルのことわざわざ英語でEXCELって書くやつなんなん? 地味な違いだけど
ローマ字綴りの方がタイプしやすいと感じてる あーあー Eきもーちー♪
いや、思い出したんでついな(´・ω・`)b JIS(?)っぽい思想だとカタカナでエクセルなんだろうなぁ、とか >>865
こういうつまらないことにこだわる奴って気持ち悪いよね 複数シートの中で売上という文字列が入っているシートがいくつかあり、
そのシート内のB列にデータがないシートのみを削除する方法を
教えていただけますでしょうか。
宜しくお願い致します。 >>874
そのまえに、そんな乱暴にシートを削除してよいのか? >>874
ディテールの書き方が少し甘い
売上という文字列はシート名に入ってるの?
それともシート上のどこかのセルとかコメントに入ってるの? >>879
わかりづらくてすみません。
シート名に「売上〇〇月」と入っております。 その程度も書けないようじゃマクロ使わない方がいい。特にシート削除は理解してないと危険。 「B列にデータがない時」ってマクロの記録じゃ無理と違うか? マクロの記録でヒントでも掴んでみろって事じゃないの
みんなトライエラー繰り返してる中、トライもせずに質問投げるのは印象良くない >>874
・for each で全シートをなめます。
・シート名に「売上」が含まれている場合、さらにB列の値を数えます。
・条件に合致したらシートを削除します。
上2つはGGればいくらでも情報でてきます。
一番下はマクロ記録でわかります。
動作上不都合な挙動があれば、その挙動を潰す方法を調べます。
基本的な動作の羅列なので、がんばって。 シートを削除するのではなく、新しいファイルを作成する方向でやってくれないかな?
こういう素人が増えると困るんだよ。
一般人はファイルのバックアップもしないし、削除してゴミ箱まで空にして、ファイルを復元しろと言い出すから迷惑。 フォームやら速度が必須でない処理はVBSとかでやった方がいいね コレクションのforeach処理内で
コレクション削除したらヤバイんじゃないの >>874 を見直すと「売上」という文言が入っているシートと解釈した方が自然。
各シートのどこかに「売上」と入力されていたらという条件は不自然。 そうだね
一旦配列とかのコンテナに入れといて
for each アイテム in コンテナ
Worksheets(アイテム).Delete
next
が安全かな >>887
あらそうだっけ? じゃぁアプローチ方法かえないとね。
削除の度に再評価とか?
ワークシート数で回せばOK?
先に調査して配列格納したシート名で削除しにいくのが安全か。
どんな方法がスマートだろう?
>>885
ファイルのバックアップはそりゃやっておいた方が無難でしょうね。
それは作り手本人が実際に困ってその必要性を痛感した時点で
学べばいい。
元データが何かのシステムからExcel形式で何度でもサクッと出力
できるもので、その一次加工の工程ならなくてもいいと思う。 B列にデータがないのを効率よく判定する方法はなんだ?
背景色とかついてても空白セルならデータがないとすべきか
数式が入ってても結果が空白セルならデータがないとすべきか
半角スペースはデータがあると判定するのか
NaNやError Valueはデータがないとみなすか
考え出すと思ったより難しいなこれ >>892 B列最終行から上に向けてxlupして
データがあったら何行目か分かるから、
それで判定したらいいんでない?
と、俺は思った >>894
それで大丈夫かどうかは質問者にしか分からないので そんな自動化しなくてはいけないほど、シートの数が多いExcelファイルがあるなら、B列に値が入っていると決めつけているのも怖いよな。
そんなExcelファイルを作る職場だとExcelファイルのフォーマットが変更されていないかどうかのチェックも必要。 条件が曖昧ならここでうだうだ考えずに質問者に明確に書くよう言えば良いだろ。
それが出てこないなら質問の体をなさないということで却下するもよし、回答したい人間が自分の想像で
回答するもよしで。
質問に書かれていないバックアップがどうこうってのも、そんなもん質問者が考えれば良いことであってこっちが
どうこう考えることじゃない。 countaで対象範囲拾うだけだと思ったけど、データ有り無し判定。 >>898
下手な回答を書かれると第3者が参考にしてしまう。 >>864
同一EXCELアプリケーション内でも良いので教えていただけますか
>>876
Activeではないシートの選択範囲を取得するには、どのように記録を取ればいいでしょうか >>900
頭がおかしくて草
そんなもん参考にする奴の責任だろw >>901
やったことがないけど、ワークブックオブジェクト変数を使えばできるかな。 ちょっと教えて下さい
列挙型の項目に数字が先頭に来ると表示が変になるのですが、なんとかなりますか? 何がどうなってるか具体的な事一切説明せずにおかしい!おかしい!って言うのがこのスレの質問者のデフォ w >>901
アクティブなシートをコードで切り替えていけばSelectionで取れる
たとえば
Workbooks("Book1.xlsx").Worksheets(1).Activate
Debug.Print Selection.Address
Workbooks("Book2.xlsm").Worksheets(2).Activate
Debug.Print Selection.Address
これで両方ブックの選択中のセルアドレスが出力されるはず
選択範囲という概念はActivateされているシートにしかないので
これ以外の方法でやるなら>>863のようにどっかに書き出しておく必要があると思われる >>906
それだとAddressプロパティを持たないオブジェクトがSelectされてるときにエラーにならないか?
TypeName(Selection)で"Range"が返ってきたときだけ番地を拾うようにするとか、Shapeオブジェクトの場合はTopLeftCell.Addessを拾うようにするとか >>907
たとえばーなので、あとは>>862の好きにしてってことで
そもそも2つブックを開いてセルを選択するという操作を人間がやる必要性があるのか
自分だったらそこも自動化したいと思いましたとさ 興味本位で触り始めて面白かったから本腰入れて勉強してるんだが
教本レベルから実務までのハードルが結構高いな
これ、基本的なコード覚えてしまえばほとんどパズルだよね?
上手になるとまた別の見え方ができるんかね >>908
ありがとうございます。
ひとまず、ワークブック切り替えで対応してみます。 >>909
実務レベルで使えるようになってから自分で作ったプログラムを見てみると確かに基本的なコードや基本的なアルゴリズムのパズルでしかないと思えるが、教本を読まないとコードが書けない初心者のうちからそのように侮っていても実務レベルに到達することはない
パズルの組み方そのものが問題になるからだ
実務で行いたい処理があるという前提で、そのためにVBAで実現する機能はどのようなものか、どのようなコードを書けば安全かつ確実に期待通りの機能を実現できるか、というベクトルの思考を繰り返して試行錯誤する以外に近道はないぞ 現在、入力ファイル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コードには対応していない?ようでした >>912
16ビットのJISコードに変換したら上位8ビットと下位8ビットに分けてChrB関数で1バイトずつ出力すればいい >>912
文字コードなんか自分で変換するより既製品を使った方が早いよ
変換ツールや変換関数は無数に公開されてる >>913
そうなんですか?不勉強でした
>>914
ありがとうございます
今日はもう帰宅してしまったので明日試してみようと思います
>>915
それはそうかもしれないですが、どうせ他にも色々とツールを介して値やフォーマットをいじったりするので、別のツールを使わずについでに直せるならその方が楽だなって思いまして
繰り返し使うものなので、一手間増えるだけでもヒューマンエラーを呼び兼ねませんし Get-Content ./Input.txt -Encoding ([Text.Encoding]::GetEncoding('Shift-JIS')) |
Out-File ./Output.txt -Encoding ([Text.Encoding]::GetEncoding('ISO-2022-JP')) >>916
そのひと手間のヒューマンエラーよりお前さんがバグを作り込む確率の方が高いと思われ >>912
なんでADODB.Stream使わないのか理解に苦しむ 日本語の方言の違いなんて、自分で調べられない
Ruby を使え >>916
そもそもなぜExcel VBAでやるのか? PowerShellなら1行で終わり
VBAは金とって無駄ばかりなんだから参っちゃうよ ちょっと待てオイ、kanjiコード変換機能ぐらい標準で提供されていないのか。
何かの参照を有効にする程度で実現できないと、VBA、幾らなんでも使えないんじゃ。 VBAは子供のオモチャ
幸い日本のビジネスマンは子供レベルしかいないので重宝されてる 日頃の鬱憤を「VBA使えない」と喚くことでしか発散できないってのもなかなか可哀想だなw
本当に使えなかったら普及してないんだけどそこまで頭回らない辺りが不憫 使える・使えないが普及率に直結するとか世界観チープすぎるだろ
VBAはチープな言語だからお似合いっちゃそうだが 「直結する」なんて言ってないんだけどw
お人形遊びが好きだねぇ図星を疲れたのがそんなに悔しかったんだな >>919>>928
ありがとうございます
ADODB.streamを調べていて気になったことがあったので重ねて質問させてください
いくつかのウェブページを見たところ、ADODAを利用するときには参照設定Microsoft ActiveX Data Objects 2.8をチェックしろと書いているページがいくつかありました(書いてないページもありました)
自環境で試したところ、特にチェックしなくてもADODB.streamは動作するみたいなんですが、この参照設定はどういうためのものなんでしょうか? >>931
煽るならせめておのれのスペルチェックぐらいしろ、と
あんたのインテリセンスを疑うぞ、と
見たり読んだりする前に、指が違和感感じねえの?
フィジカルセンスも疑っとけよ >>932
Object型で使うなら参照設定はいらない
その代わりエディタの補完機能は使えないけど、動作に支障はない >>934
あー、そういうことなんですね
ありがとうございます
スッキリしました VBAでHTMLに入っているJavaScriptのオンクリックを配列に入れたいのですがヒントを下さい >>933
タイポ指摘でドヤ顔って子供でも恥ずかしくてできないことをようやるねぇ >>909
亀レスだけど、多分最初に「何言ってたんだろ俺・・・」となって
その後しばらく続けた後に
「あれ?パズルって違った意味で正しいじゃん」ってなって
更に少ししてから
「最初に言った意味と後で考えた意味って違うと思ってたけど実は根本は同じだったんだ。
やっぱり俺は正しかったんだ!!」
・・・ってなると思う。多分。
君の言ってることは正しいから
そのままの考えでやって行けばいいと思うよ。 発言をリファクタしたいが
そもそも意図がわからない
まさにVBAメンタル なぜここにいる者がみなVBA「だけ」やってると思ってるような発言している人がいるんだろう。
何かと便利だからVBA「も」やっている人もいるというところまでの考えに至らないのかな? 何かと便利?
そもそもまずこれVBAじゃなくてよくね?じゃ?
仕方なくVBA使うはめになるんだが おれはここ数年VBAなんてやってないよ
Excelに関する処理はVBSやPS VBAはマジで他になにも使えない厳しい環境にいる人かなんかこじらせた人が使うもの
でも標準でPSあるから他になにも使えない環境ってのは今は滅多にないんだよね PSがVBAより便利とかいうやつはそもそもVBAの用途がわかってないとしか思えん ここはVBAのスレだからVBAの話をするんじゃないのか
別に他の話題を出すなとは言わんが、なんでVBAなの?みたいな話は流石に空気読めてないかと なんでVBAなの?は一つの案としてアドバイスでもあるだろ
100キロの道案内をチャリで行くにはどうしたらいいですか?
って聞いてきたら、まずなんでチャリなの?ってなるやろ 「なんでチャリなの?」をサイクリングスレで言い出すクソバカはどんな脳みそしてるんだって話題でしょ
海を渡りたいとかいう話なら別だけどチャリで行けそうだからチャリの話題を出してるのに
「チャリは疲れるから車で行け」とか「これだからチャリンコ乗りは」とか言い出すのは場違いに決まってるだろ レス数が950を超えています。1000を超えると書き込みができなくなります。