データをOLEからexcelに出力させて、ファイルを閉じる場合のファイル名に現在の時刻を使いたいのですが、うまくプログラムできません。私がやってるのは、コモンダイアログのファイル形式の指定で時刻を載せているんですが、・・・。どなたか教えて頂けませんか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

力不足で論点がずれているかもしれませんが


Sub aaa111()
' Workbooks("book1").Activate
'---abcでファイルの分類名をその後に日付を入れる
filenam = "abc" & Year(Now()) & Month(Now()) & Day(Now())
MsgBox filenam '確認のため
ActiveWorkbook.SaveAs Filename:=filenam
End Sub
ファイル名が「abc20010128.xls」となりましたがこれでは回答になりませんか。
時刻なら、"abc" & Hour(Now()) & Minute(Now()) & Second(Now()).
    • good
    • 0
この回答へのお礼

そうです。こんなかんじなんです。
どうもありがとうございました。

お礼日時:2002/01/29 09:03

Excelを参照設定して



Dim xlsheet As Excel.Worksheet
Dim strFileName

strFileName=Now()

'既存のファイルを開いています。
Set xlbook = GetObject("C:\temp\test.xls")
Set xlsheet = xlbook.ActiveSheet

'EXCELの形式で保存させます。(ちなみにxlNormalをかえるとCSVなどでもできます。)
xlsheet.SaveAs FileName:=strFileName,FileFormat:=xlNormal

…なんてやるとファイル名を自在につけてEXCEL形式で保存することができると思いますが、だめでしょうか?
    • good
    • 0
この回答へのお礼

どうもありがとうございます。
早速ためしてみます。

お礼日時:2002/01/28 12:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qコモンダイアログのファイルを開くについて

Windowsのファイルを開くダイアログで、ファイルを開くダイアログから
エクセルファイルを選択し、開くボタンを押したら、選択された
エクセルファイルを開きたいのですが、ヘルプで参照したところコモンダイアログ
があるのを知りました。

ダイアログを開くところまでは、できたのですが、次にエクセルファイルを選択
し、開くボタンを押したときのイベントってどうやってとればよいのかわかりません。
開くボタンを押時に、選択されているパスを取りたいのですが、それもどうやって
取ればよいのやら、、、(+_+)

ご教示ねがえませんでしょうか?
よろしくお願いいたします。

Aベストアンサー

Dim FileName As String
Const ExcelFileName = "C:\Program Files\Microsoft Office\Office\Excel.exe "
'
With CommonDialog
.DialogTitle = "HogeHogeアプリケーション"
.Filter = "Excel ファイル (*.xls)|*.xls|All File (*.*)|*.*"
.Flags = cdlOFNExplorer Or cdlOFNHideReadOnly Or cdlOFNLongNames Or cdlOFNNoChangeDir
.ShowOpen
'
FileName = .FileName
If (FileName <> "") Then
Shell (ExcelFileName + FileName)
End If
End With

Dim FileName As String
Const ExcelFileName = "C:\Program Files\Microsoft Office\Office\Excel.exe "
'
With CommonDialog
.DialogTitle = "HogeHogeアプリケーション"
.Filter = "Excel ファイル (*.xls)|*.xls|All File (*.*)|*.*"
.Flags = cdlOFNExplorer Or cdlOFNHideReadOnly Or cdlOFNLongNames Or cdlOFNNoChangeDir
.ShowOpen
'
FileName = .FileName
If (FileName <> "") Then
Shell (ExcelFileName + FileName)
...続きを読む

Qファイル時刻の変更直後の時刻取得

SetFileTime でファイル時刻を変更した直後にタスクを終了することなく GetFileTime でファイル時刻を取得するとなぜか変更内容が破棄されます。
タスクを終了すると変更内容が有効になっていますのでおそらくディスクキャッシュの影響とおもわれます。

関係情報・関係情報が記載されているコンパイルされたHTMLファイル・検索用シソーラス等お知らせ願えませんか。

プログラム作成環境
Visual Stiudio 6.0
Visual Basic SP5パッチ済
Windows 98SE 4.1

実行予定環境(作成時の障害の為現時点では実行経験なし)

Windows 95
Windows 98

Aベストアンサー

動作確認済みソースです。(EXCEL.VBAにて)
WinXPsp2
Excel2000sp3(VBA)
この環境では、Doeventsを利用しないでも、1日づつ日付が変更になりました。

OSによって違うのか、ソースに不具合があるか、実行して差を教えてください。



Option Explicit

Private Const DEF_FILE As String = "C:\テスト.txt"

' セキュリティを定義する構造体
Private Type SECURITY_ATTRIBUTES
  nLength       As Long
  lpSecurityDescriptor As Long
  bInheritHandle    As Long
End Type

' ファイルハンドルの値が無効であることを示す定数の宣言
Private Const INVALID_HANDLE_VALUE = (-1)

' オブジェクトへのアクセスの種類を指定する定数の宣言
Private Const GENERIC_READ = &H80000000
Private Const GENERIC_WRITE = &H40000000

' ファイルへの動作を指定する定数の宣言
Private Const OPEN_EXISTING = 3

' ファイルなどの作成やオープンや切り捨てを行う関数の宣言
Private Declare Function CreateFile Lib "kernel32.dll" _
  Alias "CreateFileA" _
  (ByVal lpFileName As String, _
  ByVal dwDesiredAccess As Long, _
  ByVal dwShareMode As Long, _
  lpSecurityAttributes As SECURITY_ATTRIBUTES, _
  ByVal dwCreationDistribution As Long, _
  ByVal dwFlagsAndAttributes As Long, _
  ByVal hTemplateFile As Long) As Long

' オープンされているオブジェクトハンドルをクローズする
' 関数の宣言
Private Declare Function CloseHandle Lib "kernel32.dll" _
  (ByVal hObject As Long) As Long

' 日付と時刻を定義する構造体
Private Type SYSTEMTIME
  wYear     As Integer
  wMonth    As Integer
  wDayOfWeek  As Integer
  wDay     As Integer
  wHour     As Integer
  wMinute    As Integer
  wSecond    As Integer
  wMilliseconds As Integer
End Type

' ファイル時間を定義する構造体
Private Type FILETIME
  dwLowDateTime As Long
  dwHighDateTime As Long
End Type

' システム時間をファイル時間に変換する関数の宣言
Private Declare Function SystemTimeToFileTime Lib "kernel32.dll" _
  (lpSystemTime As SYSTEMTIME, _
  lpFileTime As FILETIME) As Long
' ファイル時間をシステム時間に変換する関数の宣言
Private Declare Function FileTimeToSystemTime Lib "kernel32.dll" _
  (lpFileTime As FILETIME, _
  lpSystemTime As SYSTEMTIME) As Long

' ファイルの作成日時などを設定する関数の宣言
Private Declare Function SetFileTime Lib "kernel32.dll" _
  (ByVal hFile As Long, _
  lpCreationTime As FILETIME, _
  lpLastAccessTime As FILETIME, _
  lpLastWriteTime As FILETIME) As Long

' ファイルの作成日時などを取得する関数の宣言
Private Declare Function GetFileTime Lib "kernel32.dll" _
  (ByVal hFile As Long, _
  lpCreationTime As FILETIME, _
  lpLastAccessTime As FILETIME, _
  lpLastWriteTime As FILETIME) As Long


Sub Test()
  Dim datTime As Date
  
  Debug.Print String(26, "-")
  
  '1回目取得
  Call funcGetTime(DEF_FILE, datTime)
  Debug.Print "1.取得" & datTime
  
  '1日引いて更新
  Call funcSetTime(DEF_FILE, datTime - 1)
  
  '2回目取得
  Call funcGetTime(DEF_FILE, datTime)
  Debug.Print "2.取得" & datTime

  Debug.Print String(26, "-")
End Sub

Private Function funcGetTime(ByVal inFile As String, ByRef otTime As Date) As Boolean
  Dim lngOpenFileHandle    As Long
  Dim udtCreationTime     As FILETIME
  Dim udtLastAccessTime    As FILETIME
  Dim udtLastWriteTime    As FILETIME

  'ファイルを取得モードでオープン
  If Not APICreateFile(inFile, False, lngOpenFileHandle) Then
    Exit Function
  End If
  
  ' ファイルの作成日時を取得
  Call GetFileTime(lngOpenFileHandle, _
          udtCreationTime, _
          udtLastAccessTime, _
          udtLastWriteTime)
  
  '【変換】ファイル時間→日付
  Call FileTime_To_Date(udtLastWriteTime, otTime)
  
  'ファイルをクローズ
  Call APICloseHandle(lngOpenFileHandle)
  
  funcGetTime = True
End Function

Private Function funcSetTime(ByVal inFile As String, ByVal inTime As Date) As Boolean
  Dim lngOpenFileHandle    As Long
  Dim udtCreationTime     As FILETIME
  Dim udtLastAccessTime    As FILETIME
  Dim udtLastWriteTime    As FILETIME

  'ファイルを更新モードでオープン
  If Not APICreateFile(inFile, True, lngOpenFileHandle) Then
    Exit Function
  End If
  
  ' ファイルハンドルの値が無効であるときは抜ける
  If lngOpenFileHandle = INVALID_HANDLE_VALUE Then
    Exit Function
  End If
    
  '【変換】日付→ファイル時間
  Call Date_To_FileTime(inTime, udtLastWriteTime)
  
  'ファイルの更新日時を設定
  Call SetFileTime( _
           lngOpenFileHandle _
          , udtCreationTime _
          , udtLastAccessTime _
          , udtLastWriteTime _
          )
          
  'ファイルをクローズ
  Call APICloseHandle(lngOpenFileHandle)
  
  funcSetTime = True
End Function

Private Sub APICloseHandle(ByRef inFileHandle As Long)
  If inFileHandle <> 0 Then
    Call CloseHandle(inFileHandle)
  End If
  inFileHandle = 0
End Sub

Private Function APICreateFile(ByVal inFile As String, ByVal inSetMode As Boolean, Optional ByRef otFileHandle As Long) As Boolean
  Dim udtSecurityAttributes  As SECURITY_ATTRIBUTES
  Dim lngOpenFileHandle    As Long
  
  '初期化
  Call APICloseHandle(otFileHandle)
  
  ' セキュリティ構造体を初期化
  udtSecurityAttributes.nLength = Len(udtSecurityAttributes)
  ' ファイルをオープン
  lngOpenFileHandle = _
    CreateFile(inFile, _
          IIf(inSetMode, GENERIC_WRITE, GENERIC_READ), _
          0, _
          udtSecurityAttributes, _
          OPEN_EXISTING, _
          0, _
          0)
  
  'ステータスチェック
  APICreateFile = Not (lngOpenFileHandle = INVALID_HANDLE_VALUE)
  If APICreateFile Then
    '正常ケースは、ハンドルを返す
    otFileHandle = lngOpenFileHandle
  End If

End Function

Private Sub Date_To_FileTime(ByVal inDate As Date, otFileTime As FILETIME)
  Dim udtSystemTime      As SYSTEMTIME
  
  '【変換】日付→システム時間
  With udtSystemTime
    .wYear = Year(inDate)
    .wMonth = Month(inDate)
    .wDay = Day(inDate)
    
    .wHour = Hour(inDate)
    .wMinute = Minute(inDate)
    .wSecond = Second(inDate)
    .wMilliseconds = 0
    .wDayOfWeek = Weekday(inDate) - 1
  End With
  
  '【変換】システム時間→ファイル時間
  Call SystemTimeToFileTime(udtSystemTime, otFileTime)
End Sub

Private Sub FileTime_To_Date(inFileTime As FILETIME, otDate As Date)
  Dim udtSystemTime      As SYSTEMTIME
  
  '【変換】ファイル時間→システム時間
  Call FileTimeToSystemTime(inFileTime, udtSystemTime)
  
  '【変換】システム時間→日付
  With udtSystemTime
    otDate = .wYear & "/" & .wMonth & "/" & .wDay & " " & .wHour & ":" & .wMinute & ":" & .wSecond
  End With
End Sub

動作確認済みソースです。(EXCEL.VBAにて)
WinXPsp2
Excel2000sp3(VBA)
この環境では、Doeventsを利用しないでも、1日づつ日付が変更になりました。

OSによって違うのか、ソースに不具合があるか、実行して差を教えてください。



Option Explicit

Private Const DEF_FILE As String = "C:\テスト.txt"

' セキュリティを定義する構造体
Private Type SECURITY_ATTRIBUTES
  nLength       As Long
  lpSecurityDescriptor As Long
  bInheritHandle    As Long
End Type
...続きを読む

Q.NET .ADO でのSQL文でEXCELファイルのUPDATEで時刻の列に文字があると時刻が正しく入力されません。

文字が含まれない列の時刻は正しく更新されるのですが、文字が含まれる列は通常は右寄せのはずが左寄せになってしまい、表示形式は「h:mm」なのですがセルを選択すると上のバー?に出るはずの秒が出ません・・・書式設定は一応、時刻になっているのですが・・・たぶん文字列になってしまっているような感じです。

EXCELファイルの形式は下記のようになっています。書式設定は、A列はすべて日付、BとC列はすべて時刻になっています。問題の「休」のセルも時刻のままです。
........A.........B........C.....
1......日付......出勤.....退勤
2....2010/1/1....7:54....18:24
3....2010/1/2....休........
4....2010/1/3....7:48....18:28
5....2010/1/4....7:56....18:33

日付と退勤の列はうまく更新できるのですが、B列の出勤列に「休」と書かれている行があるとB列の更新がうまくいきません。

ソースは、下記のようになっています。
con.ConnectionString = _
"Provider=Microsoft.ACE.OLEDB.12.0; " & _
"Data Source=" & _
"C:\DATE\タイムカード.xls;" & _
"Extended Properties=""Excel 12.0;HDR=YES;"""
Dim cmd As New OleDbCommand()
cmd.Connection = con
con.Open()
cmd.CommandText = "UPDATE [Sheet1$] SET 日付 = @hiduke, 出勤 = @jikoku, 退勤 = @nijikoku WHERE 日付 = 40203"
cmd.Parameters.Add("@hiduke", OleDbType.Variant).SourceColumn = "日付"
cmd.Parameters("@hiduke").Value = Format(DateValue("2010/1/21"), "yyyy/MM/dd")
cmd.Parameters.Add("@jikoku", OleDbType.Variant).SourceColumn = "出勤"
cmd.Parameters("@jikoku").Value = Format(TimeValue("2:40"), "H:mm")
cmd.Parameters.Add("@nijikoku", OleDbType.VarChar).SourceColumn = "退勤"
cmd.Parameters("@nijikoku").Value = Format(TimeValue("15:2"), "H:mm")
cmd.ExecuteNonQuery()

.NET自体初めてなのでおかしなところもあると思いますが、色々試しても結局どうにもならず現在は上記のような状態です。
上記の出勤と退勤のOleDbTypeが違いますが色々試しましたがすべてダメでした・・・
試したのは下記になります
Variant
VarChar
VarChar, 255
Char
DBTime
どのようにすればうまくいくでしょうか?

文字が含まれない列の時刻は正しく更新されるのですが、文字が含まれる列は通常は右寄せのはずが左寄せになってしまい、表示形式は「h:mm」なのですがセルを選択すると上のバー?に出るはずの秒が出ません・・・書式設定は一応、時刻になっているのですが・・・たぶん文字列になってしまっているような感じです。

EXCELファイルの形式は下記のようになっています。書式設定は、A列はすべて日付、BとC列はすべて時刻になっています。問題の「休」のセルも時刻のままです。
........A.........B........C.....
...続きを読む

Aベストアンサー

#1です。
#10にも書いてありますが

>>説明不足で申し訳ないのですが、エクセルファイルの時刻を入力する列の書式設定は文字列でなく時刻>>にしたいのです。この列の書式設定をすべて文字列にしてしまうなら、特に変更なく私のソースでも問>>題なく更新できてしまいます・・・

SQLサーバーやACCESSのフィールドも当然、文字型 NvarChar(10) とか あります。

それを 時刻型という型はありませんので日付時刻型(DateTime)にしなければなりません。

時刻の場合 1900/01/01 13:52:00.000 というような形になります。

これを無視して 「休」 などの文字を日付時刻型 に書き込むと エラーになります。

だから すべて文字列で扱うしかないのです。


#10 で説明した 出勤(時)と出勤(分)入力規則のリストで入力させて VB.NET での
Excelシート入力時におけるSQLで 合体させてあげれば大丈夫です。

(IIF(ISNUMERIC(TB.出勤_時),TB.出勤_時 & &':' & TB.出勤_分,TB.出勤_時)) as 出勤

というよな構文です テストしてませんのでデバッグしてください

もし、文字型がどうしてもいやだというならExcelで「休」は別のセルに分けて記入
できるようにしてください。
DBの出力項目も「休」(Nvarchar(4))と出勤(DtaeTime型) としてください。

#1です。
#10にも書いてありますが

>>説明不足で申し訳ないのですが、エクセルファイルの時刻を入力する列の書式設定は文字列でなく時刻>>にしたいのです。この列の書式設定をすべて文字列にしてしまうなら、特に変更なく私のソースでも問>>題なく更新できてしまいます・・・

SQLサーバーやACCESSのフィールドも当然、文字型 NvarChar(10) とか あります。

それを 時刻型という型はありませんので日付時刻型(DateTime)にしなければなりません。

時刻の場合 1900/01/01 13:52:00.000...続きを読む

Qテキストファイルを読んで、Excel型のOLEコンテナに表示するには?

あるテキストファイルを編集するVBアプリケーションを作成しています。

テキストファイルの内容をEXCEL形式のOLEコンテナに表示させ、それを編集し、
その結果を再びテキストファイルに書き込みたいのですが、
表示させるまでの手順が全くわかりません。

テキストファイルの操作はわかります。
OLEコンテナ関連の操作が全くわかりません。

どなたか教えて下さい。

環境はWin2000、VB6.0です。

Aベストアンサー

こんにちは

以下のサイトにFlexGridの説明と
入力のさせ方がありました。

サイト左のフレームから"MSFlexGrid関係"
を選択下さい

http://www.bcap.co.jp/hanafusa/

参考にして下さい

>Microsoft Grid controlがなぜ、コンポーネントの追加リストに
>表示されないのかご存知でしたら、教えて下さい。

これは、なぜでしょう?ちょっとなぜなすか解りません
grid32.ocx というファイルですが
検索しても無いのでしょうね
私の環境は"VB6SP5"ですけど、関係あるのかな?

では

参考URL:http://www.bcap.co.jp/hanafusa/

Qコモンダイアログを使用してファイル保存する場合の拡張子の指定について(初心者)

こんばんは
VB初心者です。

コモンダイアログを使用してファイルを保存する場合に"ファイル名+拡張子"を入力しないと拡張子なしのファイルで保存されてしまいます。自動的に任意の拡張子を付与することは出来るのでしょうか?

よろしくお願いします。

Aベストアンサー

コモンダイアログのプロパティにFilterというのがあったはずです。
これはファイルオープン・ファイルセーブで基本拡張子を設定するものです。

例えば「テキストファイル(*.txt)」を基本拡張子とする場合、
書き方は「テキストファイル(*.txt)|*.txt」となります。
又、「テキストファイル(*.txt)」と「CSVファイル(*.csv)」の用に複数使いたい場合は、
「テキストファイル(*.txt)|*.txt|CSVファイル(*.csv)|*.CSV」となります。

このプロパティを設定しておけば、任意の拡張子を設定できるはずです。
因みに、「ファイル」等のカタカナは半角でも構いません。


人気Q&Aランキング

おすすめ情報