JustAnswer のしくみ:

  • 専門家に質問
    知識豊富な専門家があらゆる質問にお答えするために常に待機しています。
  • 専門家が丁寧に対応
    E メールやサイト内オンラインメッセージなど、さまざまな手段で回答を通知。
    必要に応じてフォローアップの質問をすることもできます。
  • 満足度 100% 保証
    専門家からの回答を確認し評価をすることで、支払うかどうかを決めます。

tsukuba_frogに今すぐ質問する

tsukuba_frog
tsukuba_frog, プログラマー
カテゴリ: プログラミング
満足したユーザー: 41
経験:  IT Professional
65805256
ここに プログラミング に関する質問を入力してください。
tsukuba_frogがオンラインで質問受付中

あるフォルダの更新日付が最新のテキストファイルの文字列から ブランクの有無を検索して、ブランクがあった場合はイベントログに エラーとしてメッセージを出したいのですが、WSHでプ

質問者の質問

あるフォルダの更新日付が最新のテキストファイルの文字列から
ブランクの有無を検索して、ブランクがあった場合はイベントログに
エラーとしてメッセージを出したいので すが、WSHでプログラムは可能でしょうか。


下記はVBAでのコードとなりますが、
イメージ的には下記のような形で最新ファイルを取得して、
取得したファイルから空白を探して、空白があった場合は
イベントログにエラーを出す仕様にしたいのですが、
どなたかお力を、お借りできますでしょうか。
宜しくお願いします。

Sub 最新ファイルを開く()

Dim strFileName As String
Dim strFilePath As String

strFilePath = ThisWorkbook.Path & "¥"
strFileName = fncGetNewFile(strFilePath)

If strFileName = "" Then
  MsgBox "ファイルがありません。"
  Exit Sub
End If

Workbooks.Open strFilePath & strFileName

End Sub


Public Function fncGetNewFile(strFilePath As String) As String

Dim strFileName As String
Dim tmpFileName As String
Dim time As Date
Dim pretime As Date
 
tmpFileName = Dir(strFilePath & "*.xls")

Do Until tmpFileName = ""
  pretime = FileDateTime(strFilePath & tmpFileName)
  If pretime > time Then
    time = pretime
    strFileName = tmpFileName
  End If
  tmpFileName = Dir()
Loop

fncGetNewFile = strFileName

End Function

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

空白セルを開いたテキストから検索
========================================

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

空白セルの有無をイベントログに表示
========================================
投稿: 4 年 前.
カテゴリ: プログラミング
専門家:  tsukuba_frog 返答済み 4 年 前.
まずイベントログへの出力方法をご回答いたします。

1.VBAの参照設定で「Windows Scripting Host Object Model」を追加します。

2.その上で、以下のようなソースコードを記述します。

 Set WshShell = CreateObject("WScript.Shell")
 WshShell.LogEvent 0, "test message"

0の部分は

0 SUCCESS
1 ERROR
2 WARNING
4 INFORMATION

それぞれこのような意味になります。
ご質問者様の意図を汲みますと1か2となるでしょうか。
専門家:  tsukuba_frog 返答済み 4 年 前.
ご質問内容に対してご確認です。

>あるフォルダの更新日付が最新のテキストファイルの文字列から
とありますが、
ご提示のVBAのコードを見ますと、マクロが含まれるxlsと同じフォルダ内の「xlsファイル」を探しているようにお見受けします。
中身を確認したいファイルは「テキストファイル」と「xlsファイル」のどちらでしょうか?
質問者: 返答済み 4 年 前.

ご連絡ありがとうございます。

中身を確認したいのはテキストファイルとなります。

誤解を招いてしまい申し訳ありません。

また、一件目に頂いた回答を確認いたしました。

ありがとうございます。

専門家:  tsukuba_frog 返答済み 4 年 前.
テキストファイルですね。
そうしますと、次に「テキストファイルから空白を探す」、という点ですが、
もう少し具体的に教えて頂けますでしょうか。
テキストファイルはどういった書式になのでしょうか?
質問者: 返答済み 4 年 前.

パフォーマンスログを取得しているのですが、excelをインストールしていないので、

テキストのCSVファイルにログが書きこまれています。

まれにログが取得できないことがあるので、

そのテキスト形式で書きこまれるログのなかに空白(ログの未取得)を確認できるスクリプトがあれば、と思いご相談させて頂いております。

説明不足で申し訳ございません。

 

専門家:  tsukuba_frog 返答済み 4 年 前.
ざっと書いてみました。

CSVファイルのパスと、その中の何列目をチェックするか(左端が0)を引数で渡すと
そのファイルをオープンし、一行ずつ読んではカンマで分割して、
チェックする部分が空白であればTrueを返し、
空白が無く最後まで読みきったらFalseを返します。

Public Function isBlankColExists(csvpath As String, checkColIndex As Integer) As Boolean
Dim fso As New FileSystemObject
Dim fs As TextStream
Dim ret As Boolean

ret = False
Set fs = fso.OpenTextFile(csvpath)
Do Until fs.AtEndOfLine
Dim line As String
Dim tmparray As Variant

line = fs.ReadLine()
tmparray = Split(line, ",")

If Trim(tmparray(checkColIndex)) = "" Then
ret = True
Exit Do
End If
Loop

fs.Close

isBlankColExists = ret

End Function

ご参考になれば。
質問者: 返答済み 4 年 前.

ご対応ありがとうございます。

大変助かります。

実はパスを指定するところですが、ファイル名が(testyyyymmdd.csv)というように毎日日付が変わってしまうため、パスでの指定が出来ず困っていたのですが、何か良い案はございますでしょうか。

お忙しいところ、大変申し訳ございませんが、宜しくお願いいたします。

質問者: 返答済み 4 年 前.

ご対応ありがとうございます。

大変助かります。

実はパスを指定するところですが、ファイル名が(testyyyymmdd.csv)というように毎日日付が変わってしまうため、パスでの指定が出来ず困っていたのですが、何か良い案はございますでしょうか。

お忙しいところ、大変申し訳ございませんが、宜しくお願いいたします。

専門家:  tsukuba_frog 返答済み 4 年 前.
それでしたらご質問者様作成のfncGetNewFileのなかで

 tmpFileName = Dir(strFilePath & "*.csv")

のようにすればよいように思いますが…
それだとうまくいかないでしょうか?
tsukuba_frog, プログラマー
カテゴリ: プログラミング
満足したユーザー: 41
経験: IT Professional
tsukuba_frogをはじめその他名のプログラミングカテゴリの専門家が質問受付中
質問者: 返答済み 4 年 前.

返信ありがとうございます。

VBAですとDir()が使用できると思うのですが、

今回はVBSのみでスクリプトを作れればと思っております。

VBSにはDir()が使用できないと思われますので、

ご質問させて頂きました。

私は現在頂いたコードをテストする環境にいないため、

動作確認はできておりませんが、

tsukubo frog様には今回の件、大変感謝しております。

お忙しいところ、ご対応いただきありがとうございます。

 

専門家:  tsukuba_frog 返答済み 4 年 前.
>今回はVBSのみでスクリプトを作れればと思っております。

そうでしたか。
それでしたら同じアルゴリズムで、こんな感じで書けると思いますよ。

Public Function fncGetNewFile2(dirpath)
Dim fso
Dim ret

Dim dir
Dim fil
Dim time
Dim pretime
Dim strFileName

Set fso = CreateObject("Scripting.FileSystemObject")

Set dir = fso.GetFolder(dirpath)

For Each fil In dir.Files
If fso.GetExtensionName(fil) = "xls" Then
pretime = fil.DateLastModified
If pretime > time Then
time = pretime
strFileName = fil.Name
End If
End If
Next

fncGetNewFile2 = strFileName

End Function

ご参考になれば。

JustAnswer メディア掲載:

 
 
 
Ask-a-doc ウェブサイト:簡単な質問がある場合は、さまざまな分野の専門家が回答してくれるサイトに投稿してみてはいかがだろうか。Justanswer.jp は特にお薦めだ。
10 月以来、JustAnswer.jp では一時解雇や失業、契約解除に関する法的な質問が急増している。
justanswer.jp/legal といったウェブサイトでは、
法律に関する確実な回答が得られる。
過去 30 日で JustAnswer のトラフィックは 14 パーセント上昇し、ページ閲覧回数は 40 万に近付いている...ストレスや高血圧、飲酒、心臓の痛みに関する質問にいたっては 33 パーセントという増加率を記録した。
グッド モーニング アメリカに出演しているキャリア専門家の Tory Johnson は、注目の在宅ビジネスとして、さまざまな分野の専門家がユーザーの質問に答える JustAnswer などを紹介。
専門家として登録するには、かなり厳しい審査をパスしなければなりません。
 
 
 

ユーザーの声:

 
 
 
  • なかなか解決できないトラブルだったのですが、解決までとことん相談にのってくださいました。また、パソコンをうまく使いこなせていない私でも解りやすくアドバイスしてくださいました。 本当に助かりました! 大阪府 黒崎
< 前へ | 次へ >
  • なかなか解決できないトラブルだったのですが、解決までとことん相談にのってくださいました。また、パソコンをうまく使いこなせていない私でも解りやすくアドバイスしてくださいました。 本当に助かりました! 大阪府 黒崎
  • パソコンの操作は熟知している訳でもなく不慣れですが何回もの質問に丁寧に答えていただき問題解決しました、大変助かりました、感謝しています。 兵庫県明石市 後藤
  • 回答が早く、2日間対処には時間がかかりましたが、80%諦めていたものが解決したので、とにかく感謝の一言です。 ありがとうございました。 千葉県野田市 金澤
  • まずは親身になって回答をして頂ける専門家であったこと。説明が簡潔でわかりやすく、質問者が気持ちの整理をしやすい配慮が伺えた。 岐阜県 石川
  • 短時間で的確なアドバイスを受けることができ、かつ、回答に対する質問に対しても直ちに真摯な回答が得られました。 大阪府高槻市 川嶋
  • 専門知識のある経験豊富な方に出会う機会のない人でも、このサイトで実現出来ることは素晴らしいことだと思いました。 専門家が辛抱強く回答をしてくださる姿勢にも感謝いたしました。 茨城県日立市 池田
 
 
 

専門家の紹介:

 
 
 
  • rushqk

    rushqk

    プログラマー

    満足した利用者:

    9
    AV機器開発、ソフトウェア設計
  • http://ww2.justanswer.com/uploads/RU/rushqk/2011-9-24_21937_CIMG0197.64x64.jpg rushqk さんのアバター

    rushqk

    プログラマー

    満足した利用者:

    9
    AV機器開発、ソフトウェア設計
  • http://ww2.justanswer.com/uploads/TA/taokato/2011-5-30_02329_me.64x64.JPG taokato さんのアバター

    taokato

    プログラマー

    満足した利用者:

    1
    c言語を主に従事。 触った事のある言語: c, c#, VB.net, EXCEL VBA, perl, php, TeraTerm MACRO, H8アセンブラ 他
  • http://ww2.justanswer.com/uploads/OB/obody/2015-6-17_162039_photo.64x64.jpg Nobody_1963 さんのアバター

    Nobody_1963

    プログラマー

    満足した利用者:

    1
    Microsoft Access 専門でサポート致します。
  • http://ww2.justanswer.com/uploads/KW/kwskmkt/2011-7-4_13263_DSC04002.64x64.JPG DKK2002 さんのアバター

    DKK2002

    ITエンジニア

    満足した利用者:

    811
    NTTコミュニケーションズ .com Master★★
  • http://ww2.justanswer.com/uploads/OC/oct1290/2012-4-17_123618_akodesu.64x64.JPG oct1290 さんのアバター

    oct1290

    ITエンジニア

    満足した利用者:

    38
    日本製PCメーカー顧客、企業サポート官庁PCサポート海外3店舗のPC修理業
  • http://ww2.justanswer.com/uploads/HO/holodecks/2011-10-21_0147_20111021091343.64x64.jpg holodecks さんのアバター

    holodecks

    情報整理戦略コンサルタント

    満足した利用者:

    2
    化学科卒システム計画研究所 - シニアシステムエンジニア、ディー・リンク株式会社 取締役