Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


59719 / 76732 ←次へ | 前へ→

【21688】Re:csvからエクセルファイルへの貼り付けについて
発言  ichinose  - 05/1/26(水) 21:36 -

引用なし
パスワード
   ▼Aiz さん:
こんばんは。

>お世話になります。
>csvファイルを読み込んで、エクセルファイルに貼り付ける処理で疑問ができましたので、質問します。
>まずデータから
>Aという処理を行うときに出力されるH.csvには4つのタイプが存在します。
csvファイルというのですから、本来は(メモ帳等で開くと)、
>(1)東京    現像
↑ 東京,現像
>(2)東京     ←後ろが空白
↑ 東京,
>(3)      現像  ←前が空白
↑ ,現像
>(4)         ←どちらも空白
↑  , 

となっているはずなんですが・・・。
メモ帳等を使用して開いて確認して下さい。
で、(2)、(3)、(4)で「ファイルにこれ以上データがありません」というエラーが発生する
ことから想像すると、
(2)は、東京
(3)は、現像
(4)は、空白
となっていることが考えられますが・・・・。

これ、H.cvsというファイルは、Excelでcsv形式で保存しているのですか?

例えば、
    A     B
1 (未入力)   現像

というセルB1のみにデータ設定されたシートをCSV形式で保存しても
 ,現像
とはなりません。

現像

となってしまいます。

解決方法としては、
ひとつは、
 読込を
 Openステートメントでオープン
 Inputステートメントで読込
という手順で行っていますよね。
 csvの作成も
 OPENステートメントでオープン
 Print # ステートメントで書き込み(カンマ区切りで)

というようにご自分でCVS形式のファイルを作成する方法。

もうひとつは、

    A     B
1 (未入力)   現像
2  END     END

というように2行目(データの最終行)にダミーのデータを入れておいて
Excelでcsv形式で保存する。

この場合、
1行目は、
,現像
となります。

なんて方法が思いつきましたが・・・・。
検討してみて下さい。


>
>ソースはこちらで...↓
>Const csv1 = "H.csv"
>Const csv2 = "B.csv"
>
>Sub Auto_Open()
>  Dim fname As String
>  Dim fno As Integer
>  Dim col(0 To 18) As Variant
>  Dim i As Integer
>  Dim sts As String
>  
>  'ファイル名
>  fname1 = ActiveWorkbook.Path & "\" & csv1
>  fname2 = ActiveWorkbook.Path & "\" & csv2
>  
>  'CSVファイルの内容を貼り付ける(ヘッダ部)
>  fno = FreeFile
>  On Error GoTo file_not_found
>  Open fname1 For Input As #fno
>  On Error GoTo 0
>  If EOF(fno) = False Then
>    '一旦String型で受けてVariant型に入れなおす
>    For i = 0 To 1
>      Input #fno, sts
>      col(i) = sts
>    Next
>    
>    Range(Cells(2, 19), Cells(2, 20)).Value = col
>  End If
>  Close #fno
>  
>(中略)
>  
>  Exit Sub
>  
>End Sub
>
>現状のソースでは(1)の場合は処理が正常に行われるのですが、(2)、(3)、(4)の場合「ファイルにこれ以上データがありません」というエラーが表示されます。
>これはAの処理の場合でして、Bの処理では最初からH.csvに1つしかデータがないものもあります。
>  
>  If EOF(fno) = False Then
>    '一旦String型で受けてVariant型に入れなおす
>    Input #fno, sts
>    col(0) = sts
>    
>    Cells(2, 6).Value = col(0)
>  End If
>
>Bのようにデータが1つしか存在しない処理の場合は↑のような書き方で処理が行われる(値が入っていないときもエクセルファイルには空白のままで出力してくれる)のですが、Aの処理がどうしてもわかりません。
>お手数ですが、どなたかお力を貸してください。

0 hits

【21684】csvからエクセルファイルへの貼り付けについて Aiz 05/1/26(水) 19:08 質問
【21686】Re:csvからエクセルファイルへの貼り付けについて りすりす 05/1/26(水) 20:59 発言
【21689】Re:csvからエクセルファイルへの貼り付けについて Aiz 05/1/26(水) 21:46 発言
【21688】Re:csvからエクセルファイルへの貼り付けについて ichinose 05/1/26(水) 21:36 発言
【21699】解決 Aiz 05/1/27(木) 14:03 お礼

59719 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free