Quantcast
Channel: OKWAVE 最新質問(Visual Basic/257)【本日】
Viewing all 7264 articles
Browse latest View live

VBAのクラスのインスタンス化のタイミングについて

$
0
0
こんにちはvbaのクラスのインスタンス化について質問があります。 私は普段使えないイベントを使用するときにクラスモジュールに WithEventsを使ってイベントを作成し それをプロシージャからインスタンス化して 作成したイベントを有効にするという手法をよく使います。 Excelのように最初からワークブックにイベントがある場合は、 ワークブックを開いたと同時にWorkbook_Openプロシージャから クラスをインスタンス化して作成したイベントを有効にするということが可能なのですが、 CATIAやInventorなど、一部のアプリケーションでは、 最初から使えるイベントが見つからず、 Subプロシージャでインスタンス化する方法しかみつかりません。 しかし、Subプロシージャを実行させるためには、 ボタンなどユーザー側に何らかのアクションとってもらうしかなく、 自動化するために作成したイベントなのに、そのイベントを有効にするために ユーザーにボタンを押してもらうという矛盾した構成になってしまいます。 クラスをインスタンス化する方法はSubプロシージャに記述するしかないのでしょうか? 自分がよく使っているコードを下に記述します。 下の例は、Excelで新しくブックを開いたときにメッセージを出すプログラムです。 アプリケーションレベルのイベントをクラスモジュールで作成しています。 これを有効にするためには標準モジュール内の Event_ONプロシージャを実行しなければなりません。 モジュールを実行する前まではいくら新しいブックを開いてもメッセージは出ません これをどのうようにしたらいいかご教授ください。 Excelの例 Classモジュール「Class1」に記述 -------------------------------------------------------------------- Private WithEvents APP As Application Private Sub APP_NewWorkbook(ByVal Wb As Workbook) MsgBox "新しいブックが開かれました" End Sub Private Sub Class_Initialize() Set APP = Application End Sub -------------------------------------------------------------------- 標準モジュール「Module1」に記述 -------------------------------------------------------------------- Dim CLS As class1 Public Sub Event_ON() Set CLS = New class1 End Sub --------------------------------------------------------------------

検索の結果表示されるページの取り込み

$
0
0
VBAでホームページの解析をしてみてます。 普通のページは解析できるんですが、検索の結果表示されるハロワのページ(https://www.hellowork.go.jp/servicef/130020.do こんなのです)のようなものはどういうふうに読み込めばいいんでしょうか?

SendInputについて

$
0
0
いつもお世話になっております。 早速ですが、VB2010ExpressにてSendInputを用いてのプログラムを作成しています。 そこで質問なのですが、パソコンによって同じプログラムでもSendInputが動作するもとのしないものがあります。 OSは関係なくWin7では動作OK。XPでは1台ではOK。もう一台はNGといった具合です。 ぜんぜん動作しないのではなく左クリックは一回はされているようです。 実際は、その後9文字くらい入力させる予定です。 ちなみにエラーは出ていません。 SendInputを使用するに当りパソコン自体の処理速度等関係あるのでしょうか? また、仮に処理速度が関係する場合、SendInputの代わりになるものはあるのでしょうか?

visual vasic5.0に代わるソフト

$
0
0
osはwindows7を使ってます。以前visual basic5.0で作成したプログラムを少し直したいんですが今のosではvisual basic5.0ではエラーが出て開けません。この自作プログラムを開いて直せるソフトがあれば教えていただきませんか。visual basic6.0は6万円と高くも少し安くできたら無料のがあればと思ってますがどうでしょうか。お願いします。

itextsharpでセキュリティなしに

$
0
0
こんにちは お世話になります。 VisualBasicでpdfファイルの「パスワードによるセキュリティ」を「セキュリティなし」にして別ファイルに保存しようとしています。 ownerpasswordは分っています。 itextsharpを利用した場合、 writer.SetEncryption(iTextSharp.text.pdf.PdfWriter.STRENGTH128BITS, Nothing,???, Nothing) ???になにかを入れたら解除できるのでしょうか。 それともまったく別の方法でないとできないのでしょうか。 ご存知の方おりましたらご協力願います。

別のブックから今のシートに自動更新

$
0
0
元データ(ブックAシート1)を更新するたび 条件にあったデータを 別ブックのシートに自動的に抽出したいのですが ブックBを開いたらブックAが開きシート1の抽出をブックBシート1にコピーしたいのですがVBAコードを教えてください。 ◇ブックAシート1◇ ※元データ  A      B     C     D     F 1 氏名 役職 部署 年齢 移動時期      2 山田 社員 開発 45  未調整 3 田中 社員 人事 42  4/1~ 4 鈴木 派遣 企画 30   5 高橋 役員 人事 50  未調整 6 坂野 社員 企画 33  未調整   7 井上 派遣 企画 29  未調整 ◇ブックBシート1◇ ※部署が人事で移動時期が未調整の人のみ抽出  A      B     C     D    F 1 氏名 役職 部署 年齢 移動時期  2 高橋 役員 人事 50  未調整 説明が不十分で伝わりにくいかと思いますが よろしくお願いします。

入力した文字列の正誤チェック

$
0
0
下記の様に動作するマクロを組みたいのですが、自分なりにチャレンジして みましたが、意図した動作が実現できず困っています。ご教授お願い致します。 1.セルA1-A20にデータを入力。 2.予め作っておいた"確認"のコマンドボタンを押すと、入力した文字列が   "○○○○○-○"の7文字で構成される文字列になっているか確認し、   一つでも誤りがあれば"間違っています"、誤りがなければ"問題ありません"   と表示。※○に入る数値は、0-9の数字。 3.A1-A20のすべてのセルにデータを入力しない場合もあるので、空白が  存在した時点でプログラムを終了。 ※私が作ったプログラムは、すべてのセルに入力しないと誤った文字列が    入っているのに、"問題ありません"と表示されてしまいます。

vbscripでaccdb→xlsxの対応について

$
0
0
Windows Server2008R2上で cscript D:\aaaa.vbs で実行しているvbscriptにてサーバーの所定のフォルダに AccessD/B、EXCELブックを作成しています。 尚、Windows Server2008R2上にはOffice2013はインストールしておりません。 Microsoft.ACE.OLEDB12.0を再配布でインストールしています。 サーバー側で作成したAccessD/B EXCELブックを Office2013をインストールしてあるクライアントPCにて vbscriptにて作成したEXCELブック内の ・文字列の頭の空白 ・シート名 についてお伺いしたいのでよろしくお願いします。 -------------------------------------------------------------------- vbscriptの内容は以下のとおりです。 TEST.accdb内のTABLE1の全レコードをxlsx形式のEXCELブックに出力するために Set cnn = cat.ActiveConnection ・ Query = "select * into [Excel 12.0 Xml;DATABASE=TEST.accdb].[シート名] from [TABLE1]" cnn.Execute Query で実行しているのですが( Microsoft.ACE.OLEDB12.0 ) ■TABLE1のフィールドの内容は ○A12B95 (○は空白の意味です) なのですがEXCELには A12B95 と、文字列の頭の空白がカットされて出力されてしまいます。 ■シート名に()などの記号が含まれているとEXCELブック表示すると 「xxxx.xlsxの一部に問題が見つかりました。可能な限り内容を回復しますか・・・・・・・・・」 のメッセージが表示され、EXCELブックを開くと修復されますがシート名の記号が記号によっては 文字化けします。 以前は Access2003、Excel2003だったので( Microsoft.JET.OLEDB.4.0 ) TEST.mdb内のTABLE1の全レコードをxls形式のEXCELブックに出力しており Query = "select * into [Excel 8.0;DATABASE=TEST.mdb].[シート名] from [TABLE1]" cnn.Execute Query で正常に'○A12B95と出力できていました。 接頭辞「'」付きで また、シート名に()などの記号が含まれていても正常にシート名が作成され EXCELブック(xls)を開くことができました。 accdb形式のAccessD/BのテーブルをExcelのxls形式とxlsx形式に出力する場合とでは 文字列頭の空白処理やシート名の扱いが異なるのでしょうか。 ■試しに以下の処理をしてみましたが (1)accdb形式のAccessD/BのテーブルをAccess自体のメニューでエクスポートしてみましたが 文字列頭の空白は xls形式では・・・・'○A12B95接頭辞「'」あり、空白○あり xlsx形式では・・・・A12B95接頭辞「'」なし、空白○なし となってしまいます。 (2)EXCEL2013の詳細設定のLotus1-2-3形式のキー操作チェックボックスをオンにして(1)の エクスポートしてみましたが xlsx形式では・・・・'A12B95 「接頭辞「'」は付くものの、空白○なし となってしまいます。 (3)TEST.accdb内のTABLE1のレコードセットを作成し、テキスト項目には「'」を付けて 1レコード毎EXCELブック(xlsx)に行挿入( Addnew~Update )してみましたが EXCELブック(xlsx)を開きテキスト項目の内容を確認しましたところ '○A12B95  接頭辞「'」あり、空白○ありとなるものの Lenで文字数を確認すると 「'」を含めた文字数(8)になってしまいます。EXCELでは接頭辞「'」は文字扱いしないはずなのですが。 何故かテキスト項目のセルをクリックした後、再度Lenで文字数を確認すると文字数(7)になります。    ■ ○A12B95 はオーダー番号なので番号体系を変えることはできません。○の部分は空白以外もあります。 また、レコード件数も65,000件超のためxlsx形式でないと対処できません。 vbscriptで accdb形式のAccessD/B内のテーブルをxlsx形式のExcelに出力した場合に 文字列の頭の空白がなくならないよう、またシート名に記号()等を使っても 正常にEXCLEブックが開ける方法がございましたらご教示下さいますでしょうか。 できれば1件1件読み込んで処理する以外の方法が望ましいです。 レコード件数が多く以前その処理だと数十分~小一時間かかっていたので 上記方法select * into [Excel・・・に変更し数分で処理できるようになりましたので。 無理な場合は1件1件読み込んで処理する場合は上記(3)が改善できる方法があればと思います

Excelマクロでundoのボタンを作成

$
0
0
Excel2013使用です。 現在、アクティブなセルに日付を入力する為に日付入力ボタン(DateButton)を作成しています。 内容は下記の通りです。 Private Sub DateButton_Click() ActiveCell.Value = Date End Sub ですが、間違ってボタンを押した場合に元に戻す事が出来ません。 日付入力undoボタンを作成し、間違ってボタンを押した場合に元に戻す機能を追加したいと思います。 どうかご教授ください。

VBでWindowsサービスを作成する方法

$
0
0
VBで以下のコマンドをWindowsサービスとして実行したいのですが作り方が わかりません。すいませんが、ご教授頂けないでしょうか? c:\ruby\bin\ruby.exe c:\ruby\bin\thin -e development -c d:\rails\fms -p 3000 以上、宜しくお願いします。

表のデータからある範囲の集計をしたい

$
0
0
1)Excel2007&windows7を使いマクロ作成中の初心者です。 2)シートに毎月データを追加入力し、年で締め切る表を作成しています。 3)表はF列からL列まで、6行目から580行(毎月変動)ぐらいの表です。 4)H列には、A部門、B部門、C部門のいずれかの文字列が入ります。 5)J列には、平成27年1月から12月までの年月が入ります。 6)K列、L列には数値が入力されます。 以上が、毎月作成する表の概要です。 そして、やりたいことは、この表に基づいて、例として、27年1月の表示される行の中の A部門のK列の合計、B部門のK列の合計、C部門のK列の合計を知りたいことと、 A部門のL列の合計、B部門のL列の合計、C部門のL列の合計を知りたいです。 この、合計の結果を、他のシートに表示したいです。 Excel関数でもExcel VBAでも、やりたいこと出来れば、どちらでもいいです。 =SUMIF(C17:C29,"A部門",F17:F29) 同一シート内で上の関数を、利用できますが、これに27年1月だけで集計したいです。 また、他のシートの中に表示したいです。どうしたらよろしいか教えてください。

マクロ 各シートからシート1に戻るボタンを設置する

$
0
0
各シートの同じ位置に「シート1に戻る」ボタンを付けるマクロを実行したいです。 前回教えていただいたことから、ボタンを設置するマクロはわかったのですが、 『2枚目以降のシートから、シートが終わるまで、各シートにボタンを設置する』マクロがわかりません。 1枚目は目次?的なページですので、 2枚目以降から、シートが終わるまで、決められた位置に「戻る」ボタンをつける。 という作業をマクロに記憶させたいと考えています。 ※下記は、こちらで教えていただいたものを参考にしたマクロです。 「戻る」という言葉をどこに入れてよいかもわからりません。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・ Sub 戻るボタン設置() With ActiveSheet For i = 1 '幅140、高さ20のボタンを追加 .Buttons.Add(145 * i, 120, 140, 20).Text = i Next i End With End Sub

VBScriptについて

$
0
0
VBScriptでファイル名を取得して、そのファイル名(英数字)を元に文字を表示させたい。 またファイル名に使用されている文字が[1]なら[^]、[2]なら[(]、[3]なら[a]というふうに、決められた文字を反映させたい場合は、どういう作り方をすればいいのか教えてください。

VBAで別ブックからVLOOKUPで抽出

$
0
0
ブックBシート1A列の値にマッチする値をそれぞれの列にVLOOKUPでブックAシート1にある値から貼り付けたいのですがVBAコードが解る方宜しくお願いします。尚、データーが50行ぐらいあるのですが。

ExcelレーダーチャートをWord差し込み印刷で

$
0
0
いつもお世話になります。 標記につきまして、ぜひ教えていただけると助かります。 使用ソフトはExcel・Word2007です。 同じような質問が無いか検索していたところ、「Excel2000でレーダーチャートの自動作成・Wordへの自動挿入は可能か(http://okwave.jp/qa/q414675.html)」にたどり着いて試作してみたのですが、チャートの挿入がうまくいきませんでした。Wordの差し込み印刷の機能もマクロも使い始めたばかりで、設定の仕方や使い方が間違っているのだと思います。 カスタマイズしたい元のデータはこちら「フィードバックプログラム(http://www.tmu-ph.ac/topics/stress_table.php)」にある「結果説明用文書」です。結果をテキスト表示(差し込み)させるだけでなく、2ページ目でレーダーチャートも同時に表示されるようにしたいと思っています。Excelからどのようにレーダーチャート呼び出せばよいのでしょうか。 よろしくお願いいたします。

デスクトップイメージを高画質でファイル化したい

$
0
0
(1) デスクトップのフルスクリーンイメージを「Print Screen」でクリップボードに取り込んで、 System.Drawing.Image として宣言した変数に My.Computer.Clipboard.GetImage() で格納し、 System.Drawing.Imaging.ImageFormat.Png System.Drawing.Imaging.ImageFormat.Jpeg System.Drawing.Imaging.ImageFormat.Bmp でファイル化しました。 (2) 同じデスクトップのフルスクリーンイメージを ペイント、ワード(解像度デフォルト)、GIMPに取り込んでファイル化したデータと比較したところ、 PNGファイル以外は程度の差はあるが、何れも(1)の方が画質が悪かったです。 質問ですが、 VBでデスクトップイメージを高画質でファイル化できないでしょうか?

エクセルVBA シート存在について

$
0
0
3つ(ABC)のシートがあって 目的のシートを探して例Bのシートを指定しBのシートへ入力 ソースの中身で流れで IF Aのシートを指定した場合Aシートへ入力 ElseIF Bのシートを指定した場合Bシートへ入力 ElseIF Cのシートを指定した場合Cシートへ入力 END IF にしたいけど、どのようにしたらいいですか? どなたか詳しく教えて頂けませんか?

フォームが表示されない

$
0
0
vb.net使用です。 メニュー画面(メイン) 待ち画面(テキストボックスとボタンがあります。) 実行画面 の3つのフォームがあります。 メイン画面から待ち画面を表示し、待ち画面から実行画面に移ります。 待ち画面でテキストにデータが入るまでループさせていて、 テキストにデータが入ってから実行画面を表示させるプログラムを作っているのですが、 待ち画面のループのプログラムで実行画面を表示させているのですが、(この時は表示している) プログラムが終了すると実行画面が消えてしまいます。 ループのプログラムをやめて、ボタンから行うと実行できます。 INVOKEも使用してみても状況がかわりません。 実行画面が使用できるようにするにはどうしたらよいか教えていただけないでしょうか。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ Private Sub 待ち画面_Load(sender As Object, e As System.EventArgs) Handles Me.Load Psmachi End sub Private Sub  Psmachi() Do Until txttxt.text <> “”     実行画面.show Me.hide Loop End sub Private sub bottan_click     実行画面.show Me.hide End sub

VBAのシート名称取得について

$
0
0
VBAにてシート名称を取得しシート1の一覧にまとめ、ハイパーリンクで一覧から各シートへ飛べるようにしています。 Dim retsu As Long,gyo As Long For retsu = 1 To Worksheets.Count 'シート名称をリストに記入 ThisWorkbook.Worksheets(1).cells(gyo + 1, 2) = Worksheets(retsu).name Next このコードでシート名称を取得するとシート名称が「001」などの頭に0の数字があるとき、リスト上では「1」となってしまいます。 そのため、リスト上とシート名称が異なり、ハイパーリンクの設定時に参照エラーとなってしまいます。 桁数を問わずに「001」は「001」のまま、「1」は「1」のまま取得するにはどうすればよいでしょうか? ※シート名称には「1月度」などの文字列もあります。(数字の名称のみではありません)

excel マクロでデータ抽出したい

$
0
0
excelの抽出をマクロ化しようと思っています。 キー記録で Sheets("data").Range("B11:O714").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Sheets("data").Range("G3:G5"), CopyToRange:=_ Range("B4:O615") , Unique:=False を得たので、これを元にして、条件範囲をオートシェイプのある列を条件にしようと思い、 col = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Column で、オートシェイプの列を取得し、 Sheets("data").Range("B11:O714").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Sheets("data").Range(Cells(3, col), Cells(5, col)),_ CopyToRange:=Range("B4:O615") , Unique:=False としたのですが、エラーになってしまいます。 colを使って条件範囲をするにはどうしたらいいのでしょうか? よろしくお願いします。
Viewing all 7264 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>