FormatDateTimeを使うと、日時のデータを文字列で表示できます。
第二引数で表示形式を指定します。 設定値と表示形式は、下記のコードのコメント部分を確認してください。
Dim dt dt = Now '①標準の日付と時刻の表示形式(日付と時刻)→ "YYYY/MM/DD HH:mm:SS" WScript.Echo FormatDateTime(dt, vbGeneralDate) '②長い日付形式 →"YYYY年M月D日" WScript.Echo FormatDateTime(dt, vbLongDate) '③短い日付形式 →"YYYY/MM/DD" WScript.Echo FormatDateTime(dt, vbShortDate) '④長い時刻形式 →"HH:mm:SS" WScript.Echo FormatDateTime(dt, vbLongTime) '⑤短い時刻形式 →"HH:mm" WScript.Echo FormatDateTime(dt, vbShortTime)
以下のように、vbGeneralDate等の代わりに数値で書いても変換できます。
Dim dt dt = Now '①標準の日付と時刻の表示形式(日付と時刻)→ "YYYY/MM/DD HH:mm:SS" WScript.Echo FormatDateTime(dt, 0) '0:vbGeneralDate '②長い日付形式 →"YYYY年M月D日" WScript.Echo FormatDateTime(dt, 1) '1:vbLongDate '③短い日付形式 →"YYYY/MM/DD" WScript.Echo FormatDateTime(dt, 2) '2:vbShortDate '④長い時刻形式 →"HH:mm:SS" WScript.Echo FormatDateTime(dt, 3) '3:vbLongTime '⑤短い時刻形式 →"HH:mm" WScript.Echo FormatDateTime(dt, 4) '4:vbShortTime
VBScriptで日付を取得する方法です。
以下の日付を取得するサンプルです。
Dim today, yesterday, tomorrow, oneWeekAgo, oneWeekLater, oneMonthAgo, oneMonthLater, oneYearAgo, oneYearLater
today = Date()
yesterday = DateAdd("d", -1, today)
tomorrow = DateAdd("d", 1, today)
oneWeekAgo = DateAdd("ww", -1, today)
oneWeekLater = DateAdd("ww", 1, today)
oneMonthAgo = DateAdd("m", -1, today)
oneMonthLater = DateAdd("m", 1, today)
oneYearAgo = DateAdd("yyyy", -1, today)
oneYearLater = DateAdd("yyyy", 1, today)
Dim output
output = "今日の日付: " & today & vbCrLf
output = output & "昨日の日付: " & yesterday & vbCrLf
output = output & "明日の日付: " & tomorrow & vbCrLf
output = output & "一週間前の日付: " & oneWeekAgo & vbCrLf
output = output & "一週間後の日付: " & oneWeekLater & vbCrLf
output = output & "一か月前の日付: " & oneMonthAgo & vbCrLf
output = output & "一か月後の日付: " & oneMonthLater & vbCrLf
output = output & "一年前の日付: " & oneYearAgo & vbCrLf
output = output & "一年後の日付: " & oneYearLater
MsgBox output
指定したフォルダ内の以下の情報をCSVファイルに出力します。
Dim fso, folder, files, file
Dim csvFilePath, csvFile, suffix
' WScript オブジェクトを作成
Set WshShell = CreateObject("WScript.Shell")
' デスクトップのパスを取得
desktopPath = WshShell.SpecialFolders("Desktop")
' フォルダ選択ダイアログを表示して、処理対象のフォルダを取得
Set shell = CreateObject("Shell.Application")
Set selectedFolder = shell.BrowseForFolder(0, "フォルダを選択", 0, desktopPath)
' フォルダが選択された場合のみ処理を実行
If Not selectedFolder Is Nothing Then
' 出力するCSVファイルのパス
csvFilePath = "output.csv"
' サフィックスの作成
suffix = FormatDateTime(Now, vbGeneralDate)
suffix = Replace(suffix, "/", "")
suffix = Replace(suffix, ":", "")
suffix = Replace(suffix, " ", "")
' サフィックスをCSVファイル名に追加
csvFilePath = Left(csvFilePath, Len(csvFilePath) - 4) & "_" & suffix & ".csv"
' ファイルシステムオブジェクトを作成
Set fso = CreateObject("Scripting.FileSystemObject")
' 指定したフォルダ内のファイルを取得
Set folder = fso.GetFolder(selectedFolder.Self.Path)
Set files = folder.Files
' CSVファイルを作成または既存のファイルを上書き
Set csvFile = fso.CreateTextFile(csvFilePath, True)
' ヘッダ行をCSVファイルに書き込む
csvFile.WriteLine("作成日,更新日,ファイル名,ファイルパス")
' ファイルごとに情報を取得してCSVファイルに書き込む
For Each file In files
' ファイルの作成日、更新日、ファイル名、ファイルパスを取得し、CSVファイルに書き込む
csvFile.WriteLine(FormatDateTime(file.DateCreated, 2) & "," & FormatDateTime(file.DateLastModified, 2) & "," & file.Name & "," & file.Path)
Next
' CSVファイルを閉じる
csvFile.Close
' メッセージボックスで完了を表示
MsgBox "CSVファイルの出力が完了しました。"
' ファイルシステムオブジェクトを解放
Set fso = Nothing
End If
Option Explicit
Dim objFSO
Dim excelApp, workbook, worksheet
Dim searchStr, replaceStr, prefix
Dim filePath, newFilePath
' ファイルシステムオブジェクトを作成
Set objFSO = CreateObject("Scripting.FileSystemObject")
' プレフィックスを入力
prefix = InputBox("ファイル名に付けるプレフィックスを入力してください")
' 検索置換文字列を入力
searchStr = InputBox("検索する文字列を入力してください")
replaceStr = InputBox("置換する文字列を入力してください")
' エクセルアプリケーションオブジェクトを作成
Set excelApp = CreateObject("Excel.Application")
excelApp.Visible = False
excelApp.DisplayAlerts = False ' メッセージを非表示にする
' ドラッグ&ドロップされたファイルの数だけ処理を繰り返す
For Each filePath in WScript.Arguments
' エクセルファイルを開く
Set workbook = excelApp.Workbooks.Open(filePath)
' ドラッグ&ドロップされたエクセルファイル内のシートの数だけ処理を繰り返す
For Each worksheet In workbook.Sheets
' テキストの置換
worksheet.Cells.Replace searchStr, replaceStr
Next
' 別名で保存
newFilePath = objFSO.GetParentFolderName(filePath) & "\" & prefix & "_" & objFSO.GetFileName(filePath)
workbook.SaveAs newFilePath
' エクセルを閉じる
workbook.Close
' エクセルアプリケーションを終了
excelApp.Quit
' オブジェクトの解放
Set worksheet = Nothing
Set workbook = Nothing
Next
excelApp.Visible = True
excelApp.DisplayAlerts = True ' メッセージを非表示にする
Set excelApp = Nothing
Set objFSO = Nothing
Msgbox "置換処理終了"
フォルダ内のファイルをリストにして確認するスクリプトです。
下記のスクリプトをXXX(任意のファイル名).vbsで保存します。
保存したファイルをクリックすると、入力画面が表示されるので、調べたいフォルダのパスを入力して、OKを押してください。
すると、vbsがあるフォルダの中に、Files.xlsxという名前でファイルリストが作成されます。
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWorkbook = objExcel.Workbooks.Add()
Set objWorksheet = objWorkbook.Sheets(1)
' ヘッダー行の設定
objWorksheet.Cells(1, 1).Value = "フォルダパス"
objWorksheet.Cells(1, 2).Value = "ファイルパス"
intRow = 2 ' データ行の開始位置
' ユーザーからの入力を受け取る
strInput = InputBox("ファイルパスを入力:", "入力")
strFolderPath = strInput ' フォルダのパスを指定
' フォルダ内のファイルとフォルダを処理
ProcessFolder strFolderPath
' 出力したデータを自動調整
objWorksheet.UsedRange.Columns.AutoFit
' エクセルファイルを保存
' 実行中のスクリプトファイルのフルパスを取得
strScriptPath = WScript.ScriptFullName
' スクリプトファイルのディレクトリパスを取得
strScriptFolder = objFS.GetParentFolderName(strScriptPath)
strOutputFilePath = strScriptFolder & "\Files.xlsx" ' 出力先のファイルパスを指定
objWorkbook.SaveAs strOutputFilePath
' オブジェクトの参照を解放
Set objWorksheet = Nothing
objWorkbook.Close
objExcel.Quit
Set objExcel = Nothing
Set objFS = Nothing
'================================================================
' フォルダ内のファイルとサブフォルダを再帰的に処理するサブルーチン
'----------------------------------------------------------------
Sub ProcessFolder(strFolderPath)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strFolderPath)
' フォルダ内のファイルを処理
For Each objFile In objFolder.Files
' ファイルパスを出力
objWorksheet.Cells(intRow, 2).Value = objFile.Path
intRow = intRow + 1
Next
' サブフォルダを再帰的に処理
For Each objSubFolder In objFolder.SubFolders
' フォルダパスを出力
objWorksheet.Cells(intRow, 1).Value = objSubFolder.Path
intRow = intRow + 1
' サブフォルダ内のファイルとサブフォルダを再帰的に処理
ProcessFolder objSubFolder.Path
Next
' オブジェクトの参照を解放
Set objSubFolder = Nothing
Set objFile = Nothing
Set objFolder = Nothing
Set objFSO = Nothing
End Sub
'==============================================================
大事な情報が書き込まれているファイルはパスワードを設定しますね。
しかし、何のパスワードを設定したか忘れてしまっては困ります。
今回は、
ドラッグ&ドロップで
1.パスワードを自動生成
2. パスワードを設定してエクセルを保存
3.設定したパスワードを別のエクセルファイルに書き込んで保存
というスクリプトを紹介します。
Set objFSO = CreateObject("Scripting.FileSystemObject")
'パスワード保存用のエクセルファイル
strOutputFilePath = "C:\Users\AKIKO\Desktop\簡単メール\パスワード.xlsx"
'パスワードの桁数
passKeta = 8
' ドラッグアンドドロップされたファイルパスを取得
For Each strFilePath In WScript.Arguments
' パスワードを自動生成する関数
' パスワードを自動生成
strPassword = GeneratePassword(passKeta) 'パスワードを生成
' エクセルファイルを開く
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open(strFilePath)
' パスワードを設定して保存
objWorkbook.Password = strPassword
objWorkbook.Save
' 別のエクセルにファイルパスとパスワードを保存
Set objOutputWorkbook = objExcel.Workbooks.Open(strOutputFilePath)
Set objOutputWorksheet = objOutputWorkbook.Worksheets(1)
' 一番最後の行を取得
intLastRow = objOutputWorksheet.Cells(objOutputWorksheet.Rows.Count, 1).End(-4162).Row + 1
' ファイルパスとパスワードを書き込む
objOutputWorksheet.Cells(intLastRow, 1).Value = strFilePath
objOutputWorksheet.Cells(intLastRow, 2).Value = strPassword
' ファイルを保存して閉じる
objOutputWorkbook.Save
objOutputWorkbook.Close
objWorkbook.Close
' オブジェクトの参照を解放
Set objOutputWorksheet = Nothing
Set objOutputWorkbook = Nothing
Set objWorkbook = Nothing
Set objExcel = Nothing
Next
Set objFSO = Nothing
Set objShell = Nothing
Function GeneratePassword(length)
Const validChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
Dim password, i
Randomize
password = ""
For i = 1 To length
password = password & Mid(validChars, Int((Len(validChars) * Rnd) + 1), 1)
Next
GeneratePassword = password
End Function
概要:
Findメソッドは、Excelのワークシートや範囲内で特定の値を検索するためのメソッドです。検索結果として、最初に一致したセルを返します。
構文:
objWorksheetは 検索を行うワークシートオブジェクトです。
rangeは 検索を行う範囲のアドレスを指定します。
objWorksheet.Range(range).Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)
引数:
返り値:
Findメソッドは、検索結果として最初に一致したセルを返します。一致するセルが見つからなかった場合はNothingを返します。
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("C:\Path\to\Workbook.xlsx")
Set objWorksheet = objWorkbook.Worksheets(1)
' A1からA10の範囲で値が"Apple"と一致するセルを検索します
Set objResult = objWorksheet.Range("A1:A10").Find("Apple")
If Not objResult Is Nothing Then
MsgBox "一致するセルが見つかりました: " & objResult
概要:
AutoFilterメソッドは、Excelのワークシートのデータに対して自動フィルタを適用するためのメソッドです。自動フィルタを使用すると、データの特定の列に基づいて絞り込みやソートを行うことができます。
構文:
objWorksheet.Range(range).AutoFilter field, criteria1, operator, criteria2, visibleDropDown
引数:
objWorksheet: 自動フィルタを適用するワークシートオブジェクトです。返り値: なし
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("C:\Path\to\Workbook.xlsx")
Set objWorksheet = objWorkbook.Worksheets(1)
' 範囲A1からD10までに自動フィルタを適用します
objWorksheet.Range("A1:D10").AutoFilter 1, "Apple"
' オブジェクトの参照を解放します
Set objWorksheet = Nothing
Set objWorkbook = Nothing
Set objExcel = Nothing
概要:
Deleteメソッドは、Excelのワークシートや範囲から行や列を削除するためのメソッドです。
構文:
objWorksheet.Rows(row).Delete objWorksheet.Columns(column).Delete objWorksheet.Range(range).Delete
引数:
返り値:
Deleteメソッドは、削除操作が成功した場合には特定の値を返しません。
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("C:\Path\to\Workbook.xlsx")
Set objWorksheet = objWorkbook.Worksheets(1)
' 行の削除
objWorksheet.Rows(2).Delete
' 列の削除
objWorksheet.Columns(2).Delete
' 範囲の削除
objWorksheet.Range("A1:B5").Delete
' オブジェクトの参照を解放します
Set objWorksheet = Nothing
Set objWorkbook = Nothing
Set objExcel = Nothing
概要:
Insertメソッドは、Excelのワークシートや範囲に行や列を挿入するためのメソッドです。挿入された行や列にはデフォルトの値が設定されます。
構文:
objWorksheet.Rows(row).Insert objWorksheet.Columns(column).Insert objWorksheet.Range(range).Insert
引数:
返り値:
Insertメソッドは、挿入操作が成功した場合には特定の値を返しません。
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("C:\Path\to\Workbook.xlsx")
Set objWorksheet = objWorkbook.Worksheets(1)
' 行の挿入
objWorksheet.Rows(2).Insert
' 列の挿入
objWorksheet.Columns(2).Insert
' 範囲の挿入
objWorksheet.Range("A1:B5").Insert
' オブジェクトの参照を解放します
Set objWorksheet = Nothing
Set objWorkbook = Nothing
Set objExcel = Nothing
概要:
Activateメソッドは、Excelのワークシートやウィンドウをアクティブにするためのメソッドです。アクティブになったワークシートやウィンドウは、ユーザーが直接操作できる状態になります。
構文:
objWorkbook.Activate objWorksheet.Activate
引数:
返り値: なし
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("C:\Path\to\Workbook.xlsx")
Set objWorksheet1 = objWorkbook.Worksheets(1)
Set objWorksheet2 = objWorkbook.Worksheets(2)
' ワークシート1をアクティブ化します
objWorksheet1.Activate
' ワークブックをアクティブ化します
objWorkbook.Activate
' ワークシート2をアクティブ化します
objWorksheet2.Activate
' オブジェクトの参照を解放します
Set objWorksheet1 = Nothing
Set objWorksheet2 = Nothing
Set objWorkbook = Nothing
Set objExcel = Nothing
概要:
Pasteメソッドは、Excelのセルや範囲にコピーされたデータを貼り付けるためのメソッドです。
構文:
objWorksheet.Cells(row, column).Paste objWorksheet.Range(cell1, cell2).Paste
引数:
返り値:なし
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("C:\Path\to\Workbook.xlsx")
Set objWorksheet = objWorkbook.Worksheets(1)
' セルの内容をコピーします
objWorksheet.Cells(1, 1).Copy
' セルB1に貼り付けます
objWorksheet.Cells(1, 2).Paste
' 範囲の内容をコピーします
objWorksheet.Range("A1:B5").Copy
' セルD1に貼り付けます
objWorksheet.Cells(1, 4).Paste
' オブジェクトの参照を解放します
Set objWorksheet = Nothing
Set objWorkbook = Nothing
Set objExcel = Nothing
概要:
Copyメソッドは、Excelのセルや範囲の内容をコピーするためのメソッドです。コピーされたデータは、クリップボードに保持されます。
構文:
objWorksheet.Cells(row, column).Copy objWorksheet.Range(cell1, cell2).Copy
引数:
返り値: なし
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("C:\Path\to\Workbook.xlsx")
Set objWorksheet = objWorkbook.Worksheets(1)
' セルの内容をコピーします
objWorksheet.Cells(1, 1).Copy
' 範囲の内容をコピーします
objWorksheet.Range("A1:B5").Copy
' コピーしたデータを別のセルに貼り付けます
objWorksheet.Cells(2, 1).PasteSpecial
' オブジェクトの参照を解放します
Set objWorksheet = Nothing
Set objWorkbook = Nothing
Set objExcel = Nothing
VBScriptのExcelのSelectメソッドは、セルや範囲を選択するために使用されます。
概要: セルや範囲を選択するためのメソッドです。
構文:
objWorksheet.Cells(row, column).Select objWorksheet.Range(cell1, cell2).Select引数:
返り値: なし
' Excelオブジェクトを作成します
Set objExcel = CreateObject("Excel.Application")
' 新しいワークブックを作成します
Set objWorkbook = objExcel.Workbooks.Add()
' 1番目のシートを取得します
Set objWorksheet = objWorkbook.Worksheets(1)
' セルに値を設定します
objWorksheet.Cells(1, 1).Value = "Hello"
objWorksheet.Cells(1, 2).Value = "World"
' セルを選択します
objWorksheet.Cells(1, 1).Select
' 範囲を選択します
objWorksheet.Range("A1:B5").Select
' 範囲を選択し、選択範囲を表示します
Set objRange = objWorksheet.Range("A1:B5")
objRange.Select
objExcel.Visible = True
' オブジェクトの参照を解放します
Set objRange = Nothing
Set objWorksheet = Nothing
Set objWorkbook = Nothing
Set objExcel = Nothing
VBScriptのExcelのCloseメソッドは、現在のワークブックを閉じるために使用されます。
関数名: Closeメソッド
概要: 現在のワークブックを閉じるためのメソッドです。
構文:
objWorkbook.Close([SaveChanges], [Filename], [RouteWorkbook])
引数:
返り値: なし
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("C:\Path\to\Workbook.xlsx")
' ワークブックを編集する操作...
' ワークブックを閉じます
objWorkbook.Close
' Excelを終了します
objExcel.Quit
' オブジェクトの参照を解放します
Set objWorkbook = Nothing
Set objExcel = Nothing
VBScriptのExcelのSaveAsメソッドは、ワークブックを指定した場所に指定した形式で保存するために使用されます。
関数名: エクセルのSaveAsメソッド
概要: ワークブックを指定した場所に指定した形式で保存するためのメソッドです。
構文:
objWorkbook.SaveAs(FilePath, [FileFormat])
返り値: なし
' Excelオブジェクトを作成します
Set objExcel = CreateObject("Excel.Application")
' 新しいワークブックを作成します
Set objWorkbook = objExcel.Workbooks.Add()
' シートを取得します(ここでは1番目のシートを指定)
Set objWorksheet = objWorkbook.Worksheets(1)
' セルに値を設定します
objWorksheet.Cells(1, 1).Value = "Hello"
objWorksheet.Cells(1, 2).Value = "World"
' ファイルを保存します
Dim savePath
savePath = "C:\Path\to\SaveFile.xlsx"
objWorkbook.SaveAs savePath, 51 ' 51はxlsx形式を表します
' ファイルを閉じます
objWorkbook.Close
' Excelを終了します
objExcel.Quit
' オブジェクトの参照を解放します
Set objWorksheet = Nothing
Set objWorkbook = Nothing
Set objExcel = Nothing
VBScriptのExcelのSaveメソッドは、現在のワークブックを保存するために使用されます。
Open
返り値: なし
使用例
' Excelオブジェクトを作成します
Set objExcel = CreateObject("Excel.Application")
' 新しいワークブックを作成します
Set objWorkbook = objExcel.Workbooks.Add()
' シートを取得します(ここでは1番目のシートを指定)
Set objWorksheet = objWorkbook.Worksheets(1)
' セルに値を設定します
objWorksheet.Cells(1, 1).Value = "Hello"
objWorksheet.Cells(1, 2).Value = "World"
' ファイルを保存します
Dim savePath
savePath = "C:\Path\to\SaveFile.xlsx"
objWorkbook.SaveAs savePath
' ファイルを閉じます
objWorkbook.Close
' Excelを終了します
objExcel.Quit
' オブジェクトの参照を解放します
Set objWorksheet = Nothing
Set objWorkbook = Nothing
Set objExcel = Nothing
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("C:\Path\to\Workbook.xlsx")
具体的な関数リファレンスページを作成する場合は、以下の情報を含めることができます。
関数名: Open
概要: 指定されたパスのExcelファイルを開く
構文:
Set objWorkbook = objExcel.Workbooks.Open
(FilePath, [UpdateLinks], [ReadOnly], [Format], [Password],
[WriteResPassword], [IgnoreReadOnlyRecommended])
引数:
返り値: 指定されたパスのExcelファイルが正常に開かれた場合、開かれたワークブックオブジェクトが返されます。
' Excelオブジェクトを作成します
Set objExcel = CreateObject("Excel.Application")
' エクセルファイルのパスを指定します
Dim filePath
filePath = "C:\Path\to\Workbook.xlsx"
' ファイルを読み取り専用モードで開きます
Dim readOnlyMode
readOnlyMode = True
' パスワードが設定されている場合はパスワードを指定します
Dim password
password = "password123"
' ファイルを開きます
Set objWorkbook = objExcel.Workbooks.Open(filePath, , readOnlyMode, , password)
' シートを取得します(ここでは1番目のシートを指定)
Set objWorksheet = objWorkbook.Worksheets(1)
' データを読み込むためにセル範囲を指定します
Dim rangeAddress
rangeAddress = "A1:B5"
Set objRange = objWorksheet.Range(rangeAddress)
' セル範囲の値を表示します
For Each cell In objRange
WScript.Echo cell.Value
Next
' ファイルを保存せずに閉じます
objWorkbook.Close False
' Excelを終了します
objExcel.Quit
' オブジェクトの参照を解放します
Set objRange = Nothing
Set objWorksheet = Nothing
Set objWorkbook = Nothing
Set objExcel = Nothing
いつも書き方をわすれてしまうので出力結果から特定の項目を取得する方法をメモしておく。
この出力結果から「従業員コード」の値をゲットしたい。
outputs('操作名')['body/value'][何行目]?['取得したい項目名'] と書けば取得できる。
outputs('表内に存在する行を一覧表示')['body/value'][0]['従業員コード'] と書けば取得できる。
outputs('表内に存在する行を一覧表示')['body']['value'][0]['従業員コード']のように/で分かれているところは別々のカッコに分けてもOK
これが出力結果全体の表示
従業員コードにたどり着くまでに、
body→value→従業員コード と入れ子になっています。
青枠のような [] が出てきたときは、同じ形式のデータがいくつか続くため、何番目の物を使うかの指定が必要。何番目かを0から指定する。(1からではない。)
今回の場合は、最初のデータなので0番目となるため、['value'][0] と指定します。
で、outputs(~)というのは、~という操作をした時の出力結果ということです。
なので、
outputs('表内に存在する行を一覧表示')['body']['value'][0]['従業員コード']
とかけば、OKです。
['従業員コード']の先がさらに入れ子になっているときも[]が出てきた場合は、番号で指定、[]がなければ、項目名を書いていくを繰り返していけばOKです。
先にかいた、データベース(エクセル)から値を取得して、ウェブに表示するという事を実現するためにはNode.jsをインストールする必要があるとわかったのでインストールしてみることにしました。
Node.jsのダウンロードのページに行き、安定している推奨版をダウンロードする。
最新版はバグがおおいからやめておいた方がよいです。
ダウンロードしたインストーラをクリック
インストール先を変えたければ変更して「Next」を押す。
初期値は「C:\Program Files\nodejs\」。
私は、Dドライブに変更しました。
インストール内容をカスタマイズしたいなら、変更して、「Next」を押す。
今回は変更しませんでした。
ネイティブモジュール作成のためのツールをインストールする場合はチェックを入れて「Next」を押す。
今回はチェックを入れませんでした。
インストールが完了の画面がでるので、「Finish」を押して終わります。
以上で完了です。
Javascriptでデータベース(エクセル)のデータを読み込み、ブラウザに表で表示しようと試みました。
やり方がわからないのですが、ADOを使えないのかなと思って調べると、色々な方が方法を紹介していたので、試していました。
接続して、その内容をFireFoxのブラウザで表示してみようと試したところ、
「ActiveXObject is not defined」
とエラーが表示されました。
htmlファイルに記述した内容は以下の通りです。
document.addEventListener('DOMContentLoaded', () => {
//データベースにアクセスする
function dbConnect(){
var gConnection = new ActiveXObject("ADODB.Connection");
gConnection .Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\tbl.xlsx;Extended Properties=Excel 8.0;HDR=Yes;IMEX=1");
alert("データベースに接続しました。");
}
dbConnect();
/* 以下、略*/ググってみたところ、ActiveXObjectはIEでしか使えないとの事。
それじゃぁ、Edgeでいけるかな?と試したところ同じエラーが表示されました。
ふたたびググった結果、
ActiveXObjectはEdgeでは使えないとのこと。
そうだったのか…。
この方法は無理なのね。
他の方法をさがしてみようっと。
PowerAutomateで受信したメールのメッセージIDを保存しておき、あとでそのメッセージIDのメールに対して返信するという事をやろうとしたら、うまくいきませんでした。
同じメールなのに、メッセージIDが変わってしまいました。
原因はフォルダの移動。フォルダを移動すると、メッセージIDが変わってしまいます。
提出1.xlsxの添付があるメールが「hokoku」にあるときと「sumi」フォルダにあるときはメッセージIDが違っていました。
なので、
①「hokoku」フォルダにある時にメッセージIDを取得し、
②メールを「sumi」フォルダに移し
③ ①のメッセージIDを使って返信すると
エラーになってしまいます。
①のときと②の時のメッセージIDが違うのです。フォルダを移すと、ちがうIDになるなんて不便ですね…。
エクセルファイル(複数)をvbsアイコンにドラッグアンドドロップするとパスワードを設定してファイルを上書き保存する。
・複数のエクセルに設定されるパスワードは同一
・スクリプトを保存するときは、日本語対応の文字コードにする。
' Password Set Program.
Option Explicit
On Error Resume Next
'パスワード
Dim Password
Password = "110" ' 設定したいパスワードの値
'ドラッグアンドドロップで取得したファイルパスを変数に入れる
Dim GetPathArray
Set GetPathArray = WScript.Arguments
Dim NullStr
NullStr = "" ' Null文字列 をセット。
Dim Obj_Excel
Set Obj_Excel = WScript.CreateObject("Excel.Application")
Dim Book_1
'イテレータ
Dim pt
Obj_Excel.Application.DisplayAlerts = False '警告メッセージ等を非表示に設定
Obj_Excel.Visible = False 'エクセルは非表示にする
'ファイルの数分ループする
For Each pt in GetPathArray
'--------------------------------------------------------------
Set Book_1 = Obj_Excel.WorkBooks.Open(pt,,,,NullStr) ' 空の文字列でオープンする。
Book_1.SaveAs pt,,Password ' 書き込み時パスワードを指定して保存する。
Book_1.Close
'--------------------------------------------------------------
Next
Obj_Excel.Visible = True
Obj_Excel.Quit
MsgBox "パスワード設定が完了しました。"
最近気が付いたのですが、ブラウザでpdfのリンクをクリックするとファイルが開かれず、ダウンロードフォルダに保存されてしまうようになっていました。
いちいち、ダウンロードフォルダに移動してファイルを開くのが面倒。また、過去にダウンロードしたファイルが保存されているため、どれが今見たいファイルかわからない…。
クリックしたら、pdf開いてほしい…。
しばらく無視していたけど面倒なので設定を見直すことにしました。
以下、設定方法を紹介します。

最近、pdfよく見るから設定しなおしてよかったー。楽になったよ。
関係ないけど、pdfってportable Document Formatの略なんだね。初めて知りました。