Board logo

標題: [發問] 如何將TextBox轉成txt檔 [打印本頁]

作者: acdx    時間: 2013-11-12 10:22     標題: 如何將TextBox轉成txt檔

本帖最後由 acdx 於 2013-11-12 10:29 編輯

想要將TextBox1, TextBox2, TextBox3, TextBox4, TextBox5轉成txt檔存(Save)在某個路徑下
按下Save時可選擇儲存路徑
再將某個路徑下的txt檔中的數值讀進(Load)TextBox1, TextBox2, TextBox3, TextBox4, TextBox5
按Load時可選擇不同路徑下的txt檔
該如何寫呢?
[attach]16672[/attach]
作者: GBKEE    時間: 2013-11-12 11:24

本帖最後由 GBKEE 於 2013-11-12 13:39 編輯

回復 1# acdx
想要將TextBox1, TextBox2, TextBox3, TextBox4, TextBox5轉成txt檔存(Save)在某個路徑下 : -> TextBox內容是txt檔的名稱???
按下Save時可選擇儲存路徑                        :->顯示一個視窗,TextBox內容???
再將某個路徑下的txt檔中的數值讀進(Load)TextBox1, TextBox2, TextBox3, TextBox4, TextBox5 : -> TextBox內容是txt檔中的數值???
按Load時可選擇不同路徑下的txt檔                 :->顯示一個視窗,TextBox內容???
該如何寫呢?                                                  :->看的一頭霧水,請再清楚些
作者: acdx    時間: 2013-11-12 14:07

本帖最後由 acdx 於 2013-11-12 14:10 編輯

回復 2# GBKEE
按下Save時可選擇儲存路徑
        ->將TextBox1~TextBox5內容以行為單位依序排列寫入text file
             Ex: TextBox1=10, TextBox2=3, TextBox3=9.5, TextBox4=7, TextBox5=0.3
                   text file: 10
                                     3
                                  9.5
                                     7
                                  0.3
        ->顯示一個視窗: 可以選擇儲存路徑及命名

按Load時可選擇不同路徑下的txt檔
        ->顯示一個視窗: 可以選擇要開啟的text file
        ->將text file中以行為單位依序寫入TextBox1~TextBox5
Ex:
Private Sub CommandButton2_Click()
Dim txtFile As String
txtFile = Application.GetOpenFilename("文字文件,*.txt;*.txt")
If txtFile = CStr(False) Then
    MsgBox "No file was selected."
End If
將text file中以行為單位依序寫入TextBox1~TextBox5

End Sub
作者: GBKEE    時間: 2013-11-12 16:24

回復 3# acdx
如何SAVE還是看不懂.
  1. Option Explicit
  2. Private Sub CommandButton2_Click()
  3.     Dim txtFile As Variant, i As Integer
  4.     txtFile = Application.GetOpenFilename("文字文件,*.txt;*.txt", , "指令:Load", , True)
  5.     '參數 True :為 True 則允許選定多個檔案名稱,如果為 False 則只允許選定單個檔案名稱。預設值為 False。
  6.     'txtFile 沒選擇:型態= Boolean(非True 即 False),選擇:型態= Variant(),下限的索引值從1開始的陣列,
  7.     '*******************************************************************************
  8.     Debug.Print TypeName(txtFile)  '指令:檢視->即時運算視窗 可見  Debug.Print 的字串
  9.     '*******************************************************************************
  10.     If TypeName(txtFile) = "Boolean" Then
  11.         MsgBox "No file was selected."
  12.     Else
  13.         For i = 1 To 5
  14.             With Controls("textbox" & i)
  15.                 .Text = ""
  16.                 If i <= UBound(txtFile) Then .Text = txtFile(i)
  17.             End With
  18.         Next
  19.     End If
  20. End Sub
複製代碼

作者: acdx    時間: 2013-11-12 17:19

回復 4# GBKEE
我想達成的有2種功能:
功能1.將TextBox中數值轉存成.txt檔
使用者自行輸入數值後存檔成.txt檔 並可自行命名(Ex: Cn.txt)
[attach]16674[/attach]
開啟Cn.txt即出現TextBox1~TextBox5中數值
[attach]16675[/attach]

功能2.將已存在的.txt檔中數值載入表單中TextBox1~TextBox5
使用者點選"Load"開啟Cn.txt
[attach]16676[/attach]
即可載入數值
[attach]16677[/attach]
作者: GBKEE    時間: 2013-11-12 21:08

本帖最後由 GBKEE 於 2013-11-13 07:57 編輯

回復 5# acdx
試試看
  1. Option Explicit
  2. Private Sub CommandButton1_Click()  'Save
  3.     Dim txtFile As Variant, i As Integer, fs As Object
  4.     txtFile = Application.GetOpenFilename("文字文件,*.txt;*.txt", , "指令:Save", , False)
  5.     If TypeName(txtFile) = "Boolean" Then
  6.         MsgBox "No file was selected."
  7.     Else
  8.         Set fs = CreateObject("Scripting.FileSystemObject")
  9.         Set fs = fs.OpenTextFile(txtFile, 2, 0)
  10.         ' 參數 : 2
  11.         ' 1 開啟一個唯讀檔案,無法對此檔案進行寫入。
  12.         ' 2 開啟一個用於寫入的檔案。如果和此檔案同名的檔案已存在,則覆蓋以前內容。
  13.         ' 8 開啟一個檔案並寫輸出至檔案的尾部。
  14.         For i = 1 To 5
  15.             fs.WriteLine Controls("TEXTBOX" & i)
  16.         Next
  17.         fs.Close
  18.     End If
  19. End Sub
  20. Private Sub CommandButton2_Click() 'LOAD
  21.     Dim txtFile As Variant, i As Integer, fs As Object
  22.     txtFile = Application.GetOpenFilename("文字文件,*.txt;*.txt", , "指令:Load", , False)
  23.     If TypeName(txtFile) = "Boolean" Then
  24.         MsgBox "No file was selected."
  25.     Else
  26.         Set fs = CreateObject("Scripting.FileSystemObject")
  27.         Set fs = fs.OpenTextFile(txtFile, 1, 0)
  28.         For i = 1 To 5
  29.             Controls("TEXTBOX" & i) = fs.READLine
  30.         Next
  31.         fs.Close
  32.     End If
  33. End Sub
複製代碼

作者: acdx    時間: 2013-11-13 09:42

回復 6# GBKEE
現在Save部分需要先選擇開啟一個已存在的txt檔
希望能夠改成直接開啟一個新的txt檔而不是開啟一個已存在的txt檔再寫入覆蓋
作者: GBKEE    時間: 2013-11-13 10:26

回復 7# acdx
  1. Option Explicit
  2. Private Sub CommandButton1_Click()  'Save
  3.     Dim i As Integer, fs As Object
  4.     With Application.FileDialog(msoFileDialogSaveAs)
  5.         .Title = "Save"
  6.         .FilterIndex = 6    '2003 文件檔的選項
  7.         If .Show = -1 Then
  8.             Set fs = CreateObject("Scripting.FileSystemObject")
  9.             Set fs = fs.CreateTextFile(.SelectedItems(1), True)
  10.             ' 參數 : True
  11.             '表示一個已存在檔案是否可被覆蓋。如果可被覆蓋其值為 True,其為 False 時無法覆蓋。如果它被省略,則已存在檔案無法覆蓋。
  12.             For i = 1 To 5
  13.                 fs.WriteLine Controls("TEXTBOX" & i)
  14.             Next
  15.             fs.Close
  16.         Else
  17.             MsgBox "No file was selected."
  18.         End If
  19.     End With
  20. End Sub
複製代碼

作者: acdx    時間: 2013-11-13 11:25

回復 8# GBKEE
G大實在太強了!這完全是我未知的領域了
請問第7行中".Show=-1"代表什麼意思?
第9行中".SelectedItems(1)"代表什麼意思?

For i = 1 To 5
     fs.WriteLine Controls("TEXTBOX" & i)
Next
中i所代表的是txt檔中第幾行嗎?
如果我要改成TextBox3~TextBox7資料填進txt檔中的第1~5行是改成下面這樣嗎?
For i = 1 To 5
     fs.WriteLine Controls("TEXTBOX" & i+2)
Next
作者: GBKEE    時間: 2013-11-13 12:39

本帖最後由 GBKEE 於 2013-11-14 07:06 編輯

回復 9# acdx
  1. Option Explicit
  2. Sub Ex()
  3.     Dim i As Integer
  4.     With Application.FileDialog(msoFileDialogFilePicker)
  5.         .AllowMultiSelect = True
  6.         'AllowMultiSelect 屬性 請參閱套用至範例特定True 如果允許使用者從檔案對話方塊選取多個檔案。讀/寫 Boolean。
  7.    
  8.         'FileDialog 視窗有選擇檔案 .Show = True
  9.         'True       True 關鍵字的值等於 -1。
  10.         'False      False 關鍵字的值等於 0。
  11.         If .Show = True Then   
  12.         'If .Show <> 0 Then           '條件一樣
  13.         'If .Show Then                   '條件一樣
  14.         'If .Show = -1 Then            '條件一樣
  15.             For i = 1 To .SelectedItems.Count   '對話方塊選取多個檔案的個數
  16.                 MsgBox .SelectedItems(i)
  17.         
  18.             Next
  19.         Else
  20.             MsgBox "No file was selected."
  21.         End If
  22.     End With
  23. End Sub
複製代碼
中i所代表的是txt檔中第幾行嗎? 是Controls("TEXTBOX" & i)

fs.WriteLine   "字串"  ->  整行寫入檔案
  1. '也可以如此改
  2. For i = 3 To 7
  3.      fs.WriteLine Controls("TEXTBOX" & i)
  4. Next
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)