Board logo

標題: [發問] 文字檔以覆蓋或貼上方式匯入EXCEL指定欄位 [打印本頁]

作者: imp    時間: 2014-3-26 16:43     標題: 文字檔以覆蓋或貼上方式匯入EXCEL指定欄位

請問要將文字檔內容匯入至指定欄位中,因指定欄位皆有對應計算公式,故需要以貼上或覆蓋的方式匯入而不是以插入方式匯入資料(這樣後續計算公式會亂掉),請問下面內容要如何修改才能達成呢??
  1. Sub OpenFile()
  2. Dim strFilt As String
  3. Dim strTitle As String
  4. Dim strFname As Variant
  5. Dim i As Integer
  6. Dim strMsg As String

  7. strFilt = "文字檔案,*.txt,"
  8. strTitle = "打開Excel文件"
  9. strFname = Application.GetOpenFilename(FileFilter:=strFilt, Title:=strTitle, MultiSelect:=True)
  10. If Not IsArray(strFname) Then
  11. MsgBox "沒選擇文件!"
  12. Else
  13. For i = LBound(strFname) To UBound(strFname)
  14. strMsg = strMsg & strFname(i) & vbCrLf
  15. With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & strFname(i), Destination:=Range("$S$2"))
  16. .Name = "18"
  17. .FieldNames = True
  18. .RowNumbers = False
  19. .FillAdjacentFormulas = False
  20. .PreserveFormatting = True
  21. .RefreshOnFileOpen = False
  22. .RefreshStyle = xlInsertDeleteCells
  23. .SavePassword = False
  24. .SaveData = True
  25. .AdjustColumnWidth = True
  26. .RefreshPeriod = 0
  27. .TextFilePromptOnRefresh = False
  28. .TextFilePlatform = 950
  29. .TextFileStartRow = 1
  30. .TextFileParseType = xlDelimited
  31. .TextFileTextQualifier = xlTextQualifierDoubleQuote
  32. .TextFileConsecutiveDelimiter = False
  33. .TextFileTabDelimiter = True
  34. .TextFileSemicolonDelimiter = False
  35. .TextFileCommaDelimiter = False
  36. .TextFileSpaceDelimiter = False
  37. .TextFileColumnDataTypes = Array(1, 1)
  38. .TextFileFixedColumnWidths = Array(14)
  39. .TextFileTrailingMinusNumbers = True
  40. .Refresh BackgroundQuery:=False
  41. Columns("S:AG").Select
  42. Range("S2").Activate
  43. Selection.ColumnWidth = 3
  44. End With
  45. Next
  46. MsgBox "選擇的文件是:" & vbCrLf & strMsg
  47. End If

  48. End Sub
複製代碼

作者: huijuang    時間: 2014-3-28 10:51

  1. Sub test()
  2. '開啟test.txt的檔案
  3. Open "c:\temp\test.txt" For Input As #1
  4. i = 1
  5. Do While Not EOF(1)
  6. Input #1, a, b    '讀取test.txt的資料,註:這裡的資料每行只有2個資料,所以是只有a,b

  7. Range("a1").Offset(i - 1, 0) = a   '將資料放到a1開始以下
  8. Range("b1").Offset(i - 1, 0) = b   '將資料放到b1開始以下

  9. i = i + 1
  10. Loop

  11. Q:
  12. Close #1    '把test.txt關掉,這裡沒關的話,之後開啟會出現錯誤
  13. End Sub
複製代碼





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