アフィリエイト広告を利用しています

広告

この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
posted by fanblog

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






posted by naka at 14:43 | TrackBack(0) | Access vba

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





posted by naka at 11:49 | TrackBack(0) | Access vba

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






posted by naka at 14:19 | TrackBack(0) | Access vba

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

posted by naka at 17:12 | TrackBack(0) | Access vba

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






posted by naka at 10:26 | TrackBack(0) | Access vba

2020年11月11日

[Access vba] VBAでSQLステートメントを記述する場合

VBAでSQLステートメントを記述する場合


・SQLステートメントをダブルクォーテーションで囲みます。

・抽出条件が文字列の場合は、シングルクォーテーションで囲みます。

"SELECT * FROM 発注先マスタ WHERE 都道府県 = '東京都'"


SQLステートメントは、VBAでは文字列になります。




posted by naka at 16:03 | TrackBack(0) | Access 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
posted by naka at 15:17 | TrackBack(0) | Access vba

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:ワークシートのみ取得(グラフシートなどは取得しない)




posted by naka at 08:58 | TrackBack(0) | Excel VBA

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





posted by naka at 16:55 | TrackBack(0) | Access vba
カテゴリーアーカイブ
×

この広告は30日以上新しい記事の更新がないブログに表示されております。