vb txtファイル名に年月日、日時を追加する方法

このQ&Aのポイント
  • Visual Studio 2013を使用して、CSVデータの取り込み時に重複した値をtxtファイルに保存する際に、ファイル名に「年月日、日時」を追加する方法を教えてください。
  • 実装したいイメージは、重複リスト.txtの後ろに日付と時刻を追加して保存することです。
  • 現在は OpenFileDialog を使用してCSVファイルを選択していますが、保存する際にファイル名を動的に生成する必要があります。
回答を見る
  • ベストアンサー

vb txtファイル名に年月日、日時を追加する方法

こんにちは、現在visual studio 2013 で勉強をしている初心者です。現在CSVデータの取り込みの際、重複した値をtxtファイルに保存しているのですがそのファイル名に「年月日、日時」を追加したいのですがやり方がわかりません。教えていただきたいです。 重複リスト.txt 2019/7/26 10:00みたいなのをイメージしているのですが・・・ 以下にソースを貼っておきます。 Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button_torikomi.Click 'OpenFileDialogクラスのインスタンスを作成 Dim ofd As New OpenFileDialog() Dim strSQL As String = Nothing Dim DT As New DataTable Dim clsdb As CLS_db 'クラスの呼び出し SQL接続 clsdb = New CLS_db 'はじめに表示されるフォルダを指定する ofd.InitialDirectory = "C:\" '[ファイルの種類]に表示される選択肢を指定する ofd.Filter = "CSVファイル(*.csv;*.csv)|*.csv;*.csv|すべてのファイル(*.*)|*.*" '[ファイルの種類]ではじめに選択されるものを指定する '2番目の「すべてのファイル」が選択されているようにする ofd.FilterIndex = 0 'タイトルを設定する ofd.Title = "開くファイルを選択してください" 'ダイアログボックスを閉じる前に現在のディレクトリを復元するようにする ofd.RestoreDirectory = True ofd.CheckFileExists = True ofd.CheckPathExists = True 'ダイアログを表示する If ofd.ShowDialog() = DialogResult.OK Then 'OKボタンがクリックされたとき、選択されたファイル名を表示する Console.WriteLine(ofd.FileName) Dim sr As New System.IO.StreamReader(ofd.FileName, _ System.Text.Encoding.GetEncoding("shift_jis")) '内容を一行ずつ読み込む Dim sw As String = sr.ReadLine() While sr.Peek() > -1 Dim s As String = sr.ReadLine() Dim parts As String() parts = Split(s, ",") strSQL = "SELECT カナ氏 FROM 従業員登録 WHERE 従業員コード = " & parts(0) & "" '重複処理 DT = clsdb.GetDataTable(strSQL) If DT.Rows.Count > 0 Then 'Shift JISで書き込む Dim swt As New System.IO.StreamWriter("C:\test\重複リスト.txt", _ True, _ System.Text.Encoding.GetEncoding("shift_jis")) '重複リスト.txtの内容を書き込む() swt.Write(parts(0)) swt.Write(","c) swt.Write(parts(1)) swt.Write(","c) swt.Write(parts(2)) swt.Write(","c) swt.Write(parts(3)) swt.Write(","c) swt.Write(parts(4)) swt.Write(","c) swt.Write(parts(5)) swt.Write(","c) swt.Write(parts(6)) swt.Write(","c) swt.Write(parts(7)) swt.Write(","c) swt.Write(parts(8)) swt.Write(","c) swt.WriteLine(parts(9)) '閉じる() swt.Close() Else strSQL = "INSERT INTO 従業員登録(従業員コード,カナ氏,カナ名,氏,名,性別,生年月日,入社日,部署,PASSWORD) VALUES ( '" & parts(0) & "','" & parts(1) & "','" & parts(2) & "','" & parts(3) & "','" & parts(4) & "','" & parts(5) & "','" & parts(6) & "','" & parts(7) & "', '" & parts(8) & "','" & parts(9) & "')" Try clsdb.Execute(strSQL) Catch ex As Exception MessageBox.Show(ex.Message) End Try End If MsgBox(strSQL) End While '閉じる sr.Close() If DT.Rows.Count > 0 Then MsgBox("従業員コードが同じです", MessageBoxIcon.Warning, "重複エラー") Else MsgBox("追加しました。", MessageBoxIcon.Asterisk, "追加") End If End If '更新テーブル再読み込み 'SQL構文を指定します。 strSQL = "select * from 従業員登録" '即反映 Try clsdb = New CLS_db DT = clsdb.GetDataTable(strSQL) 'データグリッドビューのデータソースを設定 Me.DataGridView1.DataSource = DT Catch ex As Exception MessageBox.Show(ex.Message) End Try DataGridView1.ReadOnly = True '元に戻す Me.Cursor = Cursors.Default End Sub End Class

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

ファイル名には、スラッシュやコロンは使用できません。 また、拡張子の後に日付文字列を追加するのは、拡張子が変化するので避けた方が良いです。 下記のような、拡張子の前に(ピリオドの前に)日付文字列を負荷する方法はどうですか? Dim dt1 As DateTime = System.DateTime.Now Dim dt2 As String = dt1.ToString("-yyyyMMddHHmm") 'Shift JISで書き込む Dim fileName As String = "C:\test\重複リスト" & dt2 & ".txt" Dim swt As New System.IO.StreamWriter(fileName, _ True, _ System.Text.Encoding.GetEncoding("shift_jis"))

その他の回答 (1)

  • f272
  • ベストアンサー率46% (8018/17137)
回答No.1

こんな感じで現在時刻dt1を取得して,それを文字列dt2に変換してやれば,ファイル名の一部として追加するのは簡単だよね。dt3とかdt4の短い形式を使ってもよい。 Dim dt1 As DateTime = System.DateTime.Now Dim dt2 As String = dt1.ToString() Dim dt3 As String = dt1.ToShortDateString() Dim dt4 As String = dt1.ToShortTimeString()

関連するQ&A

  • VB2010でCSV取込

    VB2010とAccessを使用しています。 あるCSVファイルからACCESSへデータ取り込みをしようとして CSVをデータテーブルに代入するコードを考えているのですが 下記のコードでは『FROM句』のエラーのようでうまく作動しません? ご教授お願いします。 Private Sub ToolMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolMenu.Click Dim OFD As New OpenFileDialog OFD.FileName = "" OFD.InitialDirectory = "\\10.20.100.35\data\LOG\" OFD.Filter = "CSVファイル(*.csv)|*.csv|すべてファイル(*.*)|*.*" OFD.FilterIndex = 1 OFD.Title = "取り込むCSVファイルを選択してください" OFD.RestoreDirectory = True OFD.CheckFileExists = True OFD.CheckPathExists = True If OFD.ShowDialog() = DialogResult.OK Then Try Dim DT As New DataTable '===============CSVからクエリ=============== Using OleCn As New System.Data.OleDb.OleDbConnection Dim CSVFileName As String = System.IO.Path.Combine(OFD.InitialDirectory, "aaa.csv") OleCn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & OFD.InitialDirectory & _ ";Extended Properties=""Text;HDR=YES;IMEX=1;FMT=Delimited""" Dim SQL As String = "" SQL = "SELECT * FROM " + CSVFileName Using DA As System.Data.OleDb.OleDbDataAdapter = _ New System.Data.OleDb.OleDbDataAdapter(SQL, OleCn) DT.Clear() DA.Fill(DT) End Using End Using Catch ex As Exception MessageBox.Show(ex.ToString, "例外発生") Exit Sub End Try End If End Sub

  • VB2008でテキスト以外のファイルの開き方について

    現在VB2008環境でファイル操作ができるソフトを開発中です。 openfiledialogでファイルを選択して開く、といったことがしたいと思い、以下のようにやってみました。 Dim ofd As New OpenFileDialog() ofd.FileName = FN ofd.InitialDirectory = DN ofd.FilterIndex = 2 ofd.Title = "" ofd.RestoreDirectory = True ofd.CheckFileExists = True ofd.CheckPathExists = True If ofd.ShowDialog() = DialogResult.OK Then Dim FO As Object FO = Shell(ofd.InitialDirectory + ofd.FileName, vbNormalFocus) End If FN,DNは他で指定したファイル、ディレクトリの名前です。 これでデバック実行すると「FileNotFoundExceptionはハンドルされませんでした」というエラーが出て開けませんでした。 VBでのソフト開発自体はじめて間もない為理解していない部分も多く説明も至ってはいないと思いますが、どうかよろしくお願いします。

  • VB2005でExcelファイルを開く

    こんにちは。 VB2005の勉強をさせて頂いています。 ボタンを押すとコモンダイヤログを表示し、 ダイヤログ内で選択したExcelファイルの内容をフォームのDataGridViewにもって行きたいと思っていますが 上手くできません。一応現在のソースを下記に置いておきます。 特に、下記のソースの 'DataGridView1に展開 For i As Integer = 0 To xlSheet.Rows.Count - 1 DataGridView1.Rows.Add() DataGridView1.Item(0, i) = xlSheet.Rows.Item(i, 0) Next のループ条件xlSheet.Rows.Count - 1がどうも6万くらいになっているようなのですが、 実際セルに入力したデータは5行程度のものです。 1セル1セル文字が入っているかどうかを調べていかないといけないのでしょうか? よろしければ、具体的なソースやアドバイスをお願いいたします。 -------------------------------------- Dim ofd As New OpenFileDialog() 'ofdの設定をする 'ダイアログを表示し、戻り値が [OK] の場合は、選択したファイルを表示する If ofd.ShowDialog() = DialogResult.OK Then '選択されたファイルを読み取り専用で開く Dim ReadFile As System.IO.Stream ReadFile = ofd.OpenFile() If Not (ReadFile Is Nothing) Then Dim xlApp As New Excel.Application Dim xlBooks As Excel.Workbooks = xlApp.Workbooks '既存ファイルを開く場合 Dim xlFilePath As String = ofd.FileName Dim xlBook As Excel.Workbook = xlBooks.Open(xlFilePath) Dim xlSheets As Excel.Sheets = xlBook.Worksheets Dim xlSheet As Excel.Worksheet = xlSheets.Item(1) 'DataGridView1に展開 For i As Integer = 0 To xlSheet.Rows.Count - 1 DataGridView1.Rows.Add() DataGridView1.Item(0, i) = xlSheet.Rows.Item(i, 0) Next 'xlSheet の解放 'xlSheets の解放 'xlBook を閉じる 'xlBook の解放 'xlBooks の解放 'Excelを閉じる 'xlApp を解放 End If End If ofd.Dispose()

  • CSVファイルをMDBに取り込む

    お世話になります。 現在、在庫管理の簡易システムを作成しています。 環境は、下記の通りです。 言語:VB2005 DB:Access2003 AccessのテーブルにCSVの在庫データの取り込みを作成中ですが、下記のエラーが発生します。 「ファイル 'C:\Temp\HAS4PJ\HZaiko20090319160646.mdb' が見つかりませんでした。」 デバッグをすると、CSVのファイル名は確かに「ファイル名.csv」なのですが、 エラーで表示されるファイル名は、「ファイル名.mdb」と表示されます。 因みにソースは下記の通りです。 ------------------------------------ Dim csvNm As String Dim fbd As New FolderBrowserDialog Dim ofd As New OpenFileDialog With ofd .Title = "本社在庫取込" .FileName = "HZaiko*.csv" .FilterIndex = 1 .Filter = "CSVファイル(*.csv)|*.csv|すべてのファイル(*.*)|*.*" .Multiselect = False .InitialDirectory = Application.StartupPath & "\CSV\" If .ShowDialog = Windows.Forms.DialogResult.OK Then csvNm = .FileName Dim tfp As New FileIO.TextFieldParser(csvNm, System.Text.Encoding.GetEncoding(932)) MsgBox(csvNm) tfp.Delimiters = New String() {","} Dim Cnn As New OleDb.OleDbConnection(My.Settings.HAS4DBConnectionString) Dim Cmd As OleDb.OleDbCommand = Cnn.CreateCommand() Cnn.Open() Dim sSQL As String = "SELECT * FROM " & csvNm Dim dt As New DataTable Dim Da As New OleDb.OleDbDataAdapter(sSQL, Cnn) Da.Fill(dt) <--ここでエラー発生! 'objDa.SelectCommand = objCmd Da.Update(Me.HaS4DBDataSet1.t_wrkZaiko) End If End With ---------------------------------- 以上、情報をお持ちの方がいらっしゃいましたらよろしくお願いいたします。

  • VB2008 txtファイル保存

    こんにちは、Vb2008を勉強しています。 デスクトップに保存している、TXTファイルに、 フォームで入力したデータを追加保存したいと思い、ネットで調べたり…で 入力しましたが、txtファイルを開いてみると文字化けしてしまします。 Dim writer As System.IO.FileStream = _ System.IO.File.OpenWrite("C:\Users\Desktop\顧客管理.txt") 'SystemWriterオブジェクトを作成し、テキストデータが書き込めるようにする Dim sw As System.IO.StreamWriter = New System.IO.StreamWriter(writer) 'ファイルの末尾に移動する sw.BaseStream.Seek(0, System.IO.SeekOrigin.End) 'データを書き込む sw.WriteLine(TextBox1.Text & "," & TextBox2.Text & "," & TextBox3.Text) 'ファイルを更新する sw.Flush() 'ファイルを閉じる sw.Close() writer.Close() 上記の方法で文字化けだったので、またまた、調べて入力しましたが 今度は、改行されず…単純な、データの追加のようになってしまっています。 私は、新しい行に追加できるようにしたいです。 下のコードは文字コードの指定をしたので、保存はできますが、 改行されません。 Dim FileName As String = "C:\Users\Desktop\確認.txt" Dim Writer As IO.StreamWriter Dim Encode As System.Text.Encoding '文字コードにShiftJISを指定。 Encode = System.Text.Encoding.GetEncoding("Shift-JIS") '既に存在するテキストに追加する場合は第2引数をTrueにする。 Writer = New IO.StreamWriter(FileName, True, Encode) Writer.Write(TextBox1.Text & "," & TextBox2.Text) Writer.Close() どなたか、教えていただけませんでしょうか?

  • エクセルVBA ファイル名を変えながらtxtファイルに出力する方法

    エクセルVBA初心者です 名前/科目 国語 数学 英語 合計 A 53 45 12 110 B 58 59 74 191 C 80 69 58 207 D 45 97 66 208 E 35 85 53 173 F 89 13 79 181 このシート内容を一行ずつテキストファイルに出力したいと考えております。 ファイル名を 生徒A.txt のように生徒・セルの値にしたい場合はどのようにすればよいでしょうか? 分かる範囲で書いたものを載せました アドバイスよろしくお願いします。 Sub test1() Dim ken As Long Dim i As Integer Dim j As Integer Dim fn As Integer fn = FreeFile() ken = Range("a65536").End(xlUp).Row For i = 2 To ken Open "C:\■■■.txt" For Output As #fn For j = 1 To 5 Write #fn, Cells(i, j); Tab; Next j Print #fn, "" Close #fn Next i End Sub

  • VB ファイル保存

    XMLファイルに設定情報を保存仕様としているのですが,ある所でエラーが出てうまく走りません. 下記がそのプログラムになりますが,XMLファイルに保存のコメント下の所でエラーになります. エラーの内容は「保護レベルの設定が原因で'windowsApplication1.Form2'にアクセスできません」 です. どなたかご教示のほどよろしくお願いいたします. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 'ファイルが存在しない場合に新規にブランクファイルを作成する 'XMLファイルパス Dim xmlFile1 As String = "C:\OBS_Setting.xml" Dim hStream As System.IO.FileStream 'XMLファイルが存在するか確認 If Dir(xmlFile1) = "" Then ' 指定したパスのファイルを作成する hStream = System.IO.File.Create(xmlFile1) ' hStream が破棄されることを保証するために Try ~ Finally を使用する Try ' hStream が閉じられることを保証するために Try ~ Finally を使用する Try Finally ' 作成時に返される FileStream を利用して閉じる If Not hStream Is Nothing Then hStream.Close() End If End Try Finally ' hStream を破棄する If Not hStream Is Nothing Then Dim cDisposable As System.IDisposable = hStream cDisposable.Dispose() End If End Try End If 'XMLファイルに設定データを保存する Dim Area As String = ComboBox1.Text Dim State As String = ComboBox2.Text Dim City As String = ComboBox3.Text Dim BefY As String = ComboBox4.SelectedIndex Dim AftY As String = ComboBox5.SelectedIndex Dim BefM As String = ComboBox6.SelectedIndex Dim AftM As String = ComboBox7.SelectedIndex '保存するオブジェクトの配列を作成 '保存するオブジェクトの配列を作成 Dim myClasses(6) As SampleClass myClasses(0) = New SampleClass() myClasses(0).Number = 0 myClasses(0).Message = Area myClasses(1) = New SampleClass() myClasses(1).Number = 1 myClasses(1).Message = State myClasses(2) = New SampleClass() myClasses(2).Number = 2 myClasses(2).Message = City myClasses(3) = New SampleClass() myClasses(3).Number = 3 myClasses(3).Message = BefY myClasses(4) = New SampleClass() myClasses(4).Number = 4 myClasses(4).Message = AftY myClasses(5) = New SampleClass() myClasses(5).Number = 5 myClasses(5).Message = BefM myClasses(6) = New SampleClass() myClasses(6).Number = 6 myClasses(6).Message = AftM 'XMLファイルに保存 Dim serializer As New System.Xml.Serialization.XmlSerializer(GetType(SampleClass())) Dim fs1 As New IO.FileStream(xmlFile1, IO.FileMode.Create) serializer.Serialize(fs1, myClasses) fs1.Close() End Sub 'XMLファイルに保存するオブジェクトのためのクラス Public Class SampleClass Public Number As Integer Public Message As String End Class

  • 【VB2005】です。txtファイルを配列に読み込もうとしています。

    45*45のtxtデータを配列に読み込もうとしているのですが、エラーが出ます。なぜでしょうか? 宜しくお願いします。 【VB2005を使っています。】 Private Sub OpenButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenButton1.Click Dim selectButton As DialogResult Dim filename As String Dim i, j As Integer \'開く ダイアログの表示 selectButton = DBOpenDialog1.ShowDialog() filename = DBOpenDialog1.FileName If selectButton = Windows.Forms.DialogResult.OK Then Dim sr As System.IO.StreamReader = Nothing Dim readFields() As String i = 0 sr = New System.IO.StreamReader(filename, System.Text.Encoding.Default) Do Until sr.EndOfStream readFields = sr.ReadLine().Split(\",\") For j = 0 To 44 Tests1(i, j) = readFields(j) Next j i += 1 Loop sr.Close() End If End Sub

  • ファイル名が決まっていないファイルのデータを取り出しひとつのファイルにまとめる

    初めまして。 マクロ超初心者です。まだまだ勉強中でして自分で作るのは困難です。しかし、来月には必要なので… よろしくお願いします! エクセル2000で以下のマクロを作成したいです。 1.フォルダ内のCSVファイルを開き、中のデータをひとつにまとめる。 (フォルダ名とファイル名、ファイル数はその時によって変わってきます。ファイル数はだいたい10個くらいです。ひとつのデータは20列50行くらいで列の項目を基準にまとめたいです。) 2.列を1列目に挿入し、2列目と3列目のデータを1列目に統合する。 3.1列目のデータを使用し、重複を調べる。重複がある場合はどちらかひとつを削除する。(できれば4列目のデータを比較し数値が少ないほうを削除したいです。) ファイルを開くところまでは検索して探し当てたのですが、ファイル名が決まっていないことが難しく詰まってしまいます。 Sub OpenAllBooks() Dim filename As String Dim openedbook As Workbook Dim isbookopen As Boolean filename = Dir(ThisWorkbook.Path & "\*.csv") Do While filename <> "" isbookopen = False For Each openedbook In Workbooks If openedbook.Name = filename Then isbookopen = True Exit For End If Next If isbookopen = False Then Workbooks.Open (ThisWorkbook.Path & "\" & filename) End If filename = Dir() Loop End Sub 詳しい方よろしくお願いします!

  • VB2010 txtファイルとして保存をする方法

    度々、VBの質問をしています。学習中ですみません。 TextBoxに入力されている文字をテキストファイルとして保存したいのですが、 参考にしているテキストが、Imageファイルだったので途中から分からなくて… どのようにしたら良いのでしょうか? ’OKボタンがクリックされたときに 入力するコードをどなたか教えてください。 フォームにメニューを追加し、その下に名前を付けて保存を入力しています。 Private Sub 名前を付けて保存ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 名前を付けて保存ToolStripMenuItem.Click Dim sfd As New SaveFileDialog 'はじめに表示されるフォルダを指定する sfd.InitialDirectory = "C:\Users\○○\Desktop" '「ファイルの種類」に表示される選択肢を指定する sfd.Filter = "すべてのファイル(*.*)|*.*|テキストファイル(*.txt)|*.txt" '「テキストファイル」が選択されているようにする sfd.FilterIndex = 2 sfd.Title = "保存先のフォルダを選択してください。" sfd.RestoreDirectory = True 'ダイアログボックスを表示する If sfd.ShowDialog() = DialogResult.OK Then 'OKボタンがクリックされたとき End If

専門家に質問してみよう