'API関数宣言
'-----------------------------------------------------------------------------------------------
'機能 : 特殊フォルダのパスを取得
'----------------------------------------------------------------------------------------------- PublicDeclare Function SHGetSpecialFolderPath Lib "SHELL32" Alias
"SHGetSpecialFolderPathA" (ByVal hwndOwner As Long, _ ByVal strBuffer As String, _ ByVal lngSPFolder As Long, _ ByVal fCreate As Long) As Long
マイドキュメントのパス取得関数
'----------------------------------------------------------
'機能 : マイドキュメントのパス取得
'引数 : lnghWnd - ウィンドウズハンドル
'戻り値: SpecialFolder - マイドキュメントのフルパス
'---------------------------------------------------------- PublicFunction SpecialFolder(lnghWnd As Long) As String
Dim lngRet As Long Dim lngSPFolder As Long Dim strBuffer As String
PublicFunction GetCommandLine(Optional lngMaxArgs As Long) As Variant
Dim strChr As String Dim strCmdLine As String Dim lngCmdLineLen As Long Dim blnWQuoat As Boolean Dim blnInArg As Boolean Dim intIndex As Integer Dim lngNumArgs As Long
''lngMaxArgs が提供されている調べる If IsMissing(lngMaxArgs) Then
lngMaxArgs = 10 End If
'' 現在サイズの配列作成
ReDim strArgArray(lngMaxArgs) As String
For intIndex = 1 To LngCmdLineLen
strChr = Mid(strCmdLine,intIndex,1) If strChr = """" Then
blnWQuoat = Not blnWQuoat Else ''ダブルクォーテーション間は無条件、それ以外はスペースまたはタブまで読込 If (blnWQuoat) Or ((Not blnWQuoat) And strChr <> " " And strChr <> vbTab) Then IfNot bInArg Then If lngNumArgs = lngMaxArgs Then ExitFor
bInArg = True End If ''現在の引数に文字を追加
strArgArray(lngNumArgs) = strArgArray(lngNumArgs) & strChr Else
lngNumArgs = lngNumArgs + 1
bInArg = False End If End If Next intIndex
'----------------------------------------------------------------------------------
'機能 テキストファイルの内容を1行毎に読み込む
'引数 strFile テキストファイルフルパス名
'戻り値 読み込んだテキストファイル
'---------------------------------------------------------------------------------- PublicFunction GetText(strFile as String) As String
Dim intFileNo As Integer Dim strtxtLine As String Dim strData As String
''ファイル番号を取得
intFileNo = FreeFile
''テキストファイルをオープン
Open strFile For Input As #intFileNo
''ファイルの終端までループを繰り返す DoWhileNot EOF(intFileNo)
''1行づつ変数に読み込む
Line Input #intFileNo, strTextLine
''1つの変数に結合
strTxtDat = strTxtDat & strTextLine
Loop
''ファイルを閉じる
Close #intFileNo
''結合した変数を戻す
GetText = strTxtD
EndFunction
アプリケーションを起動し終了するまで待つ
API、定数宣言
'------------------------------------------------------------------
'機能 :プロセスを起動する
'関数 :CreateProcess
'引数 :lpApplicationName 実行するモジュール名
' :lpCommandLine コマンドライン
' :lpProcessAttributes 子プロセスへの継承を許可するか
' :lpThreadAttributes 子プロセスへの継承を許可するか
' :bInheritHandles 呼び出し側プロセスのハンドルを継承させるか
' :dwCreationFlags 制御フラグと優先順位クラス
' :lpEnvironment 環境ブロックへのポインタ
' :lpCurrentDriectory カレントディレクトリ
' :lpStartupInfo メインウィンドウの表示状態
' :lpProcessInformation 新しいプロセスに関する情報
'戻り値:エラーコード
'------------------------------------------------------------------ PublicDeclare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" ( _ ByVal lpApplicationName As String, _ ByVal lpCommandLine As String, _
lpProcessAttributes As SECURITY_ATTRIBUTES, _
lpThreadAttributes As SECURITY_ATTRIBUTES, _ ByVal bInheritHandles As Long, _ ByVal dwCreationFlags As Long, _
lpEnvironment As Any, _ ByVal lpCurrentDriectory As String, _
lpStartupInfo As STARTUPINFO, _
lpProcessInformation As PROCESS_INFORMATION _
) As Long
'新プロセスに関する識別情報 Public Type PROCESS_INFORMATION
hProcess As Long
hThread As Long
dwProcessId As Long
dwThreadID As Long End Type
'セキュリティ属性に関する情報 Public Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long End Type
'新しいプロセスのメインウィンドウの表示状態を定義する構造体 Public Type STARTUPINFO
cb As Long
lpReserved As Long
lpDesktop As Long
lpTitle As Long
dwX As Long
dwY As Long
dwXSize As Long
dwYSize As Long
dwXCountChars As Long
dwYCountChars As Long
dwFillAttribute As Long
dwFlags As Long
wShowWindow As Integer
cbReserved2 As Integer
lpReserved2 As Long
hStdInput As Long
hStdOutput As Long
hStdError As Long End Type
'------------------------------------------------------------------
'機能 :現在ユーザーが作業しているウィンドウを取得
'関数 :GetForegroundWindow
'戻り値:エラーコード
'------------------------------------------------------------------ PublicDeclare Function GetForegroundWindow Lib "user32.dll" () As Long
'------------------------------------------------------------------
'機能 :ウインドウを前面にする
'関数 :SetForegroundWindow
'戻り値:エラーコード
'------------------------------------------------------------------ PublicDeclare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
'------------------------------------------------------------------
'機能 :スレッドのIDを取得
'関数 :GetWindowThreadProcessId
'戻り値:エラーコード
'------------------------------------------------------------------ PublicDeclare Function GetWindowThreadProcessId Lib "user32" ( _ ByVal hwnd As Long, _
lpdwProcessId As Long _
) As Long
'------------------------------------------------------------------
'機能 :現在の入力状態を目的のスレッドにアタッチ
'関数 :AttachThreadInput
'戻り値:エラーコード
'------------------------------------------------------------------ PublicDeclare Function AttachThreadInput Lib "user32" ( _ ByVal idAttach As Long, _ ByVal idAttachTo As Long, _ ByVal fAttach As Long _
) As Long
'------------------------------------------------------------------
'機能 :現在の設定を取得
'関数 :SystemParametersInfo
'戻り値:エラーコード
'------------------------------------------------------------------ PublicDeclare Function SystemParametersInfo Lib "user32.dll" Alias "SystemParametersInfoA" ( _ ByVal uiAction As Long, _ ByVal uiParam As Long, _
pvParam As Any, _ ByVal fWinIni As Long _
) As Long
Public Const SPI_GETFOREGROUNDLOCKTIMEOUT = 2000
Public Const SPI_SETFOREGROUNDLOCKTIMEOUT = 2001
'------------------------------------------------------------------
'機能 :オープンされているオブジェクトハンドルをクローズ
'関数 :CloseHandle
'戻り値:エラーコード
'------------------------------------------------------------------ PublicDeclare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
アプリケーションを起動し終了するまで待つ関数
'----------------------------------------------------------------------------------
'機能 アプリケーションを起動し、終了するまで待つ
'引数 strAppPath 起動する実行ファイルフルパス
' strArgument 実行ファイルに渡す引数
' frmParent 親フォーム
'戻り値 TRUE 正常、FALSE 異常
'---------------------------------------------------------------------------------- PublicFunction Start_Shell(ByVal strAppPath As String, _ ByVal strArgument As String, _ ByVal frmParent As Form) As Boolean
Dim udtProcessAttributes As SECURITY_ATTRIBUTES Dim udtThreadAttributes As SECURITY_ATTRIBUTES Dim udtStartupInfo As STARTUPINFO Dim udtProcessInfomation As PROCESS_INFORMATION Dim lngRet As Long Dim strCmdLine As String Dim ThreadID1 As Long Dim ThreadID2 As Long Dim buf As String
On Error GoTo Err_Start_Shell
'初期値を設定する
Start_Shell = False
If strAppPath = Empty Then GoTo Err_Start_Shell End If
If strArgument <> Empty Then
strCmdLine = strAppPath & " " & strArgument End If
'API型宣言 Public Type BROWSEINFO
hwndOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long End Type
'API関数宣言 PublicDeclare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" ( _
lpBROWSEINFO As BROWSEINFO _
) As Long
PublicDeclare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" ( _ ByVal pidl As Long, _ ByVal pszPath As String _
) As Long
'定数宣言 PublicConst GSCON_FOLDER_TITLE As String = "フォルダを選択してください"
フォルダ選択ダイアログの表示関数
'----------------------------------------------------------------------------------
'機能 フォルダ選択ダイアログの表示
'引数 frmOwner 呼出元画面 、strFolderName 選択フォルダフルパス名
'戻り値 TRUE 正常、FALSE 異常
'---------------------------------------------------------------------------------- PublicFunction Show_Folder(ByVal frmOwner as Form, ByRef strFolderName As String) As Boolean
Dim lngRet As Long Dim strDir As String Dim BInfo As BROWSEINFO Dim SelectPath As String * 128
'ウインドウサイズ・位置・Zオーダーの設定 Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, _ ByVal hWndInsertAfter As Long, _ ByVal x As Long, _ ByVal y As Long, _ ByVal cx As Long, _ ByVal cy As Long, _ ByVal lFlags As Long) As Long
ウインドウサイズ・位置・Zオーダーの設定関数
'----------------------------------------------------------------------------------
'機能 現在の位置とサイズでウインドウリストの一番上に配置
'戻り値 TRUE 正常、FALSE 異常
'---------------------------------------------------------------------------------- PublicFunction Set_Window(ByVal frmOwner as Form, ByRef strFolderName As String) As Boolean
/* -------------------------------------------------------------------------------- */
/* PL/SQLパッケージ */
/* VBから配列の受け取り例 */
/* -------------------------------------------------------------------------------- */ CREATEORREPLACE PACKAGE PLSQL_TEST IS TYPE chrCODE ISTABLE OF CHAR(10) INDEX BY BINARY_INTEGER;
Dim strList(0) As String Dim inthWorkBook As Integer Dim intListCnt As Integer Dim strFileName As String Dim blnRet As Boolean
strFileName = "取込対象エクセルファイル名" ''指定したファイルがExcel形式のファイルかどうかを返す
blnRet = vaSpread1.IsExcelFile(strFileName) ifNot blnRet Then
MsgBox "Excel形式のファイルではありません" ExitSub End if
''指定のExcelファイルから、ワークブックのハンドルとシート名リストを取得
blnRet = vaSpread1.GetExcelSheetList(strFileName,strList,strListCnt,"C:\temp\excel.log",inthWorkBook,True) if blnRet Then ''スプレッドシートをExcel形式ファイルのシートにエクスポート
vaSpread1.ImportExcelSheet inthWorkBook,strList(0) else
MsgBox "対象のエクセルファイルが起動中の為、読み込みに失敗しました" End if