1. 入力画面

Similar documents
1. 入力画面

の包絡線を求めることになる 包絡線は一次式で表せるのでこのときの係数 ( 切片 ) を求 めればよいことになる この係数 ( 切片 ) が粘着力となる 包絡線はモールの応力円に外 接する直線であるため 包絡線の式は下記三式を解くことにより求めることができる 包絡線の式 Y=A1 X + B1 ---


PowerPoint プレゼンテーション

Microsoft Word - VBA基礎(3).docx

D0120.PDF

D0050.PDF

コンピュータ概論

ExcelVBA

D0020.PDF

コンピュータ概論

2013 年 8 月 14 日 管理図作成マニュアル ( 案 ) 益永八尋 Ⅰ. プログラムの概要 品質管理において必要な QC7 道具の一つである管理図作成のプログラムを作成した このプログラムは 下記の管理図を作成するものである 1 BerX-R 管理図 2Me 管理図 3X 管理図 4np 管

Lesson 1 1 EXVBA2000 Lesson01 Lesson01.xls 2

PowerPoint プレゼンテーション

Excel Excel Excel = Excel ( ) 1

PowerPoint プレゼンテーション

B 5 (2) VBA R / B 5 ( ) / 34

D0090.PDF

PowerPoint プレゼンテーション

Microsoft Word _VBAProg1.docx

Microsoft PowerPoint - vp演習課題

PowerPoint プレゼンテーション

Microsoft PowerPoint - VBA解説1.ppt [互換モード]

バスケットボール

2 X Y Y X θ 1,θ 2,... Y = f (X,θ 1,θ 2,...) θ k III 8 ( ) 1 / 39

Microsoft PowerPoint - Visualプログラミング

My関数の作成演習問題集

プレポスト【問題】

Excel Excel Excel = Excel III 7 ( ) 1

untitled

CommandMatrix_8230E

untitled

PowerPoint プレゼンテーション

情報基礎A

ファイル操作-インターネットキャッシュ


ルーレットプログラム

<4D F736F F D208DEC90AC837D836A B81698F4390B394C5816A2E646F63>

カレンダー講座メモ

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

本サンプル問題の著作権は日本商工会議所に帰属します また 本サンプル問題の無断転載 無断営利利用を厳禁します 本サンプル問題の内容や解答等に関するお問 い合わせは 受け付けておりませんので ご了承ください 日商プログラミング検定 STANDARD(VBA) サンプル問題 知識科目 第 1 問 ( 知

(Microsoft Word \203v\203\215\203O\203\211\203~\203\223\203O)

Microsoft Word - ŁtŸ^‡S

ブロック パニック

PowerPoint プレゼンテーション

VBM01#解答解説# indd

情報資源組織演習B:

ランボール

AccessVBA−‹ŠpŁÒ-flO“Z

Microsoft Word - VBA基礎(6).docx

プログラミング演習

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

方程式の解法

(18,26) 10/ GHz.xls [ (18GHz) ] GHz.xls [ (26GHz) ] +----all.sh [ 2 10 ] +----mesure-ryudai/ / _csv.log [

2X Y Y X θ 1, θ 2,... Y = f(x, θ 1, θ 2,...) θ k III 8 ( ) 1 / 39

アプリケーション

橡vb_kikai0.PDF

[Excelが自動化するVBAの魔法2]購入者限定テキスト

Excel ではじめる数値解析 サンプルページ この本の定価 判型などは, 以下の URL からご覧いただけます. このサンプルページの内容は, 初版 1 刷発行時のものです.

Excel ダッシュボードのご紹介 株式会社アイエルアイ総合研究所内藤慶一

94 expression True False expression FalseMSDN IsNumber WorksheetFunctionIsNumberexpression expression True Office support.office.com/ja-jp/ S

Case 0 sqlcmdi.parameters("?tencode").value = Iidata(0) sqlcmdi.parameters("?tenname").value = Iidata(1) 内容を追加します sqlcmdi.executenonquery() Case Else

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

最初に VBA が使用できるように マクロ と呼ばれるエクセル上のアプリ ( のようなもの ) を準備します Excel メニューの ファイル オプション を選択 表示される Excel のオプション から リボンのユーザー設定 を選択 メインタブ 内の 開発 にチェックを付けて OK をクリック

MS-ExcelVBA 基礎 (Visual Basic for Application)

sinfI2005_VBA.doc

ドッグファイト

Microsoft Word - 課題1_2.doc

VB 資料 電脳梁山泊烏賊塾 音声認識 System.Speech の利用 System.Speech に依るディクテーション ( 音声を文字列化 ).NetFramework3.0 以上 (Visual Studio 2010 以降 ) では 標準で System.Speech が用意されて居るの

PowerPoint プレゼンテーション

API 連携方式 外部 DLL の呼び出し宣言 外部 DLL の呼び出し宣言のサンプルコード (Microsoft Visual C#.NET の場合 ) プログラムコードの先頭で using System.Runtime.InteropServices; が必要 クラスの内部に以下のような外部 D

saihata.doc

データを TreeView コントロールで表示 VisualStudio2017 の Web サイトプロジェクトで bootstrap, 及び script フォルダの js ファイルが使用できるマスターページを親とする TestTreeView.aspx ページを作成します 下記の html コー

OTRS10 他社システムOTRS呼出利用手順書

08‘͆i”O“Z†j

<リスト1> AD コンバータへのデータの出力例 NEC PC98 用 mov al,22h // CLK -> 1, CS -> 0, DI -> 0 out 32h,al // シリアル ポートにデータ出力 PC/AT 互換機用 mov al,00h // CLK -> 1 mov dx,3fb


プロシード

PowerPoint プレゼンテーション


ギリシャ文字の読み方を教えてください

OS Windows Mac OS Windows Mac OS Windows XP Mac OS X OS Windows 95 Mac OS

図 2 Excel スプレッドシートの世界 のウィンドウ 図 3 Visual Basic の世界 のウィンドウ 図 3 の VBA ウィンドウは 図 2 の Excel ウィンドウのメニューの ツール をクリックし 開か れるプルダウンメニューで マクロ /Visual Basic Editor

GS1-128 の描画 DLL について (ver. 2.3) 動作環境など動作環境 WindowsXP Windows Vista Windows7 Windows8/8.1 Windows10 上記 OS について すべて日本語版を対象としております 32bit アプリケーションから呼び出される

CashDrawer ライブラリ API 仕様書 2014/07/09 CashDrawer ライブラリ API 仕様書 Rev / 10

エクセル詳細 アドイン

卒業論文.PDF

エクセルによる数値計算と化学への応用

ブロック崩し風テニス

ii

45 VBA Fortran, Pascal, C Windows OS Excel VBA Visual Basic Excel VBA VBA Visual Basic For Application Microsoft Office Office Excel VBA VBA Excel Acc

Microsoft Word 練習問題の解答.doc

ii Excel Excel IF IF IF VLOOKUP HLOOKUP IF VLOOKUP HLOOKUP ExcelVBA Excel Excel Excel Web p Excel Excel Excel

74 No ACCESS

知って得する!現役ヘルプデスクが答えるDelphiテクニカルエッセンス 9.0

EXCEL VBA講座

Module1 には 損 益 入 力 シートのデータに 関 連 するマクロが 格 納 されている( 表 1) 以 下 に Module1 を 構 成 するマクロを 掲 載 する 表 1 Module1 の 構 成 Module 設 置 されたシート 名 登 録 されたマクロ 作 業 内 容 データの

上の図がプロジェクトエクスプローラです 通常 VisualBasicEditor 画面の左上に配置されています Microsoft Excel Objects( ワークシート ) フォーム 標準モジュール クラスモジュールなどに分かれていて それらの集まりをプロジェクトといいます Excel のワー

BASICとVisual Basic

プログラミングA

Transcription:

指定した時刻に指定したマクロ (VBA) を実行するプログラム (VBA) 益永八尋 様々な業務を行っている場合には 指定した時刻に指定したマクロ (Macro VBA) を実行したくなる場合がある たとえば 9:00 17: 00 や 1 時間 6 時間間隔に指定したマクロ (Macro VBA) を実行する この様な場合に対応できるように汎用性の高いプログラムを作成した この場合に注意する必要があるのは 実行されたマクロ (Macro) は 終了時刻がくるまで実行され 途中で実行を中止することが困難なことです このためこのプログラムの実行の際には注意が必要です 止むを得ず途中で実行を中止するには 強制的にシャットダウン ( すでに実行中の場合 ) を行うしか方法がありません ( 適切な方法ではない ) 実行前であれば 通常のシャットダウンで中止できます( 記憶されている実行命令を解除する ) が 他の方法はないと思われる ( 未調査 ) 実行させるプログラムは どのようなプログラムでも選択できるように設定してある

1. 入力画面

2. プログラム説明 2.1 モジュール構成

2.2 プログラムコード (1)Microsoft Excel Objects Sheet3(Main) のコード Private Sub CheckBox1_Click() If Cells(23, 30) = True Then Cells(23, 31) = False Else Cells(23, 31) = True End Sub Private Sub CheckBox2_Click() If Cells(23, 31) = True Then Cells(23, 30) = False Else Cells(23, 30) = True End Sub Private Sub CommandButton1_Click()

Call Module3.AutoStart_Time End End Sub (2) 標準モジュール Module3 のコード Public Declare Function GetExitCodeProcess Lib "kernel32" _ (ByVal hprocess As Long, lpexitcode As Long) As Long Public Declare Function OpenProcess Lib "kernel32" _ (ByVal dwdesiredaccess As Long, ByVal binherithandle As Long, _ ByVal dwprocessid As Long) As Long Public Const PROCESS_QUERY_INFORMATION = &H400 '------------------------------------------------ Public MyEXE As String Public MyEXE_Fie As String Public T(5) As Integer Sub EXE_RUN() Dim dwprocessid As Long Dim hprocess As Long Dim lpdwexitcode As Long Dim ret As Long

'------------------------------------------------------------------- dwprocessid = Shell(MyEXE, 1) hprocess = OpenProcess(PROCESS_QUERY_INFORMATION, True, dwprocessid) '----------------------------------------------- Do ret = GetExitCodeProcess(hProcess, lpdwexitcode) DoEvents Loop While lpdwexitcode '------------------------------------------------- MsgBox MyEXE_Fie & " 終了しました " End Sub Sub AutoStart_Time() ' 指定した時刻に指定したマクロ (Auto_Start_Macro) を実行する ' この処理は下記のコードが実行されていることが条件である また 当該の WorkBook が開かれていることも条件である 下記コードが ' 実行された後に WorkBook を閉じてしまえば指定の時刻になっても指定のマクロは実行されない Dim Start_Time(10) As Date Dim End_Time As Date Dim Act_Time As Date Dim Interval_Time As Date '-------------------------------------------------------------------------------------------------- ' 下記コードは "Auto_Start_Macro" を現在の時刻から 10 秒後に実行する命令である ' このコードでは 1 回だけ実行する 一定時間間隔で Macro を実行するには繰り返し処理が必要である

'------------------------------------------------------------------------------------------ ' 特定の時刻にマクロ 名 "Auto_Start_Macro" を実行する '************************************************************************************************** ' '-------------------------------------- strm = Cells(24, 30) ' 任意の特定時刻 If strm = True Then strtime_type = " 特定時刻 " For I = 1 To 10 Start_Time(I) = Cells(I + 27, 3) ' 開始時刻 If Cells(I + 27, 3) = "" Then Dn = I - 1 Exit For Next I Else strtime_type = " 時間間隔 " Start_Time(1) = Cells(27, 6) ' 開始時刻 Interval_Time = Cells(28, 6) ' 時間間隔 End_Time = Cells(29, 6) ' 終了時刻 '------------------------------------- ' 実行させたいプログラム名 (Path 名 )

MyEXE = Cells(18, 6) If Right(MyEXE, 3) <> "EXE" Or Right(MyEXE, 3) <> "exe" Then MyEXE = MyEXE & ".exe" MsgBox " 実行プログラム名に拡張子 [.exe] がついていないのでこれを付加した " '-------------------------------------- Select Case strtime_type Case " 特定時刻 " ' 任意の特定時刻にマクロ名 "Auto_Start_Macro" を実行する For I = 1 To Dn Act_Time = Start_Time(I) Application.OnTime Earliesttime:=TimeValue(Act_Time), procedure:="auto_start_macro" Next I Case " 時間間隔 " ' 一定の時間間隔でマクロ名 "Auto_Start_Macro" を実行する Act_Time = Start_Time(1) '----------------------------------- ' 時間間隔から 1 日の繰り返し回数を計算する Dn = Repeat_N(Start_Time(1), Interval_Time, End_Time) '---------------------------------- For I = 1 To Dn Act_Time = Act_Time + Interval_Time Application.OnTime Earliesttime:=TimeValue(Act_Time), procedure:="auto_start_macro"

Next I Case Else End Select End Sub Sub Auto_Start_Macro() Dim Macro_EXE As String '------------------------ ' データ入力 'Public で変数 MyEXE を定義しているが Sub プロシージャ AutoStart_Time で実行 ' した Application.OnTime の命令ででは値の引き渡しがきないので 下記 2 行の記述を追加した 2012/10/28: 追加 Sheets("Main").Select '2012/10/28: 追加 MyEXE = Cells(18, 6) '2012/10/28: 追加 '------------------------ ' 実行プログラムに拡張子 ".exe" がついていない場合の処理 If Right(MyEXE, 4) <> "xlsm" And Right(MyEXE, 3) <> "exe" Then MyEXE = MyEXE & ".exe" '------------------------------------ 'Excel の実行マクロ (Sub プロシージャ名 ) 取得 Macro_EXE = Cells(19, 6) '------------------------------------ ' 実行ファイルの起動方法の選択

If Left(MyEXE, 5) <> "EXCEL" And Right(MyEXE, 3) = "exe" Then 'EXCEL 以外の実行ファイル ( アプリケーション ) の場合 Call Module3.EXE_RUN '--------------------- Else 'Excel ファイルを開く Workbooks.Open MyEXE '------------------------------------------- 'Book 名を取得する Rn = Len(MyEXE) MyBook = "" For I = 1 To Rn AA = Mid(MyEXE, I, 1) If AA = " " Then J = J + 1 Mn = I Next I '-------------------------- For I = Mn + 1 To Rn AA = Mid(MyEXE, I, 1) MyBook = MyBook & AA Next I

'-------------------------------------------- If Macro_EXE <> "" Then 'Excel ファイルに Macro 名が入力されている場合 Workbooks(MyBook).Activate ' 指定した Excel ファイルをアクティブにする If Macro_EXE <> "" Then Application.Run MyBook & "!" & Macro_EXE 'Call 文では他のブックの Sub プロシージャを実行できないので Run を使用する '---------------------------------------- 'MsgBox " 指定時刻に Macro を実行しました " End Sub Private Function Repeat_N(SartT As Date, X As Date, EndT As Date) 'SarT: 開始時刻 EndT: 終了時刻 ' 開始時刻を秒単位に変換する '--------------- Call MTime(SartT) '--------------------------- ST1 = T(1) ' 時間 ST2 = T(2) ' 分 ST3 = T(3) ' 秒 '---------------------------------

' 開始間隔を秒単位に変換する ST = ST1 * 3600 + ST2 * 60 + ST3 ' 時間間隔から 1 日の繰り返し回数を計算する '--------------- Call MTime(X) '--------------------------- AT1 = T(1) ' 時間 AT2 = T(2) ' 分 AT3 = T(3) ' 秒 '--------------------------------- ' 時間間隔を秒単位に変換する AT = AT1 * 3600 + AT2 * 60 + AT3 '--------------------------------- ' 終了時刻を秒単位に変換する '--------------- Call MTime(EndT) '--------------------------- ET1 = T(1) ' 時間 '-------------------- If ET1 = 0 Then ET1 = 24 ET2 = 0 ' 分 ET3 = 0 ' 秒

Else ET1 = T(1) ET2 = T(2) ' 分 ET3 = T(3) ' 秒 '--------------------- ET = ET1 * 3600 + ET2 * 60 + ET3 '--------------------------------- DT = ET - ST Dn = DT / AT Repeat_N = Dn End Function Sub MTime(X As Date) If Mid(X, 2, 1) = ":" Then Rn = 7 Else Rn = 8 J = 1 '--------------------- For I = 1 To Rn

BB = Mid(X, I, 1) If Mid(X, I, 1) = ":" Then T(J) = AA AA = 0 J = J + 1 Else AA = AA + Mid(X, I, 1) If I = Rn Then T(J) = AA Next I '--------------- End Sub