推 windknife18:這種程式不用VBA囉,到任何程式語言版(C#,JAVA,C,VB) 04/29 00:42
→ windknife18:都可以很快的有答案 04/29 00:43
推 windknife18:如果真的要VBA亦可,你第三行的資料插入的規則為?? 04/29 13:16
→ windknife18:如果可以擺兩個範例的前五行更好囉 ... 04/29 13:18
→ 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