Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


28879 / 76738 ←次へ | 前へ→

【53149】Re:2つのファイルのマクロの同時実行
質問  yhar  - 07/12/17(月) 17:22 -

引用なし
パスワード
   そろそろ私の能力では限界に来ているようで、コードを整理して教えを請いたいと
思います。

現時点での問題は
1.Myapp.Run "ura.xls!Module1.ECGetData" で ura.xlsのマクロを実行すると
  ura.xls が表示された状態で、omote.xls は、マクロの実行待ちの状態にな
  ってしまう。
2.ura.xlsで取得したデータを別インスタンスで開いているomote.xlsのあるセル
  へ書き込む方法がわからない。
の2点です。

2つのファイルをあらかじめ別インスタンスで開いておいて、それぞれのマクロを
ビジュアルベーシックエディタから起動すると思惑通りに動作します。この状態が
作れれば、あとは上記の2が解決すれば良いということになります。

omote.xlsには、以下のコードが書いてあり、シート上には「残時間」のカウント
ダウン値と現在時刻(秒単位表示)が表示されています。
表示画面のボタンを押すとblnStopがTrueとなりループから抜けます。

===============================================================

Public blnStop As Boolean
Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long
Private Const SND_ASYNC = &H1

Sub Tact()
Dim Start, TactTime, Finish
Dim ZanJikan As Integer
Dim Dekidaka As Integer
Dim MotoSt As Worksheet: Set MotoSt = Worksheets("sheet1")

'Excelの別のインスタンスで「ura.xls」を起動してカウンタのデータを取り込む

On Error Resume Next
  Dim Myapp As Object
  Set Myapp = CreateObject("excel.Application")
  With Myapp
    .Visible = True
    .Workbooks.Open "C:\Documents and Settings\hoge\デスクトップ\ura.xls"
   End With
On Error GoTo 0

TactTime = MotoSt.Range("A2").Value '条件設定シートからタクトタイムを読み込む
ZanJikan = MotoSt.Range("A2").Value '残時間にタクトタイムをセットする

With Worksheets("表示画面")
  .Select
  .ScrollArea = "A1:A1"      '表示画面に移動して画面をスクロール出来ないようにする
End With

'以下は表示画面をフルスクリーンにして全てのメニューバーを見えなくする
  On Error Resume Next
  With Application
    .DisplayFullScreen = True
    .CommandBars("Full Screen").Visible = False
    .CommandBars("Worksheet Menu Bar").Enabled = False
  End With
  On Error GoTo 0
Worksheets("表示画面").Range("C2") = "" 'カーソルを見えないところに隠す

On Error Resume Next
    Myapp.Run "ura.xls!Module1.ECGetData" 'ura.xlsのマクロを実行する
On Error GoTo 0

blnStop = False
Do While Not blnStop '停止ボタンがクリックされるまで繰り返す
  
  Start = Timer            '現在の時刻を保存する
  Do While Timer < Start + 1  'タイマー(現在時刻)が1秒経過するまで制御をOSに渡す
    DoEvents
  Loop
  ZanJikan = ZanJikan - 1       '残時間を1秒毎にカウントダウンする。
  MotoSt.Range("B2") = ZanJikan    '残時間をシートに書き込む

  If ZanJikan <= 0 Then        'タクト残り時間が0になったら音で知らせる
    Call PlaySound("c:\ringin.wav", 0, SND_ASYNC) 'ここで音声ファイルを指定する!!!
        
    ZanJikan = TactTime       'タクト残り時間をタクトタイムに再設定する
  
  End If
Loop

On Error Resume Next
    Myapp.Save
    Myapp.Quit
On Error GoTo 0

End Sub

=============================================================
ura.xlsには下記のコードを記述して制御機器からのデータを取り込んでいます。

Sub ECGetData()

  Dim MotoSt As Worksheet: Set MotoSt = Worksheets("sheet1")
      
はじめ:

  Start = Timer            '現在の時刻を保存する
  Do While Timer < Start + 3  'タイマー(現在時刻)が3秒経過するまで制御をOSに渡す
    DoEvents
  Loop
    
  ★ここからポートを開いて実際に通信するルーチン★
  
'データを取得してアクティブセルに書き込みます.
  MotoSt.Range("B8") = resps   '受信データをセルB8に書き込み。シート上の関数で10進に変換してB6へ
  
  ★ここで通信ポートを閉じる★
  
  GoTo はじめ
    
End Sub

===========================================================

1 hits

【53100】2つのファイルのマクロの同時実行 yhar 07/12/14(金) 16:47 質問
【53104】Re:2つのファイルのマクロの同時実行 ichinose 07/12/15(土) 9:36 発言
【53142】Re:2つのファイルのマクロの同時実行 yhar 07/12/17(月) 11:19 質問
【53149】Re:2つのファイルのマクロの同時実行 yhar 07/12/17(月) 17:22 質問
【53159】Re:2つのファイルのマクロの同時実行 ichinose 07/12/17(月) 21:55 発言
【53166】Re:2つのファイルのマクロの同時実行 一... ichinose 07/12/18(火) 7:41 発言
【53168】Re:2つのファイルのマクロの同時実行 追伸 ichinose 07/12/18(火) 8:28 発言
【53169】★まずは御礼★ 追伸 yhar 07/12/18(火) 8:45 お礼
【53185】Re:2つのファイルのマクロの同時実行 ichinose 07/12/18(火) 21:27 発言
【53430】【御礼】2つのファイルのマクロの同時実行 yhar 08/1/10(木) 16:55 お礼
【53143】Re:2つのファイルのマクロの同時実行 Who Me? 07/12/17(月) 11:34 発言
【53144】Re:2つのファイルのマクロの同時実行 yhar 07/12/17(月) 13:44 お礼

28879 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free