1364195654 質問です

別添マクロを参考にtxtに保存するときにjun1970とjun1996がうまくできません
うまくできるマクロはありますか

c:\test\のホルダーに複数のCSVファイルがあります
その中のデータのA列2行目から下記データがあります
CSVデータ
jun1970
jun1996
09055556666

結果TXTデータ
1970/06/01
1996/06/01
09055556666
以上の場合
jun1970
jun1996
がうまくできません何かマクロの変更でできますか?
参考マクロは別添にあります
よろしくお願いします

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/03/25 16:14:14
  • 終了:2013/03/26 17:30:39

ベストアンサー

id:taknt No.2

きゃづみぃ回答回数13537ベストアンサー獲得回数11982013/03/26 10:21:22

ポイント70pt

わかりました。jun1970のような形式の時に 日付に変わってしまうというのが 問題だったんですね。

csvImpの関数の箇所を 以下に変更してください。


Sub csvImp(csFName As String)

Const csDelimiter As String = ","

Dim FNo As Integer

Dim wsObj As Worksheet

Dim strGet As String

Dim lRowCnt As Long

Dim i As Long

FNo = FreeFile

If Dir(csFName) <> "" Then

    Open csFName For Input As #FNo
    Set w = Workbooks.Open(Filename:=csFName, UpdateLinks:=False, ReadOnly:=False)
    
    Set wsObj = Workbooks(w.Name).Sheets(1)
    lRowCnt = 1
    
    Do Until EOF(FNo)
    
        Line Input #FNo, strGet
        
        For i = LBound(Split(strGet, csDelimiter)) To UBound(Split(strGet, csDelimiter))
            wsObj.Cells(lRowCnt, i + 1).NumberFormatLocal = "@"
            wsObj.Cells(lRowCnt, i + 1) = Split(strGet, csDelimiter)(i)
    
        Next i
        
        lRowCnt = lRowCnt + 1
        
    Loop
    
    
    Close #FNo

End If

End Sub
他4件のコメントを見る
id:taknt

以前は、csvを読み込んだときに シートに取り込んでました。
これがセルを使用するやり方ですが、そういうよに セルにセットしないで
変数上に csvの中身を取り込んで処理する方式に変えたんです。
そうすれば、セルの制限から解放されますからね。

2013/03/26 17:21:34
id:inosisi4141

質問をあげてその方式で作っていただけますか?

2013/03/26 17:24:44

その他の回答(1件)

id:taknt No.1

きゃづみぃ回答回数13537ベストアンサー獲得回数11982013/03/25 16:26:45

ポイント30pt

どううまくいかないのかを 教えてください。

あと

csvImp (p & f)



'処理対象は 1番目のシートのみ。

csvImp (p & f)

の箇所は


csvImp (p & f)

だけでいいかと思います。

id:taknt No.2

きゃづみぃ回答回数13537ベストアンサー獲得回数11982013/03/26 10:21:22ここでベストアンサー

ポイント70pt

わかりました。jun1970のような形式の時に 日付に変わってしまうというのが 問題だったんですね。

csvImpの関数の箇所を 以下に変更してください。


Sub csvImp(csFName As String)

Const csDelimiter As String = ","

Dim FNo As Integer

Dim wsObj As Worksheet

Dim strGet As String

Dim lRowCnt As Long

Dim i As Long

FNo = FreeFile

If Dir(csFName) <> "" Then

    Open csFName For Input As #FNo
    Set w = Workbooks.Open(Filename:=csFName, UpdateLinks:=False, ReadOnly:=False)
    
    Set wsObj = Workbooks(w.Name).Sheets(1)
    lRowCnt = 1
    
    Do Until EOF(FNo)
    
        Line Input #FNo, strGet
        
        For i = LBound(Split(strGet, csDelimiter)) To UBound(Split(strGet, csDelimiter))
            wsObj.Cells(lRowCnt, i + 1).NumberFormatLocal = "@"
            wsObj.Cells(lRowCnt, i + 1) = Split(strGet, csDelimiter)(i)
    
        Next i
        
        lRowCnt = lRowCnt + 1
        
    Loop
    
    
    Close #FNo

End If

End Sub
他4件のコメントを見る
id:taknt

以前は、csvを読み込んだときに シートに取り込んでました。
これがセルを使用するやり方ですが、そういうよに セルにセットしないで
変数上に csvの中身を取り込んで処理する方式に変えたんです。
そうすれば、セルの制限から解放されますからね。

2013/03/26 17:21:34
id:inosisi4141

質問をあげてその方式で作っていただけますか?

2013/03/26 17:24:44

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません