|
▼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の処理がどうしてもわかりません。
>お手数ですが、どなたかお力を貸してください。
|
|