初めましてお願いします。
ツールに入ってる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ファイルではなくエクセルファイルでやってみます。
またわからないことがありましたらお願い致します。
ありがとうございました。
ツイート | ![]() |