2023年6月13日火曜日

【VBScript】日付、時間を形式を変えて表示

event_note6月 13, 2023

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

2023年6月12日月曜日

【VBScript】過去、未来、今日の日付の取得方法 (昨日、明日、1年前、1年後等)

event_note6月 12, 2023

概要

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

補足

いずれも、DateAddで計算します。
 
第一引数は、期間の単位を指定します。
第二引数で、前の日付ならマイナスとします。
第三引数は基準となる日付を設定します。今回の場合は今日の日を基準としていますが、特定の日付からの前後の日を出すことも可能です。

【VBScript】指定したフォルダ内のファイル情報をCSVに一覧で出力して保存する。

event_note6月 12, 2023

概要

指定したフォルダ内の以下の情報を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

補足

 もうちょっと補足しますと、
・フォルダ選択のダイアログのデフォルトはデスクトップにしてあります。
・選択したフォルダ内のファイルの情報をCSVに出力しています。
・出力したCSVファイル名の後ろに、日時を付け加えています。
・ファイルは指定したフォルダ内直下のもののみです。再帰的に深掘りはしていません。
 

【VBScript】エクセル内の文字列を置換して、別名ファイル(プレフィックスつけて)で保存

event_note6月 12, 2023
エクセル無いの文字列を置換した後、ファイルを別名で保存します。 保存名は元のファイルの前に指定の文字列を加えられるようになっています。 検索する文字列と、置換後の文字列、ファイル名の前に付ける文字列は 入力ウィンドウで指定します。

 

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 "置換処理終了"

【VBScript】指定したフォルダのファイル・フォルダを再帰的にエクセルファイルに出力

event_note6月 12, 2023

フォルダ内のファイルをリストにして確認するスクリプトです。

下記のスクリプトを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
'==============================================================

2023年6月11日日曜日

【VBScript】エクセルファイルに自動生成したパスワードを設定し、別エクセルで管理

event_note6月 11, 2023

大事な情報が書き込まれているファイルはパスワードを設定しますね。

しかし、何のパスワードを設定したか忘れてしまっては困ります。

今回は、

ドラッグ&ドロップで

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


【VBScript】エクセルFindメソッドで特定の文字列を含むセルを探す

event_note6月 11, 2023

Findメソッド

概要:

Findメソッドは、Excelのワークシートや範囲内で特定の値を検索するためのメソッドです。検索結果として、最初に一致したセルを返します。

構文:

objWorksheetは 検索を行うワークシートオブジェクトです。
rangeは 検索を行う範囲のアドレスを指定します。

objWorksheet.Range(range).Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)

引数:

  • 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

【VBScript】エクセルでオートフィルタを設定し行を絞り込む

event_note6月 11, 2023

 

AutoFilterメソッド

概要:

AutoFilterメソッドは、Excelのワークシートのデータに対して自動フィルタを適用するためのメソッドです。自動フィルタを使用すると、データの特定の列に基づいて絞り込みやソートを行うことができます。

構文:

objWorksheet.Range(range).AutoFilter 
  field, criteria1, operator, criteria2, visibleDropDown

引数:

objWorksheet: 自動フィルタを適用するワークシートオブジェクトです。
range: フィルタを適用する範囲のアドレスを指定します。
  • field: フィルタを適用する列のインデックスまたは列のヘッダーの名前を指定します。
  • criteria1: フィルタの条件を指定します。
  • operator (オプション): criteria1とcriteria2の間の演算子を指定します。省略可能で、デフォルト値はxlAndです。
  • criteria2 (オプション): フィルタの2番目の条件を指定します。operatorが指定されている場合に使用します。
  • visibleDropDown (オプション): 自動フィルタのドロップダウン矢印の表示/非表示を指定します。省略可能で、デフォルト値はTrueです。

返り値: なし

使用例

 
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

【VBScript】エクセルDeleteメソッドでシート内の行・列・範囲を削除する

event_note6月 11, 2023

Deleteメソッド

概要:

Deleteメソッドは、Excelのワークシートや範囲から行や列を削除するためのメソッドです。

構文:

objWorksheet.Rows(row).Delete
objWorksheet.Columns(column).Delete
objWorksheet.Range(range).Delete

引数:

  • objWorksheet: 行や列を削除するワークシートオブジェクトです。
  • row: 削除する行の番号を指定します。
  • column: 削除する列の番号を指定します。
  • range: 削除する範囲のアドレスを指定します。

返り値:

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

【VBScript】エクセルInsertメソッドで行・列・範囲を挿入する方法

event_note6月 11, 2023

 

Insertメソッド

概要:

Insertメソッドは、Excelのワークシートや範囲に行や列を挿入するためのメソッドです。挿入された行や列にはデフォルトの値が設定されます。

構文:

objWorksheet.Rows(row).Insert
objWorksheet.Columns(column).Insert
objWorksheet.Range(range).Insert

引数:

  • objWorksheet: 行や列を挿入するワークシートオブジェクトです。
  • row: 挿入する行の番号を指定します。
  • column: 挿入する列の番号を指定します。
  • range: 挿入する範囲のアドレスを指定します。

返り値:

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

【VBScript】エクセルActiveメソッドで操作したいシートやブックを切り替える

event_note6月 11, 2023

 

Activateメソッド

概要:

Activateメソッドは、Excelのワークシートやウィンドウをアクティブにするためのメソッドです。アクティブになったワークシートやウィンドウは、ユーザーが直接操作できる状態になります。

構文:

objWorkbook.Activate
objWorksheet.Activate

引数:

  • objWorkbook: アクティブにするワークブックオブジェクトです。
  • objWorksheet: アクティブにするワークシートオブジェクトです。

返り値: なし

使用例

 

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

【VBScript】Pasteメソッドでコピーした内容を貼り付ける

event_note6月 11, 2023

Pasteメソッド

概要:

Pasteメソッドは、Excelのセルや範囲にコピーされたデータを貼り付けるためのメソッドです。

構文:

objWorksheet.Cells(row, column).Paste
objWorksheet.Range(cell1, cell2).Paste

引数:

  • objWorksheet: 貼り付け操作を行うワークシートオブジェクトです。
  • row: 貼り付け先のセルの行番号を指定します。
  • column: 貼り付け先のセルの列番号を指定します。
  • cell1: 貼り付け先の範囲の開始セルのアドレスを指定します。
  • cell2: 貼り付け先の範囲の終了セルのアドレスを指定します。

返り値:なし

使用例

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

【VBScript】Copyメソッドでセルや範囲をコピーする

event_note6月 11, 2023

 

Copyメソッド

概要:

Copyメソッドは、Excelのセルや範囲の内容をコピーするためのメソッドです。コピーされたデータは、クリップボードに保持されます。

構文:

objWorksheet.Cells(row, column).Copy
objWorksheet.Range(cell1, cell2).Copy

引数:

  • objWorksheet: コピー操作を行うワークシートオブジェクトです。
  • row: コピーするセルの行番号を指定します。
  • column: コピーするセルの列番号を指定します。
  • cell1: コピーする範囲の開始セルのアドレスを指定します。
  • cell2: コピーする範囲の終了セルのアドレスを指定します。

返り値: なし

使用例

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】Selectメソッドでセルの範囲を選択する方法

event_note6月 11, 2023

 VBScriptのExcelのSelectメソッドは、セルや範囲を選択するために使用されます。

Selectメソッド

概要: セルや範囲を選択するためのメソッドです。

構文:

objWorksheet.Cells(row, column).Select
objWorksheet.Range(cell1, cell2).Select

引数:
  • objWorksheet: 選択操作を行うワークシートオブジェクトです。
  • row: セルの行番号を指定します。
  • column: セルの列番号を指定します。
  • cell1: 開始セルのアドレスを指定します。
  • cell2: 終了セルのアドレスを指定します。

返り値: なし

使用例

この使用例では、ExcelのSelectメソッドを使用してセルや範囲を選択しています。セルを選択する場合は、Cellsメソッドを使用し、行番号と列番号を指定します。範囲を選択する場合は、Rangeメソッドを使用し、開始セルと終了セルのアドレスを指定します。
' 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】Closeメソッドでエクセルブックを閉じる方法

event_note6月 11, 2023

 VBScriptのExcelのCloseメソッドは、現在のワークブックを閉じるために使用されます。

Close

関数名: Closeメソッド

概要: 現在のワークブックを閉じるためのメソッドです。

構文:

objWorkbook.Close([SaveChanges], [Filename], [RouteWorkbook])

引数:

  1. SaveChanges (省略可能): ワークブックの変更内容を保存するかどうかを指定します。省略すると、ユーザーに保存の確認が求められます。
  2. Filename (省略可能): ファイル名を指定します。省略すると、現在のファイル名が使用されます。
  3. 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】SaveAsでエクセルに別の名前を付けて保存

event_note6月 11, 2023

 VBScriptのExcelのSaveAsメソッドは、ワークブックを指定した場所に指定した形式で保存するために使用されます。

SaveAs

関数名: エクセルのSaveAsメソッド

概要: ワークブックを指定した場所に指定した形式で保存するためのメソッドです。

構文:

objWorkbook.SaveAs(FilePath, [FileFormat])

  1. FilePath (必須): 保存先のファイルのパスを指定します。
  2. FileFormat (省略可能): 保存するファイル形式を指定します。具体的な値については、Excelの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】Saveを使ってエクセルファイルを保存する方法

event_note6月 11, 2023

 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

【VBScript】Open関数でExcelファイルを開く方法

event_note6月 11, 2023
VBScriptにおけるエクセルのOpen関数は、Excelファイルを開くために使用されます。以下にVBScriptでのエクセルのOpen関数の基本的な使用例を示します。
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("C:\Path\to\Workbook.xlsx")

具体的な関数リファレンスページを作成する場合は、以下の情報を含めることができます。

Open関数

関数名: Open

概要: 指定されたパスのExcelファイルを開く

構文:

Set objWorkbook = objExcel.Workbooks.Open
(FilePath, [UpdateLinks], [ReadOnly], [Format], [Password],
[WriteResPassword], [IgnoreReadOnlyRecommended])

引数:

  • FilePath: 開くExcelファイルのパスを指定します。
  • UpdateLinks (省略可): リンクされているデータを更新するかどうかを指定します。
  • ReadOnly (省略可): 読み取り専用モードでファイルを開くかどうかを指定しま
  • Format (省略可能):開くファイルのフォーマットを指定します。
  • Password (省略可能):Excelファイルを開くためのパスワードを指定します。
  • IgnoreReadOnlyRecommended (省略可能):ファイルが「読み取り専用を推奨」としてマークされていても、それを無視するかどうかを指定するブール値です。Trueを指定すると、読み取り専用を推奨としてマークされているファイルも編集可能になります。Falseを指定すると、読み取り専用を推奨としてマークされたファイルは読み取り専用モードで開かれます。

 

返り値: 指定されたパスの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


2023年5月20日土曜日

【PowerAutomate】outputs(出力結果)から欲しい値を取得する書き方

event_note5月 20, 2023

 いつも書き方をわすれてしまうので出力結果から特定の項目を取得する方法をメモしておく。

 

やりたいこと 

この出力結果から「従業員コード」の値をゲットしたい。


方法

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です。


 

2023年5月14日日曜日

WindowsでNode.jsをインストールする方法

event_note5月 14, 2023

先にかいた、データベース(エクセル)から値を取得して、ウェブに表示するという事を実現するためにはNode.jsをインストールする必要があるとわかったのでインストールしてみることにしました。

 

インストール方法

Node.jsのダウンロードのページに行き、安定している推奨版をダウンロードする。
最新版はバグがおおいからやめておいた方がよいです。

ダウンロードしたインストーラをクリック

「I accept~」の左のチェックを入れて次へ「Next」をクリック

インストール先を変えたければ変更して「Next」を押す。

初期値は「C:\Program Files\nodejs\」。
私は、Dドライブに変更しました。


インストール内容をカスタマイズしたいなら、変更して、「Next」を押す。

今回は変更しませんでした。

ネイティブモジュール作成のためのツールをインストールする場合はチェックを入れて「Next」を押す。

今回はチェックを入れませんでした。

「Install」をクリック。

インストールが完了の画面がでるので、「Finish」を押して終わります。

以上で完了です。


 

2023年5月13日土曜日

JavascriptでActiveXObjectを使ったADO接続(それ以外も)が使えない

event_note5月 13, 2023

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では使えないとのこと。

そうだったのか…。

この方法は無理なのね。

他の方法をさがしてみようっと。


2023年5月6日土曜日

【PowerAutomate】OutlookメールのメッセージIDは一意だが変わる

event_note5月 06, 2023

 PowerAutomateで受信したメールのメッセージIDを保存しておき、あとでそのメッセージIDのメールに対して返信するという事をやろうとしたら、うまくいきませんでした。

 同じメールなのに、メッセージIDが変わってしまいました。

原因はフォルダの移動。フォルダを移動すると、メッセージIDが変わってしまいます

 提出1.xlsxの添付があるメールが「hokoku」にあるときと「sumi」フォルダにあるときはメッセージIDが違っていました。

なので、

①「hokoku」フォルダにある時にメッセージIDを取得し、

②メールを「sumi」フォルダに移し

③ ①のメッセージIDを使って返信すると

エラーになってしまいます。 

①のときと②の時のメッセージIDが違うのです。フォルダを移すと、ちがうIDになるなんて不便ですね…。

 



2023年5月4日木曜日

VBScript エクセルファイルにパスワードを設定して上書き保存

event_note5月 04, 2023

やりたいこと

エクセルファイル(複数)を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 "パスワード設定が完了しました。"

2023年1月7日土曜日

【FireFox】pdfをダウンロードせずに開きたい!設定方法を紹介

event_note1月 07, 2023

最近気が付いたのですが、ブラウザでpdfのリンクをクリックするとファイルが開かれず、ダウンロードフォルダに保存されてしまうようになっていました。

 いちいち、ダウンロードフォルダに移動してファイルを開くのが面倒。また、過去にダウンロードしたファイルが保存されているため、どれが今見たいファイルかわからない…。

クリックしたら、pdf開いてほしい…。

 しばらく無視していたけど面倒なので設定を見直すことにしました。

 以下、設定方法を紹介します。

設定方法 

ブラウザの右上から設定画面を開く

Pdfをクリックした場合の動作を「Firefoxで開く」に変更する


以上です。

最近、pdfよく見るから設定しなおしてよかったー。楽になったよ。 

関係ないけど、pdfってportable Document Formatの略なんだね。初めて知りました。