Board logo

標題: [發問] 修改另存的檔案內容,將其內容覆蓋先前的內容 [打印本頁]

作者: a703130    時間: 2012-3-21 21:46     標題: 修改另存的檔案內容,將其內容覆蓋先前的內容

請問各位前輩們

小弟現在有個問題想請教

如附件

小弟做一個表格, 按一個鈕 "Covert to INI" 便會匯出一個ini檔

現在我如果修改ini檔裡面的數值
請問我要如何做能夠在excel 中按下 "Data In",將我原本匯出修改好的 ini 再放進Excel 相同位置呢??

[attach]10087[/attach]
作者: Hsieh    時間: 2012-3-21 22:24

本帖最後由 Hsieh 於 2012-3-21 22:35 編輯

回復 1# a703130

你的主要功能是要讀取Test.ini檔案內容到Test工作表的A:C欄嗎?
還是要寫入工作表DATA的E欄的值?
以寫入Data工作表E欄為例
  1. Sub ghost()
  2. Set d = CreateObject("Scripting.Dictionary")
  3. fs = ThisWorkbook.Path & "\Test.ini"
  4. r = 1
  5. Open fs For Input As #1
  6. Do While Not EOF(1)    ' 執行迴圈直到檔尾為止。
  7.     Line Input #1, TextLine    ' 讀入一行資料並將之指定給變數。
  8.     ar = Split(TextLine, Chr(9)) ' 寫入陣列。
  9.     If ar(1) = "" Then
  10.        mystr = ar(0)
  11.        Else
  12.        d(mystr & ar(0)) = ar(2)
  13.     End If
  14. Loop
  15. Close #1    ' 關閉檔案。
  16. With Sheets("Data")
  17.    For Each a In .Range(.[D2], .[D2].End(xlDown))
  18.        mystr = "[" & Application.Lookup("龘", .Range(.[B2], a.Offset(, -2))) & "]"
  19.        a.Offset(, 1) = d(mystr & a)
  20.     Next
  21. End With
  22. End Sub
複製代碼

作者: a703130    時間: 2012-3-22 14:55

回復 2# Hsieh

主要是以填入E欄的值
目的是在於當我按鈕匯出ini後

我可以直接修改ini內的值

修改完之後 當我開啟Excel 按下第二個按鈕

他便會將原本Excel內的value 對照前面的Name後修改成ini 內的值
作者: a703130    時間: 2012-3-22 20:09

回復 2# Hsieh

小弟按著書上所教的方式開檔
也都可以修改

但是...我來回按了幾次按鈕之後
我發現我ini 的值,前後都多了"

不知道是什麼問題????

原本的 ini
  1. [Test1]               
  2. A        =        100
  3. B        =        200
  4. C        =        300
  5. D        =        400
  6. E        =        500
  7. F        =        600
  8. A        =        100
  9. B        =        200
  10. C        =        300
  11. D        =        400
  12. E        =        500
  13. F        =        600
複製代碼
轉換之後的 ini
  1. "[Test1]                ]"               
  2. "A        "        =        "        100"
  3. "B        "        =        "        200"
  4. "C        "        =        "        300"
  5. "D        "        =        "        400"
  6. "E        "        =        "        500"
  7. "F        "        =        "        600"
  8. "A        "        =        "        100"
  9. "B        "        =        "        200"
  10. "C        "        =        "        300"
  11. "D        "        =        "        400"
  12. "E        "        =        "        500"
  13. "F        "        =        "        600"
複製代碼
我的Excel檔案
[attach]10104[/attach]
作者: Hsieh    時間: 2012-3-22 22:47

回復 4# a703130
  1. Sub SaveToINI()                             '另存為 ini 檔
  2. Open ThisWorkbook.Path & "\Test.ini" For Output As #1
  3. With Sheet2
  4. For Each a In .Range(.[A1], .[A65536].End(xlUp))
  5.       mystr = Join(Application.Transpose(Application.Transpose(a.Resize(, 3).Value)), Chr(9))
  6. Print #1, mystr
  7. Next
  8. End With
  9. Close #1
  10.     Sheets("Data").Select
  11. End Sub
複製代碼

作者: a703130    時間: 2012-3-23 10:32

回復  a703130
Hsieh 發表於 2012-3-22 22:47




這方法是可行的,但是來回做個幾次之後
ini 檔格式便亂了...

另外我想請問是為什麼會造成這種原因??
作者: Hsieh    時間: 2012-3-23 14:11

回復 6# a703130

    不懂所謂格式會跑掉是甚麼意思
我試了沒這情形
[attach]10109[/attach]
作者: a703130    時間: 2012-3-26 13:47

回復 7# Hsieh

抱歉H大~重新確認後是對的
我可能複製錯東西

我想請問~為什麼我的寫法會造成
轉檔時多兩個 "" ??




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