初めましてお願いします。
ツールに入ってるLogファイルを出力するとExcelファイルにデータが
いくようになってるのですが、
その後Excelファイルを開いてみるとセルの幅が狭く、
調節したいのですが今までVBAの方で作業をしていたので
エラーばかりでて何を使っていいのかよくわかっていません。
Private Sub cmdPrint_Click()    'ファイル出力ボタンを押した時
    Dim FilPath As String       '' ファイルのパス用
    Dim FileName As String
    Dim FileNbr As Integer
    Dim FileBuff As String
    Dim LogFileName As String
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    
    LogFileName = App.Path
    
    DlgCommon2.DialogTitle = "出力ファイルの選択"
    DlgCommon2.FileName = lblName.Caption & ".xls"
    DlgCommon2.Filter = "Excel゛(*.xls)|*.xls|全てのファイル(*.*)|*.*"
    
    '' ファイルダイアログボックスの表示
    DlgCommon2.ShowOpen
    FileName = DlgCommon2.FileName
    
    'ファイルが存在する場合は上書きを確認する
    If Dir(FileName) <> "" Then
        If MsgBox("ファイルを上書きしてもよろしいですか?", _
             vbExclamation + vbYesNo) = vbNo Then
            Exit Sub
        End If
    End If
    
    FileNbr = FreeFile
    Open FileName For Output As #FileNbr          'ファイルオープン
    
    Print #FileNbr, "解析ログファイル名:", LogFile
    Print #FileNbr, "ログ日付:", LogDate
    Print #FileNbr, "機器名称:", lblName.Caption
    Print #FileNbr, ""
    Print #FileNbr, "Index" & vbTab & "時刻" & vbTab & "SEND" & vbTab & "RECV"
'    Print #FileNbr, "Index" & vbTab & "時刻" & vbTab & "通信" & vbTab & "SEND" & vbTab & "RECV"
    
    For i = 0 To AIndex - 1
        FileBuff = AnaDispData(i).AnaIndex
        FileBuff = FileBuff & vbTab & AnaDispData(i).AnaTime
'        FileBuff = FileBuff & vbTab & AnaDispData(i).AnaType
        FileBuff = FileBuff & vbTab & Chr(&H22) & AnaDispData(i).AnaSend & Chr(&H22)
        FileBuff = FileBuff & vbTab & Chr(&H22) & AnaDispData(i).AnaRecv & Chr(&H22)
        Print #FileNbr, FileBuff
    Next
    
    Close #FileNbr                                'ファイルクローズ
    
Exit Sub
ErrHandler:                                         '[キャンセル]
    Exit Sub
End Sub
よろしくお願いしますm(__)m
ソースを見る限り、エクセルファイルは作成されていませんが、
それは分かっていますか?
作成されているのはタブ区切りのテキストファイルです。
いわゆるTSVファイルですね。
[TSVとは]
http://e-words.jp/w/TSV.html
拡張子は既定されてないものの、エクセルのファイルではないので、
(*.xls)で扱うのは良くないと思います。エクセルの保存ダイアログ
でもテキスト(タブ区切り)の拡張子は(*.txt)となっていると思います。
また、TSVファイルに列幅を記憶する機能はありませんから、TSVファイル
を作成するのが目的であれば、列幅を設定することは不可能です。
本当のエクセルファイル(.xls)に変換する、もしくはVBでファイルを
開き、その開いたファイルの列幅を変更するのならできると思います。
ただし、もしエクセルファイルに変換してしまうと、変換後のファイルを
TSVファイルとして扱うことはできません。(テキストファイルとしては
正常に読めない情報が書込まれます)
何をしたいのかが分かりませんので回答できません。
そのあたりを整理してから質問し直してください。
特攻隊長まるるうさん、返信ありがとうございます。
出力ボタンを押したらエクセルの保存ダイアログが出て、
エクセルファイルで開けれるのでエクセルファイルが
作成されているのだと思っていました。
>本当のエクセルファイル(.xls)に変換する、もしくはVBでファイルを
>開き、その開いたファイルの列幅を変更するのならできると思います。
本当のエクセルファイルに変換したいです。
幅を調節した後、エクセルのVBAで編集したいと思っているので。
よろしくお願い致します。
> 本当のエクセルファイルに変換したいです。
> 幅を調節した後、エクセルのVBAで編集したいと思っているので。
それだと、TSVファイルを作る意味が無いですよね?
最初から Excel オブジェクトを操作すればいいと思います。
参照設定をして、後は[Excel VBA]と同じ命令を呼び出します。
[VBレスキュー(花ちゃん)]
http://hanatyan.sakura.ne.jp/index.html
の左フレームから
[VB6.0関係]-[Excel・Word関係]
http://hanatyan.sakura.ne.jp/vbhlp/excelframe.htm
がよくまとまっていると思います。
過去ログ検索『Excel』『エクセル』などでもたくさん情報は
引っ掛かるはずです。
> 出力ボタンを押したらエクセルの保存ダイアログが出て、
> エクセルファイルで開けれるのでエクセルファイルが
> 作成されているのだと思っていました。
テキストファイルのほうが(必要な情報が少ない分)サイズが
小さくなります。また、既に運用されているシステムの場合、
他のプログラムがTSVファイルとして処理している場合が
あります。
上記のようにTSVファイルにする意味がある場合、本当の
エクセルファイルとして保存することにより、不具合と
なってしまいます。
TSVファイルを開いた時点で、編集側のVBAがセル幅を調整
しても良いはずですから、仕様をよく検討しておいてください。
特攻隊長まるるうさん、ありがとうございます。
いろいろ調べてTSVファイルではなくエクセルファイルでやってみます。
またわからないことがありましたらお願い致します。
ありがとうございました。
| ツイート | 
        
         |