Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2934 / 13646 ツリー ←次へ | 前へ→

【65192】ファイルアクセスのナンバーをつける cocoa 10/4/26(月) 10:44 質問[未読]
【65193】Re:ファイルアクセスのナンバーをつける Jaka 10/4/26(月) 15:25 発言[未読]
【65203】Re:ファイルアクセスのナンバーをつける S 10/4/27(火) 0:09 回答[未読]

【65192】ファイルアクセスのナンバーをつける
質問  cocoa  - 10/4/26(月) 10:44 -

引用なし
パスワード
   お世話になります。

対象のxlsファイルにアクセスした場合に、
アクセスした日時と、ユーザーネームをexcelLog.txtへ
記録していくVBAは探し当てたのですが、
さらに、ナンバーをつけていくのはどのようにすれば
実現できるのでしょうか。

例としては、
NO DATE USERNAME
1 2010/04/26 userName
2 2010/04/26 userName



n 2100/04/26 userName

Private Sub Workbook_Open()
Const logFile As String = "excelLog.txt"
Dim fileNo As Integer
Dim apPath As String
Dim userNo As Integer

apPath = ActiveWorkbook.Path
If Right(apPath, 1) <> "\" Then apPath = apPath & "\"

fileNo = FreeFile
If Dir(apPath & logFile) = "" Then
Open apPath & logFile For Output As fileNo
Else
Open apPath & logFile For Append As fileNo
End If
Print #fileNo, Now & " " & Application.UserName
Close
End Sub

宜しくお願いいたします。

【65193】Re:ファイルアクセスのナンバーをつける
発言  Jaka  - 10/4/26(月) 15:25 -

引用なし
パスワード
   1回開いて、データ総数を取得するってことかな?
で、input、outputで2回開くことになるのかな。
ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=79;id=FAQ

【65203】Re:ファイルアクセスのナンバーをつける
回答  S  - 10/4/27(火) 0:09 -

引用なし
パスワード
   Wordの機能を借りるのはダメですか? 
下のマクロは、ファイル名をフルで指定して実行すると、
自動的に「excelLog.txt」ができて、通し番号に「1」が設定されます。
実行する度に、通し番号が増えます。

Andrew Savikas著『Word Hacks』オライリー・ジャパン刊
「文書に通し番号を付ける」214〜216頁から引用して、
Excelで動くように変更。

Sub MyIniFileNumber()
 Rem 通し番号の読み込み・設定
 Rem 指定したファイルが存在しない場合は、自動生成され、
 Rem 通し番号に「1」が設定される。
 '
 Dim myWord As Object
 Dim MyIniFile As String
 Dim myCurrentNumber As String ' 通し番号
 '
 Rem ファイル名を指定。
 MyIniFile = "C:\Users\User\Documents\Zzz\excelLog.txt"
 '
 On Error Resume Next
 Set myWord = GetObject(, "Word.Application")
 If Err.Number <> 0 Then
  Set myWord = CreateObject("Word.Application")
 End If
 On Error GoTo 0
 '
 Rem ファイルから値を読み込み。
 myCurrentNumber = myWord.System.PrivateProfileString(MyIniFile, "CurrentInvoice", "Number")
 '
 If Len(myCurrentNumber) = 0 Then
  myCurrentNumber = CStr(0)
 End If
 '
 Rem 通し番号の値を加算。
 myCurrentNumber = CStr(CInt(myCurrentNumber) + 1)
 '
 Rem ファイルに値を設定。
 myWord.System.PrivateProfileString(MyIniFile, "Date Time", "Date") = CStr(Date)
 myWord.System.PrivateProfileString(MyIniFile, "Date Time", "Time") = CStr(Time)
 myWord.System.PrivateProfileString(MyIniFile, "CurrentInvoice", "Number") = myCurrentNumber
 '
 Set myWord = Nothing
End Sub ' MyIniFileNumber *----*----*  *----*----*  *----*----*  *----*----*

[End]

2934 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free