(1) プログラムファイルが存在するフォルダに、次のテキストファイルを作成します。
RowNum.txt
このテキストファイルに、共有ブックの最終行の行番号を7桁で1行だけ登録しておきます。
(2) 次のプロシジャを標準モジュールに登録します。
VBA
1Function f_lngGetRowNum() As Long
2On Error GoTo f_lngGetRowNum_Err
3
4 Dim lngGetRowNum As Long
5 Dim strFileName As String
6 Dim intFileNum As Integer
7 Dim strRowNum As String * 7
8
9 strFileName = ThisWorkbook.Path & "\RowNum.txt"
10 intFileNum = FreeFile
11
12 Open strFileName For Binary Lock Read Write As #intFileNum
13 Get #intFileNum, 1, strRowNum
14
15 lngGetRowNum = CLng(strRowNum) + 1
16 strRowNum = Format(lngGetRowNum, String(7, "0"))
17
18 Put #intFileNum, 1, strRowNum
19 Close #intFileNum
20
21 f_lngGetRowNum = lngGetRowNum
22
23
24f_lngGetRowNum_Exit:
25 Exit Function
26
27f_lngGetRowNum_Err:
28 f_lngGetRowNum = 0
29 Resume f_lngGetRowNum_Exit
30
31End Function
このプロシジャは、RowNum.txtを排他的に開き、中の7桁の数字に1を加えて更新します。
戻り値は、その1を加えた値です。
でも、RowNum.txtが別プロセスで開かれていると、更新せずに0を返します。
(3) 新規データが発生した場合には、上記プロシジャで、その新規データを書き込むべき行番号を取得します。
0が返ってきたときは、ユーザーに少し待つよう促します。
以上でいかがでしょうか。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/27 11:30