Excel VBA質問箱 IV

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

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


178 / 3841 ページ ←次へ | 前へ→

【78909】Re:アプリケーション起動完了の判定
お礼  ちょろすけ  - 17/2/22(水) 10:24 -

引用なし
パスワード
   βさん
的外れな回答をしてしまってました。。

ちなみに今回起動させようとしているアプリは、自社で特別に作成してもらった物になります。
ですので今後の質問は、その辺りも含めて具体的にお知らせする様に注意したいと思います。

貴重なご意見ありがとうございました。

▼β さん:
>▼ちょろすけ さん:
>
>>以降は具体的な質問が出来る様に気を付けたいと思います。
>
>ウッシさんのコードで要件は満たすわけですから、それでOKということなんですが
>一方、γさんが提示されたページの方法、Shell関数でアプリケーションを起動すると
>難しい API によるウィンドウ操作をしなくても、VBA関数で処理できますし
>アプリケーションが確かに起動されたということを待つのも、引数に True を指定するだけで
>シンプルに記述できます。
>
>ちょろすけさんにとっては、ウッシさんのコードとともに、有益な財産になると思いますので
>是非参照して試してみていただきたいと思います。
>
>γさんが『具体的に』といわれているのは、たとえば、立ち上げるアプリが IE であれば、
>SHell関数の他に、もう少し細かな制御もできる方法もあるので、アプリが『具体的になれば』
>ちょろすけさんにとって有益なアドバイスが他にも上がる可能性は高いですよということであって
>『今後、具体的に質問してください』といわれているのではないですから。
・ツリー全体表示

【78908】Re:アプリケーション起動完了の判定
お礼  ちょろすけ  - 17/2/22(水) 10:17 -

引用なし
パスワード
   ウッシさん
動作させてみたところ無事に動きました。
追加して頂いたコメントは、これから勉強させていただきたいと思います。
助かりました、ありがとうございました。

▼ちょろすけ さん:
>ウッシさん
>お相手して下さってありがとうございます。
>残念ながら今は確認できる環境が無いので明日試してみたいと思います。
>宜しくお願い致します。
>
>▼ウッシ さん:
>>こんばんは
>>
>>済みません、コードの間違いも修正しました。
>>
>>'API宣言部
>>Public Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
>>Public Declare Function IsWindowVisible Lib "user32" (ByVal hWnd As Long) As Long
>>Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
>>Public Declare Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wCmd As Long) As Long
>>'定数、変数
>>Public Const GW_OWNER = 4
>>Public flg As Boolean
>>'再帰処理用コールバック関数
>>Public Function GetProc(ByVal hWnd As Long, lParam As Long) As Boolean
>>  Dim sName As String * 128
>>  Dim ret  As Long
>>  
>>  sName = ""
>>  'キャプションを取得
>>  ret = GetWindowText(hWnd, sName, Len(sName))
>>  '可視状態のウィンドウを調べる
>>  If IsWindowVisible(hWnd) Then
>>    'オーナーフォームのハンドル取得
>>    If GetWindow(hWnd, GW_OWNER) = 0 Then
>>      If ret <> 0 Then
>>        '判定するアプリケーションのキャプション名
>>        If sName Like "対象のWindowキャプション名*" Then
>>          '見つかったらフラグをTrueにして、関数から抜ける
>>          flg = True
>>          Exit Function
>>        End If
>>      End If
>>    End If
>>  End If
>>  GetProc = True
>>End Function
>>
>>
>>Sub test()
>>  Dim s As Single
>>  s = Timer
>>  flg = False
>>  Do
>>    Call EnumWindows(AddressOf GetProc, 0)
>>    'フラグがTrueになる前に10秒経過したらループ抜ける
>>    If Timer - s > 10 Then '10秒待ち
>>      Exit Do
>>    End If
>>  Loop Until flg = True
>>  '見つかったらフラグはTrue、時間切れならFalse
>>  If flg = False Then
>>    MsgBox "時間切れ、見つかりません"
>>  Else
>>    '見つかったので次の処理
>>    Stop
>>  End If
>>End Sub
・ツリー全体表示

【78907】Re:アプリケーション起動完了の判定
発言  β  - 17/2/22(水) 5:56 -

引用なし
パスワード
   ▼ちょろすけ さん:

>以降は具体的な質問が出来る様に気を付けたいと思います。

ウッシさんのコードで要件は満たすわけですから、それでOKということなんですが
一方、γさんが提示されたページの方法、Shell関数でアプリケーションを起動すると
難しい API によるウィンドウ操作をしなくても、VBA関数で処理できますし
アプリケーションが確かに起動されたということを待つのも、引数に True を指定するだけで
シンプルに記述できます。

ちょろすけさんにとっては、ウッシさんのコードとともに、有益な財産になると思いますので
是非参照して試してみていただきたいと思います。

γさんが『具体的に』といわれているのは、たとえば、立ち上げるアプリが IE であれば、
SHell関数の他に、もう少し細かな制御もできる方法もあるので、アプリが『具体的になれば』
ちょろすけさんにとって有益なアドバイスが他にも上がる可能性は高いですよということであって
『今後、具体的に質問してください』といわれているのではないですから。
・ツリー全体表示

【78906】Re:アプリケーション起動完了の判定
回答  ちょろすけ  - 17/2/21(火) 22:19 -

引用なし
パスワード
   γさん
以降は具体的な質問が出来る様に気を付けたいと思います。
貴重なアドバイスありがとうございます。

▼γ さん:
>すでに解決ずみかもしれませんが、別の方法として、
>WSHのWshShellクラスのインスタンスを作成し、
>Runメソッドを使う方法はいかがでしょうか。
>
>ht tps://www.moug.net/tech/exvba/0100034.html
>の後半部分を参考にして下さい。
>
>なお、どんなアプリケーションなのか提示すると
>別の方法が提示されるかもしれません。
>IEとかでしたら、待つ方法は色々あるようです。
>Sendkeysはできれば避けたい方法ですよね。
>その辺も含めてコメントが寄せられるかもしれません。
>現在の情報だけだと不足かもしれませんよ。
・ツリー全体表示

【78905】Re:アプリケーション起動完了の判定
回答  ちょろすけ  - 17/2/21(火) 22:17 -

引用なし
パスワード
   ウッシさん
お相手して下さってありがとうございます。
残念ながら今は確認できる環境が無いので明日試してみたいと思います。
宜しくお願い致します。

▼ウッシ さん:
>こんばんは
>
>済みません、コードの間違いも修正しました。
>
>'API宣言部
>Public Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
>Public Declare Function IsWindowVisible Lib "user32" (ByVal hWnd As Long) As Long
>Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
>Public Declare Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wCmd As Long) As Long
>'定数、変数
>Public Const GW_OWNER = 4
>Public flg As Boolean
>'再帰処理用コールバック関数
>Public Function GetProc(ByVal hWnd As Long, lParam As Long) As Boolean
>  Dim sName As String * 128
>  Dim ret  As Long
>  
>  sName = ""
>  'キャプションを取得
>  ret = GetWindowText(hWnd, sName, Len(sName))
>  '可視状態のウィンドウを調べる
>  If IsWindowVisible(hWnd) Then
>    'オーナーフォームのハンドル取得
>    If GetWindow(hWnd, GW_OWNER) = 0 Then
>      If ret <> 0 Then
>        '判定するアプリケーションのキャプション名
>        If sName Like "対象のWindowキャプション名*" Then
>          '見つかったらフラグをTrueにして、関数から抜ける
>          flg = True
>          Exit Function
>        End If
>      End If
>    End If
>  End If
>  GetProc = True
>End Function
>
>
>Sub test()
>  Dim s As Single
>  s = Timer
>  flg = False
>  Do
>    Call EnumWindows(AddressOf GetProc, 0)
>    'フラグがTrueになる前に10秒経過したらループ抜ける
>    If Timer - s > 10 Then '10秒待ち
>      Exit Do
>    End If
>  Loop Until flg = True
>  '見つかったらフラグはTrue、時間切れならFalse
>  If flg = False Then
>    MsgBox "時間切れ、見つかりません"
>  Else
>    '見つかったので次の処理
>    Stop
>  End If
>End Sub
・ツリー全体表示

【78904】Re:アプリケーション起動完了の判定
回答  ウッシ  - 17/2/21(火) 22:09 -

引用なし
パスワード
   こんばんは

済みません、コードの間違いも修正しました。

'API宣言部
Public Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Public Declare Function IsWindowVisible Lib "user32" (ByVal hWnd As Long) As Long
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wCmd As Long) As Long
'定数、変数
Public Const GW_OWNER = 4
Public flg As Boolean
'再帰処理用コールバック関数
Public Function GetProc(ByVal hWnd As Long, lParam As Long) As Boolean
  Dim sName As String * 128
  Dim ret  As Long
  
  sName = ""
  'キャプションを取得
  ret = GetWindowText(hWnd, sName, Len(sName))
  '可視状態のウィンドウを調べる
  If IsWindowVisible(hWnd) Then
    'オーナーフォームのハンドル取得
    If GetWindow(hWnd, GW_OWNER) = 0 Then
      If ret <> 0 Then
        '判定するアプリケーションのキャプション名
        If sName Like "対象のWindowキャプション名*" Then
          '見つかったらフラグをTrueにして、関数から抜ける
          flg = True
          Exit Function
        End If
      End If
    End If
  End If
  GetProc = True
End Function


Sub test()
  Dim s As Single
  s = Timer
  flg = False
  Do
    Call EnumWindows(AddressOf GetProc, 0)
    'フラグがTrueになる前に10秒経過したらループ抜ける
    If Timer - s > 10 Then '10秒待ち
      Exit Do
    End If
  Loop Until flg = True
  '見つかったらフラグはTrue、時間切れならFalse
  If flg = False Then
    MsgBox "時間切れ、見つかりません"
  Else
    '見つかったので次の処理
    Stop
  End If
End Sub
・ツリー全体表示

【78903】Re:アプリケーション起動完了の判定
発言  γ  - 17/2/21(火) 21:25 -

引用なし
パスワード
   すでに解決ずみかもしれませんが、別の方法として、
WSHのWshShellクラスのインスタンスを作成し、
Runメソッドを使う方法はいかがでしょうか。

ht tps://www.moug.net/tech/exvba/0100034.html
の後半部分を参考にして下さい。

なお、どんなアプリケーションなのか提示すると
別の方法が提示されるかもしれません。
IEとかでしたら、待つ方法は色々あるようです。
Sendkeysはできれば避けたい方法ですよね。
その辺も含めてコメントが寄せられるかもしれません。
現在の情報だけだと不足かもしれませんよ。
・ツリー全体表示

【78902】Re:アプリケーション起動完了の判定
質問  ちょろすけ  - 17/2/21(火) 17:33 -

引用なし
パスワード
   ウッシさん

ありがとうございます!
ただ、、凄いとしか。
想像以上に複雑過ぎて焦ってます。

もし宜しければ、ポイントになる部分の解説(コメント)もご教示頂けないでしょうか。。
お手数掛けてしまいますが、宜しくお願い致します。


▼ウッシ さん:
>こんにちは
>
>Public Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
>Public Declare Function IsWindowVisible Lib "user32" (ByVal hWnd As Long) As Long
>Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
>Public Declare Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wCmd As Long) As Long
>Public Const GW_OWNER = 4
>Public flg As Boolean
>
>Public Function GetProc(ByVal hWnd As Long, lParam As Long) As Boolean
>  Dim sName As String * 128
>  Dim ret  As Long
>  
>  sName = ""
>  ret = GetWindowText(hWnd, s, Len(s))
>  
>  If IsWindowVisible(hWnd) Then
>    If GetWindow(hWnd, GW_OWNER) = 0 Then
>      If ret <> 0 Then
>        If sName Like "対象のWindowキャプション名*" Then
>          flg = True
>          Exit Function
>        End If
>      End If
>    End If
>  End If
>  GetProc = True
>End Function
>
>
>Sub test()
>  Dim s As Single
>  s = Timer
>  flg = False
>  Do
>    Call EnumWindows(AddressOf GetProc, 0)
>    If Timer - s > 10 Then '10秒待ち
>      Exit Do
>    End If
>  Loop Until flg = True
>  If flg = False Then
>    MsgBox "時間切れ、見つかりません"
>  Else
>    '見つかったので次の処理
>    Stop
>  End If
>End Sub
>
>こんな感じでどうでしょうか? 
>
>
>▼ちょろすけ さん:
>>皆さま教えて下さい。
>>
>>あるアプリケーションをShellコマンドで起動させて、起動完了(ウインドウが
>>完全に開いた状態)を判定してから次の処理(SendKeysなど)に移りたいの
>>ですが、どの様なコードを書けば良いのか行き詰ってます。
>>
>>(色々調べてみると、アプリケーションを起動させて、終了を確認してから
>> 次の処理に移るようなコードはありましたが、今回は起動完了だけを判定
>> したいです。)
>>
>>Do〜Loopとかでも試してみましたが、Shellコマンドが通った時点(ウインドウが
>>完全に開く前)で次の処理に移ってしまうので、SendKeysなどがうまく動かない
>>のです。
>>
>>長々とすいません、、宜しくお願い致します。
・ツリー全体表示

【78901】Re:検索し、各シートを検索したセルを表...
発言  β  - 17/2/21(火) 16:09 -

引用なし
パスワード
   ▼はる さん:

ウッシさんからコードが出ています。
これで、要件満足ということなら解決ですね。

>いていただいたマクロ動かしてみましたが上手く表示されませんでした。

この『表示』というのが、何のことだかわかりませんでした。
私がアップしたコードでは、目に見える表示変更はしていませんので。
ただ、(裏側で)各シートの該当行をトップ行にスクロールさせているだけですから。
実行後、各シートを見ると、そぷなっていると思うんですが?

で、ウッシさんのコードでは各シートスクロール処理のたびにメッセージボックスを出し
スクロールの状態を、各シート毎に確認できるようになっています。

そういうことが要件だったのでしょうか?
であれば、解決ということですね。
・ツリー全体表示

【78900】Re:アプリケーション起動完了の判定
回答  ウッシ  - 17/2/21(火) 15:51 -

引用なし
パスワード
   こんにちは

Public Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Public Declare Function IsWindowVisible Lib "user32" (ByVal hWnd As Long) As Long
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wCmd As Long) As Long
Public Const GW_OWNER = 4
Public flg As Boolean

Public Function GetProc(ByVal hWnd As Long, lParam As Long) As Boolean
  Dim sName As String * 128
  Dim ret  As Long
  
  sName = ""
  ret = GetWindowText(hWnd, s, Len(s))
  
  If IsWindowVisible(hWnd) Then
    If GetWindow(hWnd, GW_OWNER) = 0 Then
      If ret <> 0 Then
        If sName Like "対象のWindowキャプション名*" Then
          flg = True
          Exit Function
        End If
      End If
    End If
  End If
  GetProc = True
End Function


Sub test()
  Dim s As Single
  s = Timer
  flg = False
  Do
    Call EnumWindows(AddressOf GetProc, 0)
    If Timer - s > 10 Then '10秒待ち
      Exit Do
    End If
  Loop Until flg = True
  If flg = False Then
    MsgBox "時間切れ、見つかりません"
  Else
    '見つかったので次の処理
    Stop
  End If
End Sub

こんな感じでどうでしょうか? 


▼ちょろすけ さん:
>皆さま教えて下さい。
>
>あるアプリケーションをShellコマンドで起動させて、起動完了(ウインドウが
>完全に開いた状態)を判定してから次の処理(SendKeysなど)に移りたいの
>ですが、どの様なコードを書けば良いのか行き詰ってます。
>
>(色々調べてみると、アプリケーションを起動させて、終了を確認してから
> 次の処理に移るようなコードはありましたが、今回は起動完了だけを判定
> したいです。)
>
>Do〜Loopとかでも試してみましたが、Shellコマンドが通った時点(ウインドウが
>完全に開く前)で次の処理に移ってしまうので、SendKeysなどがうまく動かない
>のです。
>
>長々とすいません、、宜しくお願い致します。
・ツリー全体表示

【78899】アプリケーション起動完了の判定
質問  ちょろすけ  - 17/2/21(火) 12:14 -

引用なし
パスワード
   皆さま教えて下さい。

あるアプリケーションをShellコマンドで起動させて、起動完了(ウインドウが
完全に開いた状態)を判定してから次の処理(SendKeysなど)に移りたいの
ですが、どの様なコードを書けば良いのか行き詰ってます。

(色々調べてみると、アプリケーションを起動させて、終了を確認してから
 次の処理に移るようなコードはありましたが、今回は起動完了だけを判定
 したいです。)

Do〜Loopとかでも試してみましたが、Shellコマンドが通った時点(ウインドウが
完全に開く前)で次の処理に移ってしまうので、SendKeysなどがうまく動かない
のです。

長々とすいません、、宜しくお願い致します。
・ツリー全体表示

【78898】Re:検索し、各シートを検索したセルを表...
回答  ウッシ  - 17/2/21(火) 8:12 -

引用なし
パスワード
   こんにちは

こんな感じですか?

Sub サーチ()
  Dim i As Integer
  Dim DD As Date
  '##日付設定
  Sheets("Sheet2").Range("A1").FormulaR1C1 = "=TODAY()-1"
  Sheets("Sheet2").Range("A1").Value = Sheets("Sheet2").Range("A1").Value
  DD = Sheets("Sheet2").Range("A1").Value
  
  '##シートループ
  If ActiveWorkbook.Worksheets.Count < 1 Then Exit Sub
  For i = 1 To ActiveWorkbook.Worksheets.Count
    '###日付検索
    Dim Findcell As Range
    Set Findcell = Worksheets(i).Cells.Find(What:=DD, LookAt:=xlWhole, LookIn:=xlFormulas)
    '##無かったら
    If Not Findcell Is Nothing Then
      '##移動
      Application.Goto Findcell, True
      MsgBox "OK"
    End If
    
  Next i
End Sub

他の部分、出来てなかったんですね。
▼β さん:
>▼HARU さん:
>
>ところで、ほかのシートのセルの日付ですが、値で入っていますか?
>それとも、数式で入っているのでしょうか?
・ツリー全体表示

【78897】Re:検索し、各シートを検索したセルを表...
質問  はる  - 17/2/21(火) 8:08 -

引用なし
パスワード
   ▼β さん:
>▼HARU さん:
>
>ところで、ほかのシートのセルの日付ですが、値で入っていますか?
>それとも、数式で入っているのでしょうか?

お手数おかけしております。
日付は値で入っております。
・ツリー全体表示

【78896】Re:検索し、各シートを検索したセルを表...
発言  β  - 17/2/21(火) 7:03 -

引用なし
パスワード
   ▼HARU さん:

ところで、ほかのシートのセルの日付ですが、値で入っていますか?
それとも、数式で入っているのでしょうか?
・ツリー全体表示

【78895】Re:検索し、各シートを検索したセルを表...
発言  β  - 17/2/21(火) 7:01 -

引用なし
パスワード
   ▼HARU さん:

書式を決めつけて LookIn を xlValues で検索することもできますが、
アップしたコードでは書式は何であっても取り出せるはずです。

調べてみますが今から夜まで外出しますので、レスは明日になるかと思います。
それまでにウッシさんや、他の回答者さんが対応していただけるかもしれませんね。
・ツリー全体表示

【78894】Re:検索し、各シートを検索したセルを表...
質問  HARU  - 17/2/21(火) 6:07 -

引用なし
パスワード
   ▼β さん:
色々説明不十分で申し訳ありません。

sheet2はデータの何も入っていないsheetですので、スクロールはしてもしなくても問題ありません。シート数も増減するので全シートを対象にしていました。

ActiveBookは最終的にはマクロブック作成を念頭においております。
まずはThisBOOKで動作させたいと思っています。

>ポイントは以下かな?
>
>    If Not Findcell Is Nothing Then
>      On Error Resume Next
>      '##移動
>    Else
>      ActiveWindow.ScrollRow = Findcell
>    End If
>
>この On Error Resume Next 、これは何を意図して書かれたコードかわかりませんけど
>見つかった場合は On Error Resume Next ??
>見つからなかった場合は Else にいきますよね。
>見つからなかったのにスクロール?
> FindCell は Nothing ですからエラーになるのは当たり前なんですけど?

思い違いをしておりました・・・
IF FindCell が見つからなかったら、
On Error Resume Next
見つかってElseに飛んでサーチのつもりで書いていました


書いていただいたマクロ動かしてみましたが上手く表示されませんでした。
現在、日付の書式がmm"月"dd"日"(aaa)になっております。
書式を変更することも出来ますが、
書いていただいたコードはどの書式で対応しているのでしょうか
・ツリー全体表示

【78893】Re:検索し、各シートを検索したセルを表...
発言  β  - 17/2/20(月) 23:40 -

引用なし
パスワード
   ▼はる さん:

コメントした通り、仕様と要件がいまいち不明ですが、もしかしてやりたかったことは
以下ですか?

Findメソッドで日付を検索する場合、日付のValue(つまり日付型の値)で、LookIn を
xlFormulas にすることがポイントです。

Sub Test()
  Dim DD As Date
  Dim Findcell As Range
  Dim sh As Worksheet
  
  DD = Date - 1
  
  For Each sh In Worksheets
    Set Findcell = sh.Cells.Find(What:=DD, LookAt:=xlWhole, LookIn:=xlFormulas)
    If Not Findcell Is Nothing Then Application.Goto Findcell.EntireRow.Cells(1), True
  Next
  
End Sub
・ツリー全体表示

【78892】Re:検索し、各シートを検索したセルを表...
発言  β  - 17/2/20(月) 23:31 -

引用なし
パスワード
   ▼はる さん:

日付検索は、なかなかやっかいです。
用いる手法(今回の場合はFindメソッド)により、適切な検索方法をとる必要があります。

それ以外のコード記述にも問題が少なくありませんが、それ以前に、仕様が少し、あいまいです。

最初に SHeet2 の A1 に 昨日の日付を入れているわけですが、
その値を元にすべてのシートを処理してますね。
すべてですから、Sheet2 も対象で、つまり、Sheet2 なら、A1 が左上隅になるように
スクロールさせたい?
それとも Sheet2 は対象外?

関係するブックですけど、ActiveWorkbookが登場していますね。
これはマクロブックを意図しておられるのですか?
それとも、別のブックを意図しておられるのですか?

ポイントは以下かな?

    If Not Findcell Is Nothing Then
      On Error Resume Next
      '##移動
    Else
      ActiveWindow.ScrollRow = Findcell
    End If

この On Error Resume Next 、これは何を意図して書かれたコードかわかりませんけど
見つかった場合は On Error Resume Next ??
見つからなかった場合は Else にいきますよね。
見つからなかったのにスクロール?
FindCell は Nothing ですからエラーになるのは当たり前なんですけど?


>▼ウッシ さん:
>返信ありがとうございます。
>早速試してみましたが、
>
>上のコード
>実行時エラー5
>プロシージャの呼び出し、または引数が不正です。
>
>下のコード
>実行時エラー91
>オブジェクト変数またはWithブロック変数が設定されていません。
>
>と表示され動きませんでした。
>
>自分の書いたコードのIFが悪さをしているのかと外してみましたが変わらず・・・
>お助けくださいませ
・ツリー全体表示

【78891】Re:検索し、各シートを検索したセルを表...
質問  はる  - 17/2/20(月) 22:46 -

引用なし
パスワード
   ▼ウッシ さん:
返信ありがとうございます。
早速試してみましたが、

上のコード
実行時エラー5
プロシージャの呼び出し、または引数が不正です。

下のコード
実行時エラー91
オブジェクト変数またはWithブロック変数が設定されていません。

と表示され動きませんでした。

自分の書いたコードのIFが悪さをしているのかと外してみましたが変わらず・・・
お助けくださいませ
・ツリー全体表示

【78890】Re:ファイルを更新順に読み込む方法
発言  β  - 17/2/20(月) 21:22 -

引用なし
パスワード
   ▼もりC さん:

>objA.MoveFirstのところでコンパイルエラーが発生します。

こちらではコンパイルエラーはでませんが?
エクセルのバージョンは?

それはそれとして、別案。
フォルダ内のcsvファイルを最新更新日順に取り出すサンプルコードです。

Sub Test()
  Dim fPath As String
  Dim fName As String
  Dim sl As Object
  Dim k As String
  Dim i As Long
  
  Set sl = CreateObject("System.Collections.SortedList")
  fPath = ThisWorkbook.Path & "\"
  
  fName = Dir(fPath & "*.csv")
  
  Do While fName <> ""
    k = Format(FileDateTime(fPath & fName), "yyyymmddhhnnss") & " " & fName
    sl.Add k, fPath & fName
    fName = Dir()
  Loop
  
  For i = 0 To sl.Count - 1
    MsgBox sl.getbyindex(i)
  Next
  
End Sub
・ツリー全体表示

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