新規記事の投稿を行うことで、非表示にすることが可能です。
2021年08月06日
[Access vba] ファイル出力フォルダーの作成(階層)
ファイル出力フォルダーの作成(階層)
Const SeikyusyoFolder As String = "C:\Seikyusyo\" '請求書出力フォルダー
Dim g_対象年月度 As String
Dim g_締日 As String
'
' 「請求書」の保存フォルダを作成する。(対象年月度_締日 毎に作成)
'
' 深い階層のフォルダーを作成する場合、
' 途中のフォルダーが存在しないと[MkDirのパスが見つかりませんエラー]になるので
' 浅い階層のフォルダーから作成する。
'
Sub Seikyusyo_Flder_Crt(g_対象年月度 As String, g_締日 As String)
Dim sDoc_Folder As String
Dim sFolname As String 'full path 対象年月度締日 フォルダー
Dim arr() As String
Dim i As Long
On Error GoTo ErrProc
'----------------------------------------------------------------------------------------
sFolname = SeikyusyoFolder & g_対象年月度 & "_" & g_締日 & "\"
arr = Split(sFolname, "\")
sDoc_Folder = arr(0) ' ドライブ
For i = 1 To UBound(arr)
sDoc_Folder = sDoc_Folder & "\" & arr(i)
If Dir(sDoc_Folder, vbDirectory) = "" Then
MkDir sDoc_Folder
End If
Next i
Proc_EXIT:
DoCmd.SetWarnings 1
Exit Sub
ErrProc:
MsgBox Err.Number & " " & Err.Description
Resume Proc_EXIT
End Sub
【このカテゴリーの最新記事】
-
no image
-
no image
-
no image
-
no image
-
no image
2021年04月27日
[Access vba] サブフォームで親フォーム(メインフォーム)参照 Parent
サブフォームで親フォーム(メインフォーム)参照 Parent
分割品名をダブルクリックすると、親フォームの品名が分割品名にセットされる。
分割品名をダブルクリックすると、親フォームの品名が分割品名にセットされる。
Private Sub 分割品名_DblClick(CANCEL As Integer)
Me.分割品名 = Parent!品名
Proc_EXIT:
Exit Sub
ErrProc:
MsgBox Err.Number & " " & Err.Description
Resume Proc_EXIT
End Sub
2021年03月16日
[Access vba] フォームを閉じたらAccessも終了させる場合
フォームを閉じたらAccessも終了させる場合
Private Sub Form_Unload(Cancel As Integer)
DoCmd.Quit
End Sub
「閉じる時」(Form_Close)イベントではなく、
「読み込み解除時」(Form_Unload)イベントでQuitする。
DoCmd.Quit 'Accessを最適化して終了する
Application.Quit 'Accessを最適化しないで終了する
2021年02月10日
[Access vba] ファイル名の最後にそのファイルの更新日付を付ける
ファイル名の最後にそのファイルの更新日付を付ける。ファイル名を付けた後、別のフォルダにBackup
Sub DLFile_rename()
Dim fso As Object
Dim sData_Folder As String
Dim sFname As String
Dim sLastUpDay As String '更新日付
Set fso = CreateObject("Scripting.FileSystemObject")
sData_Folder = "\\Server\共有フォルダ\データフォルダ\"
sFname = Dir(sData_Folder & "xxxxxxxx*") 'file name
Do While sFname <> ""
'更新日付
sLastUpDay = Replace(Left(fso.GetFile(sData_Folder & sFname).DateLastModified, 10), "/", "")
'日付がセットされていなければRename
If Right(sFname, 8) <> sLastUpDay Then
Name sData_Folder & sFname As sData_Folder & sFname & "_" & sLastUpDay
End If
sFname = Dir()
Loop
Set fso = Nothing
Proc_EXIT:
Exit Sub
ErrProc:
MsgBox Err.Number & " " & Err.Description
Resume Proc_EXIT
End Sub
2021年01月08日
[Access vba] DoCmd.RunsqlとCurrentDb.Execute
◆SQLの実行などで DoCmd.Runsql と CurrentDb.Execute
CurrentDb.Executeの方が実行速度は速いという結果が多い。
非同期処理のため。
当面、CurrentDb.Executeを使用していく。
パラメータクエリをCurrentDb.Executeで実行するとエラーになる時がある。
その時はDoCmd.Runsqlで実行する。
DoCmd.Runsqlの実行には、DoCmd.SetWarnings Falseを記述しMsgをださないようにする。
DoCmd.SetWarnings False
DoCmd.RunSQL stSQL
DoCmd.SetWarnings False
CurrentDb.Executeの方が実行速度は速いという結果が多い。
非同期処理のため。
当面、CurrentDb.Executeを使用していく。
パラメータクエリをCurrentDb.Executeで実行するとエラーになる時がある。
その時はDoCmd.Runsqlで実行する。
DoCmd.Runsqlの実行には、DoCmd.SetWarnings Falseを記述しMsgをださないようにする。
DoCmd.SetWarnings False
DoCmd.RunSQL stSQL
DoCmd.SetWarnings False
2020年12月10日
[Access vba] フォームにあるコントロールを一覧表示する。
フォームにあるコントロールを一覧表示する。
'
' フォームにあるコントロールを一覧表示する。
'
Public Sub Controls_name()
Dim frm As Form
Dim ctl As Control
DoCmd.OpenForm "f_履歴一覧", _
acDesign, , , , acHidden
Set frm = Forms!f_履歴一覧
For Each ctl In frm.Controls
Debug.Print ctl.Name
Next ctl
DoCmd.Close acForm, "f_履歴一覧", acSaveNo
ProcExit:
Exit Sub
ErrProc:
MsgBox "" & Err.Number & " " & Err.Description
Resume ProcExit
End Sub
2020年11月11日
[Access vba] VBAでSQLステートメントを記述する場合
VBAでSQLステートメントを記述する場合
・SQLステートメントをダブルクォーテーションで囲みます。
・抽出条件が文字列の場合は、シングルクォーテーションで囲みます。
"SELECT * FROM 発注先マスタ WHERE 都道府県 = '東京都'"
SQLステートメントは、VBAでは文字列になります。
2020年10月12日
[Access vba] ファイルをバックアップフォルダに移動する
ファイル(この場合はpdf)をバックアップフォルダに移動する。バックアップフォルダは、ファイルの更新日(年)の年毎にフォルダを分ける。
Sub Doc_Move()
Dim fso As Object
Dim sData_Folder As String
Dim sDoc_Folder As String
Dim sFname As String
Dim sLastUpDay As String '最終更新日付
Dim sLastyyyy As String '最終更新年
Dim sFolyyyy As String '年フォルダー
Set fso = CreateObject("Scripting.FileSystemObject")
sData_Folder = "\\Server\共有フォルダ\データ\" 'InFlder
sDoc_Folder = "\\Server\共有フォルダ\バックアップ\" 'outFolder
sFname = Dir(sData_Folder & "DOCDOC*.pdf") 'file name
Do While sFname <> ""
'最終更新日付
sLastUpDay = Replace(Left(fso.GetFile(sData_Folder & sFname).DateLastModified, 10), "/", "")
'年を取得
sLastyyyy = Left(sLastUpDay, 4)
sFolyyyy = sDoc_Folder & sLastyyyy & "\"
'年フォルダが無かったら作る
If fso.FolderExists(sFolyyyy) = False Then
MkDir sFolyyyy
End If
'移動
Name sData_Folder & sFname As sFolyyyy & sLastUpDay & "_" & sFname
sFname = Dir()
Loop
Set fso = Nothing
Proc_EXIT:
DoCmd.SetWarnings 1
Exit Sub
ErrProc:
MsgBox Err.Number & " " & Err.Description
Resume Proc_EXIT
End Sub
2020年09月09日
[Excel vba] Book上にシートが存在するか確認する。
Excel Book上にシートが存在するか確認する。すべてのシートをループして、指定した名前のシートが存在するか判定します。
Sub test()
Debug.Print (ExistsWorksheet("名前"))
End Sub
' 指定した名前のシートが存在するか判定する
Public Function ExistsWorksheet(ByVal name As String)
Dim ws As Worksheet
For Each ws In Sheets
If ws.name = name Then
ExistsWorksheet = True ' 存在する
Exit Function
End If
Next
ExistsWorksheet = False ' 存在しない
End Function
ExistsWorksheet の戻り値が True なら存在。
False なら存在しない。
Sheets と Worksheets の違いはワークシート以外を取得するかどうか。
Sheets:すべてのシートを取得
Worksheets:ワークシートのみ取得(グラフシートなどは取得しない)
2020年08月07日
[Access vba] 他のフォームをRequeryする。
他のフォームをRequeryする
'他のフォームをRequeryする。
'該当フォームがloadされていなければOpenする。
If CurrentProject.AllForms("f_履歴一覧").IsLoaded Then
Forms![f_履歴一覧].Visible = True
Else
DoCmd.OpenForm "f_履歴一覧"
End If
Forms![f_履歴一覧].Requery