- PR -

ExcelでCSVファイルを開くとき

投稿者投稿内容
SE卵
大ベテラン
会議室デビュー日: 2004/10/22
投稿数: 135
投稿日時: 2005-01-26 09:36
yyyさん、ご返信ありがとうございます。

コード:
With lxlApp 
    .Workbooks.OpenText Filename:="C:/temp/test.csv",Tab:=True 
    lxlsBook = .ActiveWorkbook 
End With 



FileName:="" のところでコンパイルエラーになります。
エラー内容
"メソッドの引数は括弧で囲む必要があります。"

なので、.Workbooks.OpenText (Filename:="C:/temp/test.csv",Tab:=True)
にすると、先頭のセルにデータが繋がって表示されてしまいます。

申し訳ありませんが、よろしくお願い致します。
nana
会議室デビュー日: 2004/06/29
投稿数: 17
投稿日時: 2005-01-26 09:59
ぜんぜんまと外れだったらごめんなさい。

文章を読んでいると、tab区切りのデータをexcelで表示したい
という意図だと思ったのですが
吐き出す際のプログラム設定ではなく、表示後のexcelの設定で
tab区切り表示に切り替える、というのではだめでしょうか。

以下、excelの表示をtab区切りにする設定です。
●tab区切りに表示したいデータを選択。
 例:excelを表示して、A列(区切りたいデータ部分)を指定する
●「データ」→「区切り位置」を選択
●「カンマやタブなどの区切り文字によってフィールドごとに区切られたデータ(D)」
のラジオボタンにチェックが入っていることを確認して「次へ」
●区切り文字のチェックボックス:タブにチェックを入れる
「次へ」
●表示のデータ形式を選択し、
データのプレビュー画面ででそれを設定したい部分を
全選択し、「完了」ボタンを押せばOKです。

よろしければお試しください。m(_ _)m
nana@

[ メッセージ編集済み 編集者: nana 編集日時 2005-02-10 11:53 ]
SE卵
大ベテラン
会議室デビュー日: 2004/10/22
投稿数: 135
投稿日時: 2005-01-26 10:06
nanaさん、ご返信ありがとうございます。

nanaさんのおっしゃる通りにすると出来ますね。しかし、ユーザの操作は
一切入らず、プログラム側でやらなくてはいけないのです。説明不足でした
ね。申し訳ないです。貴重な情報ありがとうございました。

以上です。よろしくお願い致します。
Beatle
ぬし
会議室デビュー日: 2003/06/09
投稿数: 394
投稿日時: 2005-01-26 10:08
引用:

SE卵さんの書き込み (2005-01-26 09:36) より:

コード:

With lxlApp
.Workbooks.OpenText Filename:="C:/temp/test.csv",Tab:=True
lxlsBook = .ActiveWorkbook
End With



FileName:="" のところでコンパイルエラーになります。
エラー内容
"メソッドの引数は括弧で囲む必要があります。"




EXCELのバージョンとかが書かれていないのでどうかわかりませんが、
括弧記述でしかダメなら、

Call lxlApp.Workbooks.OpenText("C:\testtab.txt",,,,,,True)

でどうでしょうか?(VB6、Excel2000の環境で確認)
※Tabは第7引数では?

[ メッセージ編集済み 編集者: Beatle 編集日時 2005-01-26 10:09 ]
SE卵
大ベテラン
会議室デビュー日: 2004/10/22
投稿数: 135
投稿日時: 2005-01-26 10:34
Beatleさんご返信ありがとうございます。

コード:
Private Sub Command1_Click()
    Dim lxlsApp      As Object
    
    ''エクセルのアプリケーションオブジェクトを生成する。
    Set lxlsApp = CreateObject("Excel.Application")
    ''アプリケーションオブジェクトからブックオブジェクトを生成する。
    Call lxlsApp.Workbooks.OpenText("D:\temp\test.csv", , , , , , True)
    ''アプリケーションを表示する。
    lxlsApp.Visible = True
End Sub



バージョン
Excel2000の環境

VB6で上記コード試したところ、やはりデータが繋がって表示されてしまします。
なにかコードに間違いありますか?
yyy
常連さん
会議室デビュー日: 2004/01/27
投稿数: 33
投稿日時: 2005-01-26 10:42
With lxlsApp
.Workbooks.OpenText(filename:="C:/temp/test.txt",
   datatype:=Excel.XlTextParsingType.xlDelimited, Tab:=True)

lxlsBook = .ActiveWorkbook
End With

でやってみたところ、うまくいきました。多分、通常と同様にファイルの拡張子が「csv」の場合は、勝手にデリミタを判定し、「txt」場合はソースより指定出来るように見えます。
SE卵
大ベテラン
会議室デビュー日: 2004/10/22
投稿数: 135
投稿日時: 2005-01-26 11:17
yyyさん、度々どうもありがとうございます。

csvファイルはやはり、Excelとの関連付けがあるため、正常に動作してくれない
んですかね?困りました CSVファイルをExcelに読み込むだけなんですけど
カンマ区切りに変えるまたは、もしくはtxtファイルに変えるしか手はないのでし
ょうか?
Beatle
ぬし
会議室デビュー日: 2003/06/09
投稿数: 394
投稿日時: 2005-01-26 13:48
いっそ「外部データの取り込み」を使ってはどうでしょう?

コード:

    ''エクセルのアプリケーションオブジェクトを生成する。
    Set lxlsApp = CreateObject("Excel.Application")
    ''新規ワークブックを作成
    Set lxlsbk = lxlsApp.Workbooks.Add
    
    ''外部データ読込
    With lxlsbk.ActiveSheet.QueryTables.Add(Connection:="TEXT;C:D:\temp\test.csv", Destination:=lxlsbk.ActiveSheet.Range("A1"))
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = xlWindows
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1)
        .Refresh BackgroundQuery:=False
    End With

    lxlsApp.Visible = True




こんな感じで。
※不要なプロパティ等は見てませんので省略可能かと思います。

スキルアップ/キャリアアップ(JOB@IT)