人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

1364195654
●拡大する

●質問者: inosisi
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● きゃづみぃ
●30ポイント

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

あと

csvImp (p & f)



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

csvImp (p & f)

の箇所は


csvImp (p & f)

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


2 ● きゃづみぃ
●70ポイント ベストアンサー

わかりました。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

inosisiさんのコメント
ありがとうございます おかげさまで直りました、助かりました。 ただスピードが遅くなった感じがします jun1970のような形式の時に 日付に変わってしまうというのが 問題だったんですね。 このような jun1970 データをあらかじめ探して事前に 1970/06/01 のようにならないよう対策を立てたいのですが なにか方法があれば質問をあげたいのですが よろしくお願いします

inosisiさんのコメント
セルは文字列にはなっています

きゃづみぃさんのコメント
>のようにならないよう対策を立てたいのですが セルを文字列にするしかないですよね。 ほかはセルを使用しない方法とか。 あまりにもこういうのが多いので、私が最近回答しているものは、セルを使用しないやり方をとっています。

inosisiさんのコメント
>セルを使用しないやり方をとっています。 の意味がわかりません

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

inosisiさんのコメント
質問をあげてその方式で作っていただけますか?
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ