アプリ版:「スタンプのみでお礼する」機能のリリースについて

Access2013で、
指定の場所に置いてあるCSVファイルに対して、
「リンクテーブルを作成してソースデータにリンクする」設定にてテーブルを作成し、
このCSVファイルが更新されても最新の状態にてレポートを出力できるようにしています。

しかしこのCSVデータが作成される仕様により、1行目に余計な文字列、2行目に項目名、3行目以降にデータが入っているため、毎回CSVデータの1行目を削除する手作業が発生しています。
2行目以降をリンクするようにするとか、テーブルの3行目以降を取り出すクエリとか方法はありませんでしょうか?

A 回答 (2件)

>2行目以降をリンクするようにするとか、


>テーブルの3行目以降を取り出すクエリとか方法はありませんでしょうか?
D:\ナントカ\コントカ\オリジナル.csv
に余計な一行があったとして下記のコードを標準モジュールに作成し

Sub LineCut1()
Dim fSo As Object
Dim buf As Variant
Dim f As Object
Set fSo = CreateObject("Scripting.FileSystemObject")

With fSo.GetFile("D:\ナントカ\コントカ\オリジナル.csv").OpenAsTextStream
.SkipLine
buf = .readall
.Close
End With

Set f = fSo.OpenTextFile("D:\ナントカ\コントカ\オリジナル_改.csv", 2, True)
f.Write buf
f.Close
End Sub

出来た"D:\ナントカ\コントカ\オリジナル_改.csv"をリンクテーブルとさせればよいのでは?

オリジナル.csv が更新される都度実行する必要がありますが
>2行目以降をリンクするようにするとか、
CSVのようなテキストファイルでは無いかと。
>テーブルの3行目以降を取り出すクエリとか方法はありませんでしょうか?
一旦取り込んでからだとデータ型の変更などが必要になりそうなので
厄介です。

オリジナル.csv の使われ方がイマイチ不明なのですが
上記のSub LineCut1() を、 Function LineCut1() に改名して
autoexec マクロに
プロシージャの実行に、LineCut1()
としても良いかもですね。
    • good
    • 1

>>2行目以降をリンクするようにするとか、テーブルの3行目以降を取り出すクエリとか方法はありませんでしょうか?



Accessのことはほとんど忘れたので、何とも言えませんが、現在の取り込みのプログラム見ないと何とも言えません。

容易に考えるなら、ループ処理かけて取り込む。処理だったりするなら、1回目のループ飛ばせばいい。
とかなんですが、現状の構成が分からないとなんとも。


>>毎回CSVデータの1行目を削除する手作業が発生しています。

まぁ、でも、手作業が許されてるなら、わざわざ、今動いてるプログラムいじって、
「動かなくなる可能性」というリスクを背負う意味がない。


「CSVデータの一行目を削除する」という、バッチ処理でも、スクリプト作成して、実行するほうが、よっぽど楽かな。と思いますよ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A