精華區beta Office 關於我們 聯絡資訊
軟體:Excel 版本:2003 請教板上的強者大大們 若我手上有一堆.csv檔 其內部格式都是固定的 第三行的內容為(Notepad版本) Name,,"A090323.csv" 若我想在內部插入一字串變成 Name,,"A090323#20040632#.csv" 該使用何種方法呢?? 而且因此檔案是要拿來用程式轉檔用的 若直接用Excel開啟改變其內容 會使轉檔程式發生錯誤 所以只能用記事本開啟做更改 若我內部想要key in的資料都是相同的 (ex:都是插入#20040632#) 且檔案眾多 有何較佳的方式嗎?? 之前有想過用VBA的方式 但是不知道用Notepad開啟檔案與插入字串的語法 在此向各位大大請教該如何做呢?? @@ 在此先謝過了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.123.132.250
windknife18:這種程式不用VBA囉,到任何程式語言版(C#,JAVA,C,VB) 04/29 00:42
windknife18:都可以很快的有答案 04/29 00:43
windknife18:如果真的要VBA亦可,你第三行的資料插入的規則為?? 04/29 13:16
windknife18:是在 .csv 之前 加 #20040632# 嗎? 04/29 13:17
windknife18:如果可以擺兩個範例的前五行更好囉 ... 04/29 13:18
zeroexe306:就只是單純在.csv加入#20040632# 而已 04/29 20:22
zeroexe306:其實有想過直接取代.csv變成 #20040632#.csv 04/29 20:23
zeroexe306:但還在研究寫法 04/29 20:23
> -------------------------------------------------------------------------- < 作者: windknife18 (windknife18) 看板: Office 標題: Re: [算表] 如何在特定字串內插入所需之字串??---VBA 時間: Fri May 1 17:32:51 2009 我有想到類似這樣文字檔案的問題在 unix 系統只要一行指令就可以了, 所以用google找看看有沒有類似的,結果有找到了,看看可不可以用囉 首先安裝以下兩個免費的軟體! 第一個 sed http://gnuwin32.sourceforge.net/downlinks/sed.php 第二個 unixtodos 主要是輔助前一個軟體 http://www.sharewareconnection.com/download-unix2dos-from-sharecon.html 1.首先在c:\目錄下建立一個 tt 目錄 (為了處理方便的關係,可自己命名) 2.將要處理的資料全部copy到這個目錄 3.點選 windows 左下角的 「開始」->「執行」 4.在跳出來的視窗執行以下三行指令,用 copy & paste 就可以了 cd c:\tt path=%path;"c:\Program Files\GnuWin32\bin" sed -i "3 s/.csv/#20040632#.csv/g" *.* 5.關閉 dos 視窗 6.點選「桌面」 UnixtoDos 的程式(第二個軟體) 7.上放空白輸入 c:\tt (你要處理的目錄) 8.勾選右方的小方框 (表示要處理所有的檔案類型) 9.點選左下角的「Convert」即可 未來只要類似的問題都可以如此快速的解決 ... 至於 Sed 的用途 google 上非常多,尤其在文字的處理上, 以前在大型主機數萬筆檔案也是很快就解決了 .... ※ 引述《zeroexe306 ()》之銘言: : 軟體:Excel : 版本:2003 : 請教板上的強者大大們 : 若我手上有一堆.csv檔 其內部格式都是固定的 : 第三行的內容為(Notepad版本) Name,,"A090323.csv" : 若我想在內部插入一字串變成 Name,,"A090323#20040632#.csv" : 該使用何種方法呢?? : 而且因此檔案是要拿來用程式轉檔用的 : 若直接用Excel開啟改變其內容 會使轉檔程式發生錯誤 : 所以只能用記事本開啟做更改 : 若我內部想要key in的資料都是相同的 (ex:都是插入#20040632#) 且檔案眾多 : 有何較佳的方式嗎?? : 之前有想過用VBA的方式 但是不知道用Notepad開啟檔案與插入字串的語法 : 在此向各位大大請教該如何做呢?? @@ : 在此先謝過了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.229.78.168 ※ 編輯: windknife18 來自: 61.229.87.124 (05/01 17:52) > -------------------------------------------------------------------------- < 作者: windknife18 (windknife18) 看板: Office 標題: Re: [算表] 如何在特定字串內插入所需之字串??---VBA 時間: Fri May 1 22:25:19 2009 如果前一個方法不知如何使用,可以用以下 VBA 的方法,作用完全一樣, VBA的使用法請查詢之前的文章囉 ... Option Explicit Sub Macro1() Dim path As String Dim line As Integer Dim myFile Dim OriginalText As String, ReplaceText As String Dim myFso: Set myFso = CreateObject("Scripting.FileSystemObject") path = "c:\tt\" line = 3 OriginalText = ".csv" ReplaceText = "#20040632#.csv" Dim myfiles: Set myfiles = myFso.GetFolder(path).Files For Each myFile In myfiles Call ReplaceFileAtLine(path & myFile.Name, line, _ OriginalText, ReplaceText) Next MsgBox ("完成!") End Sub Sub ReplaceFileAtLine(myFile As String, line As Integer, _ OText As String, RText As String) Dim newData As String Dim index As Integer, index2 As Integer, count As Integer Dim pre As String, middle As String, last As String On Error Resume Next Dim objFSO: Set objFSO = CreateObject("Scripting.FileSystemObject") index = 1 Dim f1: Set f1 = objFSO.OpenTextFile(myFile) newData = f1.ReadAll While count < (line - 1) index = InStr(index, newData, Chr(13) & Chr(10)) index = index + 1 count = count + 1 Wend index2 = InStr(index, newData, Chr(13) & Chr(10)) pre = Left(newData, index) middle = Mid(newData, index + 1, index2 - index - 2) last = Mid(newData, index2) middle = Replace(middle, OText, RText) f1.Close Set f1 = objFSO.CreateTextFile(myFile) f1.Write pre & middle & last f1.Close End Sub ※ 引述《zeroexe306 ()》之銘言: : 軟體:Excel : 版本:2003 : 請教板上的強者大大們 : 若我手上有一堆.csv檔 其內部格式都是固定的 : 第三行的內容為(Notepad版本) Name,,"A090323.csv" : 若我想在內部插入一字串變成 Name,,"A090323#20040632#.csv" : 該使用何種方法呢?? : 而且因此檔案是要拿來用程式轉檔用的 : 若直接用Excel開啟改變其內容 會使轉檔程式發生錯誤 : 所以只能用記事本開啟做更改 : 若我內部想要key in的資料都是相同的 (ex:都是插入#20040632#) 且檔案眾多 : 有何較佳的方式嗎?? : 之前有想過用VBA的方式 但是不知道用Notepad開啟檔案與插入字串的語法 : 在此向各位大大請教該如何做呢?? @@ : 在此先謝過了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.229.87.124 #19-mPG5R