[リストへもどる]
一括表示

投稿時間:2004/03/17(Wed) 11:40
投稿者名:one
Eメール:
URL :
タイトル:
書式(テキスト)を指定してファイル出力
はじめまして。one といいます。

Excelのマクロで1つ質問があります。

新規作成のExcelファイルにデータを出力するマクロを作っているのですが、
データを出力するときにデータが変換されてしまいます。

例えば、

30 NOVEMBER

を出力すると

30-Nov
※データ上は2004/11/30?

となります。


また

"""MOJI"""

の場合は

"MOJI"

となってしまいます。
※この場合、""MOJI"" か """MOJI""" のどちらかならば良いのですが。

何かよい方法があれば教えていただけると助かります。

よろしくお願いします。

投稿時間:2004/03/17(Wed) 11:58
投稿者名:one
Eメール:
URL :
タイトル:
補足
"""MOJI"""

を出力する場合に """MOJI""" か ""MOJI"" のどちらかならば良いというのは、
" で はさまれている文字を文字列の意味としてとらえるので、出来れば ""MOJI""
と出力してほしいのですが、もしもそのような出力が無理なのであれば、元のまま("""MOJI""")
出力でもかまいません。

"'MOJI"

というデータもあるのですが、この場合には、出来れば

'MOJI

と出力してほしいのですが、

MOJI

と出力されてしまいます。
(無理ならば "'MOJI" でも構いません。上の例と統一出来ていればOKです。)


いろいろ調べているのですが、時間がなさそうなので書き込むことにしました。

もし何かご存知でしたらよろしくお願いします。

投稿時間:2004/03/17(Wed) 12:40
投稿者名:とろ
Eメール:
URL :
タイトル:
Re: 補足
Excel ブック作成後、
シートの全セルの『表示形式』を
“文字列”にしてしまえば良いのでは?

さらに、
"""MOJI""" についてですけど、
コード上
Cell( , ).Value = """MOJI"""
のようにしていませんか?
この場合、 "MOJI" という文字列をあらわしていますよ。

投稿時間:2004/03/17(Wed) 13:36
投稿者名:one
Eメール:
URL :
タイトル:
早速ありがとうございます!
とろさん、回答ありがとうございます!

> Excel ブック作成後、
> シートの全セルの『表示形式』を
> “文字列”にしてしまえば良いのでは?

表示形式を文字列にしても、データ上 """文字列""" として保存できていないので、
""""文字列""" というように表示されません。

もしシート全体のセル(もしくは指定した範囲)を「文字列」にするやり方があれば
よいのですが・・・。(既存のExcelファイルではなく新規に作る場合です。)


> さらに、
> """MOJI""" についてですけど、
> コード上
> Cell( , ).Value = """MOJI"""
> のようにしていませんか?
> この場合、 "MOJI" という文字列をあらわしていますよ。

説明が不足してました。すみません。

コードで説明するとしたら、

A.Cells( , ).Value = B.Cells( , ).Value

となっていて、Aのファイルが新規に作成(出力)するファイルで、
Bのファイルが元となるデータが入っているファイルです。

Bのファイルのセルに """文字列""" というデータがあります。

投稿時間:2004/03/17(Wed) 14:13
投稿者名:one
Eメール:
URL :
タイトル:
サンプルソースです。
Cドライブ直下に in.txt というファイルを置き、そのファイルに

"""文字列"""

というデータを入力してください。

適当な新規Excelにボタンを作り、クリック時にこのソースを付け加えて
いただくと今問題になっているところがわかってもらえるかと思います。
(Cドライブ直下に out.xls というファイルが出力されます。)

現在も調べているんですが、なかなか良い方法が見つからず・・・です。

何か良い方法がありましたらよろしくお願いします。


Private Sub CommandButton1_Click()

    'Excel Bind
    Dim xlApp_Out   As Excel.Application
    Dim xlApp_In1   As Excel.Application

    Dim xlBook_Out  As Excel.Workbook
    Dim xlSheet_Out As Excel.Worksheet

    '出力ファイル
    Set xlApp_Out = CreateObject("Excel.Application")
    Set xlBook_Out = xlApp_Out.Workbooks.Add
    Set xlSheet_Out = xlBook_Out.Worksheets(1)

    '既存のファイル
    Set xlApp_In1 = New Excel.Application


    InputFilePath1 = "C:\in.txt"        '既存のファイル
    OutputFilePath = "C:\out.xls"       '出力ファイル


    '既存のファイルを読み込む
    xlApp_In1.Workbooks.OpenText FileName:=InputFilePath1, DataType:=xlDelimited

    '新規のExcelに出力
Debug.Print xlApp_In1.Cells(1, 1).Value
    xlSheet_Out.Cells(1, 1).Value = xlApp_In1.Cells(1, 1).Value

    '出力ファイルを保存する
    xlSheet_Out.SaveAs OutputFilePath

    'Excel Close
    xlApp_Out.Quit
    xlApp_In1.Quit

    'Object Free
    Set xlSheet_Out = Nothing
    Set xlApp_In1 = Nothing

End Sub

投稿時間:2004/03/19(Fri) 01:14
投稿者名:one
Eメール:
URL :
タイトル:
サンプルにて
akさん、回答ありがとうございました!

ただリリース後に回答を見たため、このサンプルを使えなかったのが残念です。
早速試してみたのですが、この方法だと上手く出力できることを確認しました。

区切り文字の処理なども変数の設定を変えるだけでしたし、分かりやすくて
勉強になりました。

一つだけ上手くいかなかったのが

12 March

のような中途半端な日付(年が無い日付)の出力が変換されてしまう点です。
(この場合は 2004/4/12 と出力されました)


一応、自分なりに考えた方法は新規のExcelファイルを出力するのではなく、
初めからExcelファイルを用意しておいて、そのファイルのシートの書式を
文字列で設定して、そのファイルに書き込む方法です。

新規にファイルを作るときに書式を設定する方法を見つけられたら良かったのですが、
とりあえずこの方法で対処しました。正直、ダサくてイヤだったんですけどね(笑)


akさんありがとうございました!

また何かあったらよろしくお願いします。


それでは!

投稿時間:2004/03/19(Fri) 17:14
投稿者名:one
Eメール:
URL :
タイトル:
書式の設定
akさんありがとうございました!

後ほど試してみます。


本当に助かりました!

投稿時間:2004/03/20(Sat) 08:18
投稿者名:one
Eメール:
URL :
タイトル:
本当にありがとうございました!
マクロの記録を見るっていう方法も知りませんでした。

このテクってかなり使えそうですね!

本当にありがとうござます。

また何かあったらよろしくお願いします。


それでは!