URLDownloadToFile:URL指定でファイルをダウンロードする
Private Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _
(ByVal pCaller As Long, _
ByVal szURL As String, _
ByVal szFileName As String, _
ByVal dwReserved As Long, _
ByVal lpfnCB As Long) As Long
引数 | 説明 |
---|---|
pCaller | 気にせず常に『0』でいい |
szURL | ダウンロードしたいファイルのURL |
szFileName | ダウンロードしたファイルを保存するパス |
dwReserved | 気にせず常に『0』でいい |
lpfnCB | 気にせず常に『0』でいい |
サンプルソース
Private Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _
(ByVal pCaller As Long, _
ByVal szURL As String, _
ByVal szFileName As String, _
ByVal dwReserved As Long, _
ByVal lpfnCB As Long) As Long
Sub Sample()
Dim strURL As String, strFile As String
strURL = "https://i0.wp.com/javeo.jp/wp-content/uploads/2022/02/20210824_060805-scaled-e1645711904613-218x300.jpg"
strFile = "C:\ネコ.jpg"
Call URLDownloadToFile(0, strURL, strFile, 0, 0)
End Sub
※テストページにある我が家のにゃんこの若かりし頃の画像が手に入ります
GetPrivateProfileString:iniファイルを読み込む
Public Declare PtrSafe Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long, _
ByVal lpFileName As String) As Long
引数 | 説明 |
---|---|
lpApplicationName | セクション名 |
lpKeyName | キー名 |
lpDefault | キーが存在しない場合の初期値 |
lpReturnedString | 取得してきた値が格納される |
nSize | lpReturnedStringのバイト数 |
lpFileName | 対象iniファイルパス |
サンプルソース
Public Declare PtrSafe Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long, _
ByVal lpFileName As String) As Long
Sub Sample()
Dim RC As Long
Dim RS As String
RC = GetPrivateProfileString("ChromeDriver", "ChromeVersion", "1.0.0.0", RS, 255, "config.ini")
Debug.Print RS '---98.0.4758.102
End Sub
↓↓↓が”config.ini”の中身の場合
[ChromeDriver]
ChromeVersion=98.0.4758.102
ChromePath=C:\Program Files (x86)\Google\Chrome\Application
WritePrivateProfileString:iniファイルに書き込む
Public Declare PtrSafe Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, _
ByVal lpString As Any, _
ByVal lpFileName As String) As Long
引数 | 説明 |
---|---|
lpApplicationName | セクション名 |
lpKeyName | キー名 |
lpString | 値 |
lpFileName | 対象iniファイルパス |
サンプルソース
Public Declare PtrSafe Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, _
ByVal lpString As Any, _
ByVal lpFileName As String) As Long
Sub Sample()
RC = WritePrivateProfileString("ChromeDriver", "ChromeVersion", "99.9.9999.999", "C:\Program Files\SeleniumBasic\config.ini")
End Sub
中身が↓↓↓のconfig.iniができる
[ChromeDriver]
ChromeVersion=99.9.9999.999
ChromePath=C:\Program Files (x86)\Google\Chrome\Application
Sleep:待機する
Public Declare PtrSafe Function Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
引数 | 説明 |
---|---|
dwMilliseconds | 待機時間(ミリ秒) |
サンプルソース
Public Declare PtrSafe Function Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub Sample()
Call Sleep(100)
End Sub
ミリ秒じゃなくで秒単位でのスリープ&多少ソースが長くても良いなら↓↓↓でも十分
Sub Sample()
Call Application.Wait(Now + TimeSerial(0, 0, 1))
End Sub
SHCreateDirectory:多階層フォルダを作成作成する
Declare PtrSafe Function SHCreateDirectoryEx Lib "shell32" Alias "SHCreateDirectoryExA" _
(ByVal hwnd As LongPtr, _
ByVal pszPath As String, _
ByVal psa As LongPtr) As Long
hwnd | 親ウィンドウのハンドル。 深く考えず「0&」を設定していればOK |
pszPath | 作成したいフォルダのフルパスを書く |
psa | ディレクトリのセキュリティ属性を持つSECURITY_ATTRIBUTES構造へのポインタ。 ここも深く考えず「0&」を設定していればOK |
リターン コード | 説明 |
---|---|
0 | 成功 |
183 | 既にフォルダが存在している |
その他 | フォルダに使えない文字(\ / : * ? ” < > | )が含まれている時などいくつかリターンコードが準備されているが↑2つだけ抑えておけばOK |
サンプルソース
Declare PtrSafe Function SHCreateDirectoryEx Lib "shell32" Alias "SHCreateDirectoryExA" _
(ByVal hwnd As LongPtr, _
ByVal pszPath As String, _
ByVal psa As LongPtr) As Long
Sub Sample()
RC = SHCreateDirectoryEx(0&, "C:\test\hoge\piyo", 0&)
End Sub
フォルダを作るだけなら”mkdir”や”FileSystemObjectのCreateFolder”でもフォルダは作れるけど直下フォルダしか作成できず再帰処理とか必要になるので”SHCreateDirectoryEx”が楽