特定のブックを開く(既に開いていたらActivateする)
Dim WB As Workbook
Dim fl As Boolean
fl = False
For Each WB In Workbooks
If WB.Name = "ブック名" Then fl = True
Next WB
If fl Then
Workbooks("ブック名").Activate
Else
Workbooks.Open ("ディレクトリ+ブック名")
End If
Next
フォルダ内にある全ファイル名取得
VBSでファイルを取得してMsgを表示する
Dim objFileSys
Dim objFolder
Dim objFile
Set objFileSys = CreateObject("Scripting.FileSystemObject")
'フォルダオブジェクトを取得
Set objFolder = objFileSys.GetFolder("ディレクトリ名")
'FolderオブジェクトのFilesプロパティからFileオブジェクトを取得
For Each objFile In objFolder.Files
'取得したファイルのファイル名を表示
WScript.Echo objFile.Name
Next
Set objFolder = Nothing
Set objFileSys = Nothing
↓こちらはtxtに出力する
Dim objFileSys
Dim objFolder
Dim objFile
Dim objOutputTextStream
Set objFileSys = CreateObject("Scripting.FileSystemObject")
Set objOutputTextStream = objFileSys.OpenTextFile("log.txt", 2, True)
'フォルダオブジェクトを取得
Set objFolder = objFileSys.GetFolder("ディレクトリ名")
'FolderオブジェクトのFilesプロパティからFileオブジェクトを取得
For Each objFile In objFolder.Files
'ファイル名を取得し、ログファイルに出力
objOutputTextStream.WriteLine objFile.Name
Next
'TextStream は Close を忘れずに
objOutputTextStream.Close
Set objOutputTextStream = Nothing
Set objFolder = Nothing
Set objFileSys = Nothing
ログファイル作成 & 追記
VBSでログファイルを作成する
Dim objFSO,objLog
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objLog = objFSO.OpenTextFile("ファイル名",8,True)
objLog.WriteLine("任意の文字列")
objLog.Close
Set objLog = Nothing
Set objFSO = Nothing
同ディレクトリに一致するファイルがなければ作成される
OpenTextFile の2つ目の引数 = 1:読み取り 2:上書き 8:追加
【RegExp】文字列比較
アクティブプリンター名を表示させる
VBAでアクティブのプリンター名(とポート名)を取得する。
Sub ShowCurrentPrinterName()
MsgBox "現在使用しているプリンターは、" & _
Application.ActivePrinter _
& " です。", Title:="現在使用しているプリンターの表示"
End Sub
【メール自動作成&送信】CDO.Messageによるメール送信
VBScriptでメールを送信する。
Set objMail = CreateObject("CDO.Message") objMail.From = "username@gmail.com" objMail.To = "username@gmail.com" objMail.Subject = "SMTP認証、SSL通信によるメール送信テスト" objMail.TextBody = "CDO.Messageを利用したSMTP認証、SSL通信によるメール送信テスト" strConfigurationField ="http://schemas.microsoft.com/cdo/configuration/" With objMail.Configuration.Fields .Item(strConfigurationField & "sendusing") = 2 .Item(strConfigurationField & "smtpserver") = "smtp.googlemail.com" .Item(strConfigurationField & "smtpserverport") = 465 .Item(strConfigurationField & "smtpusessl") = True .Item(strConfigurationField & "smtpauthenticate") = 1 .Item(strConfigurationField & "sendusername") = "username@gmail.com" .Item(strConfigurationField & "sendpassword") = "password" .Item(strConfigurationField & "smtpconnectiontimeout") = 60 .Update end With objMail.Send Set objMail = Nothing
[送信方法] sendusing = 固定で2を入れる。この数字は、ネットワーク上のSMTPを利用するという意味で、SMTPサーバーとSMTPポートの値を参照するようになる。
[SMTPサーバー] smtpserver = サーバーを指定
[SMTPポート] smtpserverport = ポートを指定
[SSL通信をする/しない] smtpusessl = True/Flase
[SMTP認証] smtpauthenticate = 1(Basic認証)/2(NTLM認証) 1でおk?
[送信ユーザー名] sendusername = ユーザー名
[送信パスワード] sendpassword = パスワード
[タイムアウト] smtpconnectiontimeout = 接続がタイムアウトするまでの秒数
その他コード
[CC] <CDO.Message object>.CC メールアドレス
[BCC] <CDO.Message object>.Bcc メールアドレス
[ファイル添付] <CDO.Message object>.AddAttachment ファイルのフルパス
[HTMLメール] <CDO.Message object>.HTMLBody HTML文章
[charset] <CDO.Message object>.BodyPart.Charset iso-2022-jp,shift-jis,utf-8 など
アドレスを複数設定する = "(アドレス1);(アドレス2)"と記述
アドレスに表示名を付けたい = "(表示名) <(アドレス)>"
*関連*