VBA技術解説 マクロVBAの高速化・速度対策の具体的手順と検証ExcelマクロVBAの問題点と解決策、VBAの技術的解説
Excel VBAでパスワードロックを解除する方法です。 VBAのパスワードロックは、ユーザーがプログラムを変更できないよう制限する為に設定するものです。しかし、時にパスワードが紛失するということがあります。「パスワードを忘れてしまった」「開発者が退職し、パスワードがわからない」などが理由として多いのではないでしょうか。 ひどい案件でVBAのパスワードがかかったまま渡され、担当者に聞いたところ「知らない」と言われて途方に暮れるプログラマーもいたと聞いたことがあります。 そんな方たちの助けになればと、VBAのパスワード解除方法を紹介します。 くれぐれも悪用したり、他人の著作物を覗き見るような不正はしないでください。 全て自己責任において実施してください。当方では一切の責任を負いません。 今回は Windows7 / Excel 2010 を使って検証しました。Excel 2007 以降であれ
SELECT Products, count(*) as [cnt], sum(cost) as [sum] FROM [A$] GROUP BY Products 操作は簡単、「SQL」シートのB1セルにに上記文を貼りつけして ボタンを押すだけです!! なんと、シート同士を結合することも可能なのでvlookup()を 指定せずともお手軽便利!! 他にもいろんな集計方法をサンプルで載せておきます。 /* Aシート一覧 */ select * from [A$] /* A,Bシート一覧 */ select * from [A$],[B$] where [A$].CID = [B$].CID /* バナナの販売数 */ select count(*) from [A$] where Products = 'バナナ' /* バナナの売上 */ SELECT Products, sum(cost)
ExcelでADO接続する 接続定義のメモ With cn .Provider = "Microsoft.ACE.OLEDB.12.0"'------------① .Properties("Extended Properties") = "Excel 12.0;HDR=No;IMEX=1"'--② .Open ThisWorkbook.FullName End With ①Provider ProviderはProvider for Microsoft Jet を指定する。 Excel 2003までの形式は8.0、Excel2007形式には12.0 ②接続プロパティ ▼Excel 12.0 ISAMバージョンを記載。 Jetと同様で2003以前の形式の場合は8.0,、2007形式の場合は12.0 ▼HDR=No HDR=Yes No 1行目をヘッダーとするならYESに。ヘッダーが無い場合
日本のSEはExcelがだぁ~いすき! だから、なんでもかんでもExcelを使うよ。 そんなとき便利なのが、指定フォルダ配下のブックを操作するVBAマクロ。 例えば、「データの集計」や「ヘッダ・フッタ・更新履歴の修正」などなど。 毎回そんなマクロ組んでいたら1日が終わってしまう。 Office2003までの「FileSearch」は何かと便利だった。 しかし、Office2007以降の「FileSystemObject」は何かと厄介。 詳しくは、以下のエントリーを参照してほしい。 ということで、そんなときに使えるVBAマクロのテンプレートを紹介する。 指定フォルダ配下のブックを操作する メイン処理は以下の通り。 ブックのみの操作の場合は、44行目にロジックを追加する。 シートの操作をする場合は、48行目にロジックを追加する。 Option Explicit '---------------
・http://www.excelhero.com/blog/2010/05/multi-threaded-vba.html ・http://www.excelhero.com/blog/2010/05/multi-threaded-vba-update.html ここのブログのWebスクレイピングのサンプルがマルチ処理の参考になったのでメモ サンプルコードはここのブログの文中にあるリンクからダウンロードした。 ソースを見ると、マルチ処理を実現する手法としては、 ポイント①Excel VBAからVBscriptを生成する。(ここでマルチ処理用に複数個のscriptを生成) ポイント②生成されたVBscriptは処理実行後の結果をExcelシートにコピーする。 といったロジックになっている。(マルチプロセス) このへんがキモ! 他にも、隠しフォームの周期監視処理((Javascriptのse
This webpage was generated by the domain owner using Sedo Domain Parking. Disclaimer: Sedo maintains no relationship with third party advertisers. Reference to any specific service or trade mark is not controlled by Sedo nor does it constitute or imply its association, endorsement or recommendation.
【目次】 まえがき vbac の入手方法 vbac の使い方 vbac の仕様・注意点 余談1 余談2 【まえがき】 Microsoft Office製品で利用可能なVBAのコードは、ExcelやWordなどのバイナリファイルに内包される形で保存されます。このために、いわゆるバージョン管理システムでは適切に管理することができず、メンテナンス性が悪いという問題があります。 また、バイナリファイルに内包されるために、コードの確認や微修正などの細々した作業のためにも、WordやExcelを立ち上げ、VBEを開く手間がかかります。小規模にVBAコードを書いている分には困らないのですが、コード量が増えてきた場合(*1)や、複数人に配布したものを保守する場合などにおいては、お世辞にも使い勝手が良いとは言えません。 (*1)個人的な感覚ですが、1ファイルに含まれる総コード量が2,3千行を越えると、どうに
今回は公開されている既存のライブラリ「Ariawase」を使って解説したいと思う。 Ariawaseは次のページから入手できる。 github.com ページを開くと右下のほうにZipでダウンロードできるボタンがあるのでこちらを入手する。 zipを解凍するとbuild.batファイルがあるのでそれを使ってビルドするのだが、あらかじめExcelでマクロのセキュリティを次のように設定しておく必要がある。 そしてbuild.batを実行すると、binフォルダが作成され、その中に「Ariawase.xlsm」が入っている。 Ariawaseは便利なライブラリなのだが、以下を見てのとおり、モジュール数が多いのが難点である。 そもそも自由にモジュールを入れるフォルダを作れたら何も問題はないのだが、VBAでは残念なことに標準モジュール・クラスモジュールなどのデフォルトフォルダの配下をさらに整理することは
SIerはなんでもExcelで管理したがる。データベースの中身やコード管理など…。 たとえばテストのエビデンスを取得するときも、データをExcelに貼り付けて確認フローに回される。 そのため、Excelファイルを比較することが場面によく出会うだろう。 そこで、VBAで2つのExcelファイルを高速で比較するマクロをつくってみた。 また性能改善のTips、コツもあわせてまとめる。 (SIerを退職してから早1年半、Excelをまったく触らなくなった。また、この記事のメモも2年前に書いたものなので説明が雑になることがありますw) 2つのファイルを比較する Sheet1またはThisWorkbook ' Sheet1 Option Explicit ' 処理時間計測用 Private Declare Function GetTickCount Lib "kernel32" () As Long
背景 一般のコンピュータによる計算結果と同様に,Excelによる計算結果ももちろん不正確である。 関連するリンクをまとめておく。 Excel で浮動小数点演算の結果が正しくない場合がある(Microsoft) Excelの演算誤差(三重大学 奥村研究室) Excel使うな(Okumura's Blog) Excel使うな:2010版(Okumura's Blog) Excelが計算ミス(Okumura's Blog) Excelでの数値表現と計算精度(神奈川大学 経済学部) Excel:エクセルの計算精度(ガスコン研究所) “達人”芳坂和行氏に学ぶ、エクセル「演算誤差」対策講座(日経 PC online) Numeric precision in Microsoft Excel(Wikipedia英語版)
単純に考えれば、セル A1は4.8-4.7= 0.1, セル B1 も 0.1 であるから、セル C1 に =A1=B1 という計算式を入れれば結果は TRUEである。以下同様で、セル C2 もセル C3 も TRUEとなるのが「アッタリマエ」である。しかし、実際にこの計算を行ってみると以下のように全て FALSEとなる。なぜ? 1. 無限小数を含む計算を有限桁数で計算すると何が起きるか たとえば、1÷3を計算して、その答えに3を乗ずる計算を考えてみよう。1÷3は 0.333333333…であるから、紙に中間の結果を書こうとするといつまでたっても終わらない。それでは困るので、中間の計算結果では小数点以下10桁まで書くというルールを(便宜的に)作る。すると、 1÷3 = 0.3333333333 0.3333333333×3=0.999999999 あれ。1÷3に3を乗じたのに、1に戻ってい
掲示板に書いた誤差関係のコメントです。 眉に唾を付けて また誤差の話なのですが、今キャンペーン中なもので。(^_^;) Excel の内部では、数値は 2進数で表現されていますので、10進小数はそもそも存在していません。0.1 も 0.2 も最初から、ないのです。 ところが、Excel は便利にできていて、存在しないものを存在しているかのように見せてくれます。仕組みを知らない人は 0.1 があるものだと思い込みます。計算誤差を目にして、初めて、自分の思い込みに気が付きます。 =0.1+0.2 という式も、眉に唾を付けて見れば、本当の姿は… =0011111110111001100110011001100110011001100110011001100110011010 +001111111100100110011001100110011001100110011001100110011001
2005.9.8 作成 2018.6.25 微修正 Excel で VBA プログラミングするときに陥る「自動型変換」 に関係する落とし穴について書きます。これは恐ろしい罠と 言ってもよいでしょう。 まず、次の事実を知る必要があります。 1. セルに入るデータは「数値」「文字列」「日付型」などの 型を持っている 2. 数値 10 と文字列 "10" は区別される(等しくない) 3. 1. での型と「セルを右クリック」→「セルの書式設定」→「表示形式」 で設定する事項(標準 or 数値 or 日付 or 文字列 or ....) は「別物」である。 1. の型は次のようにして表示させることが出来ます。 ここではイミディエイトウィンドウに表示します。 Debug.Print TypeName(Range("A1").Value) Double, String, Date などの型が得られます。
日付の計算はDATEDIFを参照してください。概ね、時間は通常の四則計算やオートサムで計算可能です。以下おかしなことが起こる一例と対策を挙げてみます。 エクセルで時間を計算するときに気を付けていただきたいことがあります。コンピュータは内部で2進数が使われているのはよくご存じだと思います。0と1の組み合わせで数字も文字も処理しています。 2進数は1の次が10です。10は10進数で2です。1桁上がると数値が倍になります。10進数は1桁上がると10倍ですね。逆に1桁下がると2進数は2分の1になります。10進数は10分の1です。2進数の0.1は1が一桁下がっているので1の2分の1で10進数でいうところの0.5です。 2進数 10進数 10 2 1 1 0.1 0.5 0.01 0.25 0.001 0.125 2進数では10進数の0
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く