正規表現のコードなんですが、 上手く動きません。 何故でしょうか… Sub Test() Dim reg As Object Dim ans As Object Dim c As Range Set reg = CreateObject("VBScript.RegExp") For Each c In Range("A1", Range("A" & Rows.Count).End(xlUp)) With reg .Pattern = "^【[(1)-(20)](\d*/\d*)" Set ans = .Execute(c.Value) End With If ans > 0 Then If Len(ans(0).submatches(0)) > 0 Then Debug.Print c.Address & "|" & ans(0).submatches(0) End If End If Next End Sub
↧
vbaで正規表現
↧
名前を付けてプロジェクトを保存
.NET2005です。既存のプロジェクトを「名前を付けて保存」はできないのでしょうか。お願いします。
↧
↧
関数の引数に括弧を使う理由
VBAを使っていて 関数fffに引数として配列aaaを入れたいとします。 通常 fff(aaa) と指定するところですが fff(aaa()) と括弧を付けて指定する場合もあるようです。 このように括弧を付けるのはどういう理由があったでしょうか?
↧
vb2010にてASPWEBシステムを作成していま
す。 もともとローカルドライブにソースを置いて開発&デバッグしておりました。 今回、ソースをネットワークドライブに移動しました。 ソースの読み込みは、問題無くできるのですがデバックを行うと下記のメッセージエラーが発生します。 対処法を教えていただけないでしょうか?? セキュリティ例外 説明: このアプリケーションはセキュリティ ポリシーで許可されていない操作を実行しようとしました。このアプリケーションで必要なアクセス許可を取得するには、システム管理者に相談するか、構成ファイルでアプリケーションの信頼レベルを変更してください。 例外の詳細: System.Security.SecurityException: 型 'System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' のアクセス許可の要求に失敗しました。 ソース エラー: 現在の Web 要求の実行中にハンドルされていない例外が生成されました。障害の原因および発生場所に関する情報については、下の例外スタック トレースを使って確認できます。 スタック トレース: [SecurityException: 型 'System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' のアクセス許可の要求に失敗しました。] System.Reflection.Assembly._GetType(String name, Boolean throwOnError, Boolean ignoreCase) +0 System.Web.UI.NamespaceTagNameToTypeMapper.GetControlType(String tagName, IDictionary attribs, Boolean throwOnError) +98 System.Web.UI.NamespaceTagNameToTypeMapper.System.Web.UI.ITagNameToTypeMapper.GetControlType(String tagName, IDictionary attribs) +11 System.Web.UI.TagPrefixTagNameToTypeMapper.System.Web.UI.ITagNameToTypeMapper.GetControlType(String tagName, IDictionary attribs) +127 System.Web.UI.MainTagNameToTypeMapper.GetControlType2(String tagName, IDictionary attribs, Boolean fAllowHtmlTags) +228 System.Web.UI.MainTagNameToTypeMapper.GetControlType(String tagName, IDictionary attribs, Boolean fAllowHtmlTags) +28 System.Web.UI.RootBuilder.GetChildControlType(String tagName, IDictionary attribs) +20 System.Web.UI.ControlBuilder.CreateChildBuilder(String filter, String tagName, IDictionary attribs, TemplateParser parser, ControlBuilder parentBuilder, String id, Int32 line, VirtualPath virtualPath, Type& childType, Boolean defaultProperty) +69 System.Web.UI.TemplateParser.ProcessBeginTag(Match match, String inputText) +526 System.Web.UI.TemplateParser.ParseStringInternal(String text, Encoding fileEncoding) +896 バージョン情報: Microsoft .NET Framework バージョン:2.0.50727.8000; ASP.NET バージョン:2.0.50727.8001
↧
Label2.visible=false
任意の関数式を入れるとグラフを描くプログラムを作りました。表示するのに時間がかかる(といっても1秒程度ですが)ので「計算中!」と赤で表示させ、グラフが描き終わると消したいと思い、グラフ開始時にLabel2.Visible=True、終了時にLabel2.Visible=Falseを付けましたが、思惑通りには行きません。何故でしょう。おわかりになる方、教えてください。
↧
↧
ExcelVBA バイナリファイルの全半角の判断
Excel VBAでテキストファイルを、バイナリファイルとして読込み シートに出力しようとしています。 しかしテキストファイルには全角半角が混ざっており、うまく出力できません。 Dim buf As Byte 上記の変数に読込んだバイナリデータ1バイト分を入れるとして、 これが半角文字なのか、全角文字の半分なのか、判断することはできるのでしょうか。
↧
VB2010のDatabindingについて
現在VB2010ExpにてSQLサーバとのデータのやり取りをするプログラムを作成しています。 SQLサーバから読み込んだ内容をDataRepeaterで表示しています。 この時数値フィールドの内容により文字列に変更してDataRepeater内にあるラベルに表示したいため以下のように作成しました。しかし開発環境では正常に変換されるのですが、別のPCにインストーラを使用してインストールした場合に処理されません。よろしくお願いします。 【読み込んだ時に】 FlagBinder = New Binding("Text", dtData, "FLAG")・・・dtDataはDataTable lblFlag.DataBindings.Add(FlagBinder) 【変換するイベント】 Private WithEvents FlagBinder As Binding Private Sub FlagBinder_Format(ByVal sender As Object, ByVal e As System.Windows.Forms.ConvertEventArgs) Handles FlagBinder.Format if e.Value = 0 Then e.Value = "×" else e.Value = "○" End If End Sub こんな感じで作成しています。 VB2013でも同じく開発環境では正常に変換されますが別PCでは駄目でした(初期内容が表示されるだけ)。 両方のPCともに OS:Windows7(SP1) .NetFramework 4.5.1 (でもこの.NetFrameworkが怪しそうなのですが・・・) 以上、よろしくお願いいたします。
↧
VB.netでフォームのクローン
VB.net2013にて、フォームアプリ作成中です。 アプリの構成としては、 Aフォーム、Bフォームの2画面があり Aフォームの呼出ボタンにより、フォームを呼び出す仕組みです。 Bフォームでは、データ編集できる 下記のような入力コントロールが多数配置されています。 ・テキストボックス ・スプレッドシート ・ラジオボタン ・ユーザコントロール各種 等々 ※Aフォームには、編集状態を保持するために Bフォームのインスタンスを保持しています。 Bフォームには、キャンセルボタンが配置してあり、 これにより編集状態を、画面を開きなおした段階まで戻したいと思っています。 Bフォームを表示する際に、 Aフォームの保持している、Bフォームのインスタンスを クローンコピーし退避しておくことで Bフォームクローンで元に戻そうと構想しています。 ◾︎案1ーーー memberwisecloneのクローンでは、 Bフォームの参照型のメンバをディープコピー出来ないようでした。 ーーーーーー ◾︎案2 ーーー 下記参考サイトより、 メモリ上に一旦シリアライズして、コピーする方法は、 基底であるFormクラスがシリアライズできないため こちらも出来ませんでした。 d.hatena.ne.jp/tekk/touch/20100131/1264913887 ーーーーーー フォーム上のコントロールをクローンする 他に良い方法はないでしょうか? 案1では、値型のメンバはmemberwisecloneでクローン出来たため 残りのコントロールをどのようにディープコピーするかで 悩んでいます。 InvokeMemberなるもので、対象のコントロールについて 別インスタンスを生成するというところは出来たのですが コントロールの編集途中までの各種プロパティ値までは 引き継がれませんでした。 やはり別インスタンスとしたところに 再度入力値を設定しなおしてあげる必要があるのでしょうか? 作業工数と、汎用性を考えると もっと他に良い方法があるのではないか とは思うのですが・・・ もしよりよい方法をご存知の方いらっしゃいましたら ご教授願います。よろしくお願いいたします。
↧
VBAでテキストボックスに値を入れたい
お世話になります。 エクセルのVBAで、WEBブラウザ内にあるテキストボックスに 文字を入れたいと思っております。 以下のようなページは処理できたのですが、 ・対象ページのブラウザのソースを見ると「textarea」のタグがあり、 それを取得して、「value」に文字を入れる 「スタイルシート」で書かれたページの処理の方法がわかりません。 お手数ですが、ご存じの方宜しくお願いします。
↧
↧
VB初心者です
エクセルVB初心者です。 ウェブサイトから情報を取ろうと思いました。 <dt class="market zsg-fineprint"> <!-- Market Text & tooltip --> <!-- Non-Market Text & Tooltip --> Market <sup>®</sup>: $1.18M</dt> <dt class="market zsg-fineprint"> から"1.18M"を取り込んで現在のセルから右に6個目のセルにコピペしようと思い、次のようなSubを作りましたが、うまく行きません。 Sub getMarket(objIE As Object) Dim MarketPosition As Integer Dim DollarPosition As Integer MarketPosition = InStr(1, objIE.Document, "Market") DollarPosition = InStr(marketPosition, objIE.Document, "$") ActiveCell.Offset(0, 6) = Mid(objIE.Document, DollarPosition + 1, 4) End Sub うまく動作させるためにはどうしたらよいでしょうか?
↧
ExcelのToggleButtonを排他的に。。
師も走りまわる12月。。皆様(師)も走りまわっていることでしょう。 私は。。。走りません、はい。 本題です。 ExcelのVBAでToggleButtonを排他的に使いたいのです。 調べるとオプションボタンになさいと書かれてはいるのですが・・・。 ワークシート上にToggleButton1~3があります。 1を押す(凹)と“処理A”,もう一度押す(凸)と“処理Z” 2 同上 “処理B”, 同上 3 同上 “処理C”, 同上 以下のコードでなんとなく動くのですが,排他的動作の際には,TrueなToggleButton#の動作をおこなってしまいます。 Excel2007,Windows7です。 師の皆様の良い御提案が御座いましたら御教示下さい。 ----ボタンがあるシートモジュールに記載---------------------------------------- Option Explicit Dim strCode As Variant Private Sub ToggleButton1_Click() If ToggleButton1.Value = False Then strCode = "処理中Z" ' Debug.Print "AからZに戻します。" Else strCode = "処理中A" ' Debug.Print "Aを押しました。" ToggleButton2.Value = False ToggleButton3.Value = False End If 'Debug.Print "Aでの処理をします。" Call 処理(strCode) 'Debug.Print "Aから処理をしました。" End Sub Private Sub ToggleButton2_Click() If ToggleButton2.Value = False Then strCode = "処理中Z" ' Debug.Print "BからZに戻します。" Else strCode = "処理中B" ' Debug.Print "Bを押しました。" ToggleButton1.Value = False ToggleButton3.Value = False End If 'Debug.Print "Bでの処理をします。" Call 処理(strCode) 'Debug.Print "Bから処理をしました。" End Sub Private Sub ToggleButton3_Click() If ToggleButton3.Value = False Then strCode = "処理中Z" Else strCode = "処理中C" ToggleButton1.Value = False ToggleButton2.Value = False End If Call 処理(strCode) End Sub Sub 処理(strCode) Dim i As Long Dim Start As Single Dim Finish As Single Start = timer i = 0 'Application.ScreenUpdating = False Application.Calculation = xlCalculationManual For i = 1 To 1000 i = i + 1 Cells(2, 1).Value = strCode & i Next i Application.Calculation = xlCalculationAutomatic 'Application.ScreenUpdating = True Cells(1, 1).Value = strCode Finish = timer Cells(3, 1).Value = Format$(Int((Finish - Start) * 10 ^ 4 + 0.5) / 10 ^ 4) End Sub --------------------------------------------------------------------------- おまけ: 上記サンプルを作ってみましたが,ToggleButton1だけ相対的に処理速度が速いです・・・。 なぜなんでしょう??
↧
VBAでWEBのリンクをクリックしたい
お世話になります。 VBAで添付画像の赤色枠の箇所を、自動でクリックしたいのですが、 実現できません。 ブラウザで「ソースを表示」しても「あいうえお」という値が入ったタグが 出てこないのです。 文字数が原因で全文載せることができないのですが、以下に「ソースを表示」で 記された内容を記載しますので、知識ある方教えて頂けないでしょうか? ★「ソースを表示」 <!DOCTYPE HTML><html dir="ltr"><head> <style type="text/css"> @font-face { font-family: 'Open Sans'; font-style: normal; font-weight: 400; src: local('Open Sans'), local('OpenSans'), url(//fonts.gstatic.com/s/opensans/v10/u-WUoqrET9fUeobQW7jkRT8E0i7KZn-EPnyo3HZu7kw.woff) format('woff'); } @font-face { font-family: 'Open Sans'; font-style: normal; font-weight: 600; src: local('Open Sans Semibold'), local('OpenSans-Semibold'), url(//fonts.gstatic.com/s/opensans/v10/MTP_ySUJH_bn48VBG8sNSha1RVmPjeKy21_GQJaLlJI.woff) format('woff'); } </style> <meta name="com.google.blogger.b2.gwt.dashboard.DashboardModule::gwt:property" content="baseUrl=https://www.blogger.com/static/v1/gwt/"> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <meta name="description" content="Blogger は Google の無料のブログ公開ツールで、世界中のユーザーとアイデアの共有を簡単に行うことができます。Blogger では、テキスト、写真、動画を個人のブログやチーム ブログに簡単に投稿することができます。"> <meta name="keywords" content="ブロガー, ブログスポット, ブログ, ブロガードットコム, ブログスポットドットコム, 無料ブログ, 個人ブログ, ウェブログ, ブログを作成, 新規ブログ, blogger, blogspot, blog, blogger.com, blogspot.com, free blog, personal blog, weblog, create blog, new blog"> <title>Blogger: Blogger ダッシュボード</title> <script type="text/javascript">(function() { var b=window,f="chrome",g="tick",k="jstiming";(function(){function d(a){this.t={};this.tick=function(a,d,c){var e=void 0!=c?c:(new Date).getTime();this.t[a]=[e,d];if(void 0==c)try{b.console.timeStamp("CSI/"+a)}catch(h){}};this[g]("start",null,a)}var a;b.performance&&(a=b.performance.timing);var n=a?new d(a.responseStart):new d;b.jstiming={Timer:d,load:n};if(a){var c=a.navigationStart,h=a.responseStart;0<c&&h>=c&&(b[k].srt=h-c)}if(a){var e=b[k].load;0<c&&h>=c&&(e[g]("_wtsrt",void 0,c),e[g]("wtsrt_","_wtsrt",h),e[g]("tbsd_","wtsrt_"))}try{a=null, b[f]&&b[f].csi&&(a=Math.floor(b[f].csi().pageT),e&&0<c&&(e[g]("_tbnd",void 0,b[f].csi().startE),e[g]("tbnd_","_tbnd",c))),null==a&&b.gtbExternal&&(a=b.gtbExternal.pageT()),null==a&&b.external&&(a=b.external.pageT,e&&0<c&&(e[g]("_tbnd",void 0,b.external.startE),e[g]("tbnd_","_tbnd",c))),a&&(b[k].pt=a)}catch(p){}})();b.tickAboveFold=function(d){var a=0;if(d.offsetParent){do a+=d.offsetTop;while(d=d.offsetParent)}d=a;750>=d&&b[k].load[g]("aft")};var l=!1;function m(){l||(l=!0,b[k].load[g]("firstScrollTime"))}b.addEventListener?b.addEventListener("scroll",m,!1):b.attachEvent("onscroll",m); })();</script></head> <body id="blogger-dashboard" class="lang_ja"><script type="text/javascript"> var DashboardClientFlags={0:true,1:true,5:true,9:true,11:10000,12:"/go/adsensehelp",19:"{\x221\x22:{\x221\x22:\x22\\u3084\\u307e\\u3060\\u305f\\u308d\\u3046\x22,\x225\x22:\x22https://plus.google.com/111415095292153979878\x22,\x226\x22:true},\x222\x22:[{\x221\x22:\x223265592934540335
↧
オートフィルター配列設定時の文字数制限について
EXCEL VBAで困っています。 約60000行の表があり、所定行に以下のようなデータが入力してあります。 A、B、D A、C C、H D、E F、G、H ・・・・ これに対し、別リスト(B、D、H・・・)のどれかが含まれている項目を オートフィルターで抽出するマクロを作成しており、 各一致データをリストアップするところまで完成しております。 抽出したリストを、AutofilterのプロパティCriteria1に配列で設定したところ、 150項目中4件のみ抽出されませんでした。 その際、特にエラーも出ていません。 抽出されなかった4件の内容を確認したところ、セル内に文字が300程度あり もしかしたらCriteria1で配列設定するのに文字数制限があるのではと 考えております。 この原因がわかる方がいれば教えていただきたいのと 代替の対処法を教えていただきたければうれしいです。 以上、よろしくお願いします。
↧
↧
テキストファイルを直接置換する方法
VBAに関する質問です。 複数のテキストファイルを読み込んで 指定した文字列を別の文字列に検索・置換してくれるプログラムを作りたいと考えています。 これをするためには一度 Set MyTxt = FSO.OpenTextFile(StrPath, 1) Do While MyTxt.AtEndOfStream = False hairetu(xxx) = MyTxt.ReadLine loop のようにしてテキストデータを全て配列に読み込み、 Replace関数で一つずつ検索・置換した後に Open StrPath For Output As #1 Print #1, hairetu(xxx) のようにしてファイルを出力し直すしかないですか? 配列に読み込まずに 既存のファイルを直接編集する方法を教えてください。
↧
""の中身を取得する方法
VBAを使っています。 htmlファイルを読み込んで href="http://www.xxxx.html" の http://www.xxxx.html このURLの部分だけを順番に抽出し配列に保存するプログラムを書きたいのですが どのように書けば良いですか?
↧
GDI+を使ったビット数とDPIの扱い
http://oshiete.goo.ne.jp/qa/8858627.html このページでVBAのGDI+を使った8bitや24bitの画像の取扱方にについて教えていただきました。 追加の質問なのですが 画像を読み込んで画像のビット数を調べるにはどうしたら良いですか? 8bitなのか24bitなのか? それと読み込んだ画像のdpiを取得する方法および dpiを設定して画像を保存するにはどうしたら良いですか? 検索して調べてみましたが見つかりませんでしたので ご助言いただけないでしょうか?
↧
エクセルのマクロについての質問です。
エクセルのマクロについての質問です。 複数のシートのデータを一つのシートにまとめるマクロを使用しています。 以下のものになります。 Sub まとめ() Dim i As Long, ii As Long ii = 1 With Worksheets .Add before:=.Item(1) For i = 2 To .Count .Item(i).Range("BX6:CQ15").Copy .Item(1).Cells(ii, "A") .Item(i).Range("C59:U68").Copy .Item(1).Cells(ii, "U").PasteSpecial Paste:=xlPasteValues ii = ii + 10 Next i End With Application.CutCopyMode = False Range("1:1").Insert Sheets(2).Range("BX5:CQ5").Copy Sheets(1).Range("A1") Sheets(2).Range("C58:U58").Copy Sheets(1).Range("U1") Columns("B").SpecialCells(xlCellTypeBlanks).EntireRow.Delete Sheets(1).Columns("C:D").Delete Sheets(1).Columns("F:G").Delete Sheets(1).Columns("G:O").Delete End Sub このマクロを使用してまとめたシートの数値の部分(各シートのC59:U68のデータを貼り付けた部分、まとめたシートのH2のセルが起点です)を変更するとコピー元(各シートのC59:U68)の数値も同じように変わるというものを作りたいです。 いろいろと調べましたが手も足も出ませんでした。 ご教示いただけないでしょうか? 宜しくお願いいたします。
↧
↧
DataRepeater上のチェックボックス
VB2013にてデスクトップアプリを作成しています。 フォーム上にVBPowerPack12のDataRepeaterを配置し、その上にラベル、チェックボックスを配置しています。 チェックボックスを2個配置(フラグ1、フラグ2とします)した場合に変わった動作をしているため困っています。 データバインドし一覧表示させ、 1)1行目のフラグ1をクリック->1行目のフラグ2をクリック 2)2行目のフラグ1をクリック・・・・・>この時点で1行目のチェックされていたフラグ2のチェックが勝手に外されてしまう。 このような現象に遭遇された方はおられないでしょうか? 最初は開発中のアプリで困っていたのですが、試に単純なプログラムで試しても同じ現象でした。 よろしくお願いします。 【環境】 Windows7SP1 VisualStudioCommunity2013Update4 VisualBasicPowerPacks12.0
↧
大量の標準モジュールを解放する方法
VBAを使っていて 大量の標準モジュールを解放したい場合 一つ一つ「解放」を実行していくのが面倒なのですが 自動で複数のモジュールを解放することはできないでしょうか? 何か良い方法があれば教えてください。
↧
エクセルの名前定義で、配列は使用できないのでしょう
こんにちは。 エクセルでの名前定義ですが、通常、下記のように、セル番地を使用すると思いますが、 配列を使用することは出来ないのでしょうか? ActiveWorkbook.Names.Add Name:="test", RefersToLocal:="=Sheet1!$A$1:$B$2" 下記のようなマクロを作り実行しましたが、うまくいきませんでした。 Dim ABC(0 to 1) ABC(0) = 1 ABC(1) = 2 ActiveWorkbook.Names.Add Name:="test", RefersToLocal:="=ABC" ご指導のほど宜しくお願いいたします。
↧