- ベストアンサー
VBスクリプトで日付関数を使った出力結果を取得する方法について
- VBスクリプトで日付関数を使用して出力結果を取得する方法について困っています。具体的には、日付関数で取得した結果をソースに含めることができません。
- 質問者は、日付計算を行い、結果を変数に代入したいと考えていますが、うまく実装できていません。初心者のため、正しい方法を知りたいと思っています。
- VBスクリプトの中で、MSUtil.LogQueryオブジェクトを使用して日付関数の結果を取得し、出力形式を設定しています。しかし、クエリの実行に問題があり、結果が得られません。質問者は、正しいクエリの作成方法を知りたいと考えています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- VBの日付関数から必要な文字列を抜き出したい
VBscriptを使い日付関数で取得した値の中から一部の文字列を抜き出したいのですがうまくいかないのでどなたか間違いの箇所を指摘していただけないでしょうか? ’先月を返します。 Dim b Dim yyyymm b=DateAdd("M",-1,Now) yyyymm=Year(b)*100+Month(b) ’先月の表示を変更します。 Dim lastmonth Dim strVal strVal = "yyyymm" lastmonth = Right(strVal, 4) Dim oLogQuery Dim strQuery Set oLogQuery = CreateObject("MSUtil.LogQuery") ' クエリ テキストを作成します。 strQuery = "SELECT cs-uri-stem,COUNT(*) AS view INTO View.csv FROM C:\test1\ex"&★lastmonth★&".log" strQuery = strQuery & " WHERE cs-uri-stem IN('/Default.htm';'/images/address.gif') GROUP BY cs-uri-stem ORDER BY COUNT(*) DESC" ' クエリを実行します。 oLogQuery.ExecuteBatch strQuery ※先月を返しますというところで2008年2月に実行したら200801という表示になると思います。(もし、1月に実行したら200712になりますよね?)200801の右から4文字を取り出し0801という文字列を作り★印の間に入れたいのですがうまくいきません。 また3か月分(四半期?)もやりたいのですがヒントがあったら教えて下さい。
- ベストアンサー
- Visual Basic
- Access&VB
2つほど質問があるのですが、 1.VBからDAOでパスワードがかかっているACCESSに接続する場合に引数はどのように設定したらよいのでしょうか? 2.ACCESSでクエリーを作成し、そのクエリーの結果をエクセルにエクスポートするという処理をやります。 このときクエリーはパラメータを要求します。どこかのタイミングでパラメータをわたせないでしょうか? 具体的にはこんな感じです。 Dim objDb As Object Dim appAccess As Object Set appAccess = CreateObject("Access.Application") appAccess.OpenCurrentDatabase "パス名\Memo.mdb" appAccess.DoCmd.TransferSpreadsheet 1, 8,"クエリー名","パス名.xls", False,"" もしくは、 appAccess.DoCmd.RunMacro "マクロ名" (マクロの中身は「TransferSpreadsheet」) 分りにくい説明ですが、よろしくお願いします。
- ベストアンサー
- Visual Basic
- 【Access2000】日付型を文字列型に変換するには?
Dim exlfilename As Strings exlfilename = format([forms]![form]![日付],yyyymm) フォームに入力する形式が2008/09となっているので 2008/09→200809としたいんですが上手くいきません。 どのように書けば良いでしょうか。 よろしくお願いします。
- 締切済み
- オフィス系ソフト
- 日付時刻型の比較
お世話になります。コンピュータ歴が短いもので質問の意味がよくわからないかもしれませんがよろしくおねがいします。 accessのDB「テーブル1」に日付時刻型のフィールド「フィールド1」があり、 2001/00/00 00:00:00の形式でデータが入っています。 テーブル1のデータで、1ヶ月前のデータより新しいもののみをVBScriptで抜き出したいのですが、下記のようにDATEADD関数で変数1に1ヶ月前の日付を代入し、それと比較しようとしましたが、うまくいきませんでした。 変数1 = DATEADD("m" ,-1 ,NOW) Set rs = Server.CreateObject("ADODB.RecordSet") sql = "SELECT * FROM テーブル1 WHERE フィールド1 >= 変数1" 変数1をResponse.Writeすると見た目は同じ形式で入っていました。 変数1の部分を手書きで#2001/00/00 00:00:00#と書けばうまく動いてくれるの ですが・・・ 変数の値を型変換しなければいけないのでしょうか? 良い方法がありましたら教えてください。
- ベストアンサー
- Microsoft ASP
- VBscriptで日数計算しファイル名にしたい
VBscriptを使い特定条件のファイル抽出をしておりますがそこに日時計算をいれたいとおもっているのですがわからない部分があるのでご存知の方いらっしゃいましたら教えていただけないでしょうか? ファイル抽出のためのVBSは下記のようになっております。 Dim oLogQuery Dim oEVTInputFormat Dim oCSVOutputFormat Dim strQuery Set oLogQuery = CreateObject("MSUtil.LogQuery") ' クエリ テキストを作成します。 strQuery = "SELECT TimeGenerated, EventID INTO C:\output.csv FROM System"● strQuery = strQuery & " WHERE SourceName = 'Application Popup'" ' クエリを実行します。 oLogQuery.ExecuteBatch strQuery, oEVTInputFormat, oCSVOutputFormat わかるように●マークをつけてある部分ですが月ごとにoutput.csvを出しますがファイルが上書きになってしまうのは困るので抽出したファイルに作成した前の月をいれたいのですがどうしたらよいでしょうか? 例えば今抽出したらoutput200801.csvとなる様にです。 クエリテキスト作成の前に日月計算をしてoutput%LASTMONTH%のようにすればいいかなと検討はしておりますが・・・ あと、例えば2008年1月に3か月分のものをだしたという条件のとき(2007年10月~12月)計算結果が2000801と出たとき下2桁が01の場合前年度の年数+10-12というような表示をさせることも可能でしょうか? よろしくお願いします。 環境はXPでLogParserを自動で使う場合の条件式です。
- ベストアンサー
- Visual Basic
- VB6からExcelを操作する
VB6.0からExcelの操作をしています。 そのなかで、Excelシートを印刷したいのですが、どのようにしたら良いのでしょうか。 また、ExcelVBAのFunctionやSubを実行するにはどのようにするのでしょうか。 VB6.0内でExcel操作は次のようにしています。 Dim ExcelApp As Object Dim EWorkbook As Object Dim ESheet As Object Set ExcelApp = CreateObject("Excel.Application") Set EWorkbook = ExcelApp.Workbooks.Open(ExcelBookFlNm) Set ESheet = EWorkbook.Sheets(M_SheetNm) Set ESheet = Nothing Set EWorkbook = Nothing ExcelApp.Quit Set ExcelApp = Nothing よろしくお願いします。
- ベストアンサー
- Visual Basic
- vbスクリプトについて
Excelファイル(D:\test.xls)を再起動するvbスクリプトを作成し、 4時間おきに実行するタスクスケジュールを設定したいと思います。 ※6:00、10:00、14:00、18:00、22:00、2:00のタスクスケジュールを作成し、 vbスクリプトを実行。 次のタスクスケジュールが実行されるまでの4時間は、Excelファイル(D:\test.xls)は 開いたままの状態です。 なので、vbスクリプトで、まずExcelファイル(D:\test.xls)が開いている場合は、 「D:\test.xls」を一旦(上書き保存なしで)閉じて、再度、「D:\test.xls」を開きたいと思っています。 ※他のExcelファイルが開いている場合は、「D:\test.xls」のみ閉じる。 「D:\test.xls」を開くスクリプトはできたのですが、「D:\test.xls」を閉じるところがわかりません。 どなたか教えていただけないでしょうか。 【vbスクリプト】----------------------------------------- '「D:\test.xls」が開いている場合は閉じる ??? '「D:\test.xls」を起動する Dim xlApp Dim xlWbk Set xlApp=CreateObject("Excel.Application") xlApp.Visible=True Set xlWbk=xlApp.Workbooks.open("D:\test.xls",True) ---------------------------------------------------------
- 締切済み
- その他(プログラミング・開発)
- vbsスクリプト作成について
いつもありがとうございます。 今回、知識がないのですが下記のような処理のVBSを作成したく調べております。 (1)test.vbsファイルを実行時にvbsファイルと同じディレクトリに「folder」フォルダを作成 (2)作成した「folder」フォルダにサービス「idsvc」の状態をテキスト形式で「service.txt」として出力 (3)上記と同様の処理(service.txtはリネームする)を現在ログインしているユーザのスタートアップに「start.vbs」として配置 (3)上記処理後、再起動を実施 (4)再起動後、start.vbsを実行後に自動削除 大きく分けて4つの処理を個別に作成して最終1つのファイルとして作成しようと思っております。 なんとかわからいなりに作成してはいるのですが どうしても下記方法がわかりません。 (2)の処理「folder」を作成後、service.txtのパス(最下位行)を変数に入れて出力する方法 (きたないソースで申し訳ないです) ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ' フォルダ作成 '---------------------------------------------- Dim str_Path Dim objFdr Set objFdr = CreateObject("Scripting.FileSystemObject") str_Path = objFdr.CreateFolder(".\folder") Dim WshShell Set WshShell = CreateObject("WScript.Shell") Set objLog = WshShell.Exec("cmd /C ""sc query idsvc | findstr -i state > .\folder\service.txt""") ※サービス出力はvbsでの方法がわからなかったのでcmdを呼び出しています。 (4)再起動後の処理にて、再起動前に作成したフォルダに「service.txt」を出力する方法 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ objVBSFile.WriteLine("On Error Resume Next") objVBSFile.WriteLine("Dim WshShell") objVBSFile.WriteLine("Set WshShell = CreateObject(""WScript.Shell"")") objVBSFile.WriteLine("Set objLog = WshShell.Exec(""cmd /C """sc query idsvc | findstr -i state >C:\services.txt"""")") objVBSFile.WriteLine("Set objFSO = CreateObject(""Scripting.FileSystemObject"")") objVBSFile.WriteLine("objFSO.DeleteFile WScript.ScriptFullName") 他にもわからないことはありますが、調べてなんとかなるとおもっておりますが 上記についてはVBSの理解不足なため、つかめません。 申し訳ありませんが、アドバイス頂けないでしょうか。 以上、宜しくお願い致します。
- ベストアンサー
- その他(ITシステム運用・管理)
- VBのコードが理解できません 解説いただけないでしょうか?
Dim ObjIE As Object Dim ObjShell As Object Dim ObjWindow As Object Dim WinExist As Boolean WinExist = False Set ObjShell = CreateObject("Shell.Application") For Each ObjWindow In ObjShell.Windows If TypeName(ObjWindow.Document) = "HTMLDocument" Then WinExist = True Set ObjIE = ObjWindow End If Next Set ObjShell = Nothing If Not WinExist = True Then Set ObjIE = CreateObject("InternetExplorer.Application") End If ObjIE.Navigate "http://nantokakantoka.html" ObjIE.Visible = True このコードを解説いただけないでしょうか? 特に WinExist For Each ObjWindow In ObjShell.Windows If TypeName(ObjWindow.Document) = "HTMLDocument" Then が何をしているのか分からないんです。
- ベストアンサー
- Visual Basic
- VB2005でBASP21が使えません
BASP21のFORMメソッドを使用し、次のような構文でHTMLのタグを読もうとしています。 dim a, b, obj as Object set obj = Createobject("basp21") a = Request.TotalBytes b = Request.BinaryRead(a) str = obj.Form(b,"name") 同じようなコーディングでVB6.0ではタグ<name>の文字列が取得出来て、VB2005では出来ません。 VB2005のコーディングが違うのでしょうか。
- 締切済み
- Visual Basic
- EB-PU2113/EB-PU2110を使用して暖房を27度に設定していますが、ファンの音がとてもうるさいです。
- EB-PU2113/EB-PU2110の暖房設定でファンの音がうるさい場合、解決方法はありますか?
- EPSON社製品であるEB-PU2113/EB-PU2110を使用して暖房を27度に設定していますが、ファンの音が非常にうるさいため困っています。解決方法を教えてください。