OpenOfficeBasicで漢字が表示できない

このQ&Aのポイント
  • CSVファイルを読み込んだ際に、OpenOfficeBasicでセットしたCELL内の漢字が文字化けしてしまう問題が発生しています。
  • 設定に問題がある可能性がありますが、実際の原因はわかりません。
  • 使用しているOSはCentOS 5で、OpenOffice.org 3のLinux版を利用しています。
回答を見る
  • ベストアンサー

OpenOfficeBasicで漢字が表示できない

OpenOfficeBasicで、CSVファイルを読み、CELLにセットしていくと漢字が文字化けしてしまいます。 何かの設定がおかしいと思いますが、わかりません。 よろしくご教授ください。 OSはCentos5です。 OpenOffice.org3 Linux用を使っています。 マクロの内容は以下の通りです。 sub csvinput dim document as object document = ThisComponent.CurrentController.Frame dim FileNo As Integer dim data As String dim File As String Filename = "/var/webapps/doc/test/nippou.csv" FileNo = Freefile Open Filename For Input As FileNo Do While not eof(FileNo) dim args2(0) as new com.sun.star.beans.PropertyValue args2(0).Name = "StringName" Input #FileNo, data args2(0).Value = data Loop Close #FileNo endsub

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

#実際のcsvファイルをアップロードして(バイト単位で知りたいから質問側に書き写してはダメ)質問してくれてたら嬉しかったなーと思いつつ。 #全然別のやり方のコードを書き始める俺。当方環境Windows XP SP3なので動くかは不明。 https://cid-b89cb784f5346675.office.live.com/self.aspx/TestCase/Q6646746/Q6646746-1.zip

Horirin39
質問者

お礼

お礼が遅くなりました。 大変参考になりました。 ありがとうございました。

関連するQ&A

  • CSVから構造体へ代入

    お世話になります。 Private Type TestRecord Col1 As String * 255 Col2 As String * 255 Col3 As String * 255 End Type Sub ボタン1_Click() Dim FName As String Dim FileNo As Integer Dim LineData As String Dim TestRec() As TestRecord FileNo = FreeFile '選択したファイル名の取得 FName = Application.GetOpenFilename("CSV ファイル (*.CSV),*.CSV") If FName = "False" Then Exit Sub End If Open FName For Input As #FileNo Do Until EOF(FileNo) i = i + 1 Line Input #FileNo, LineData ReDim TestRec(i) TestRec() = Split(LineData, ",") Debug.Print buf Loop Close #FileNo End Sub ファイルの中身 "テストID1","テスト姓1","テスト名1" "テストID2","テスト姓2","テスト名2" 以上のコードを実行するとTestRec() =~の部分で型が一致しません とエラーが出てしまいます。 よき解決方法があれば教えてください。宜しくお願いします。

  • エクセルに二つのテキストファイルをインポートしたい

    エクセルのsheet1の1行目にタイトルがあります。 ボタンのクリックイベントで、テキストファイル2つをインポートしたいのですが。 ・テキストファイルの名前は、固定ではありません ・テキストファイルの保存先は、デスクトップで、ファイルの選択は自分でしたい ・テキストファイルの一行目は、タイトル行なので、二行目以降をインポートしたい 行数は固定ではありません ・タブ区切りです 複数選択はできなく、1ファイルでタイトル行も含めるのであれば下記コードできたのですが。 どなたか、ご教示いただけますでしょうか・・・・ よろしくお願いいたします。 ----------------------------------------------------- Sub ReadTextFile() 'タブ区切りファイルを全て文字列として読み込む Dim FileName As String Dim i As Long Dim Cnt As Long Dim Buf As Variant Dim FileNo As Integer Dim SplitString As Variant 'ファイルダイアログを表示 FileName = Application.GetOpenFilename("テキストファイル,*.txt") If FileName <> "False" Then '全セル選択して書式を文字列にセットする Cells.Select Selection.NumberFormatLocal = "@" Cells(1, 6).Select '空いているファイル番号を取得 FileNo = FreeFile() Buf = Space(FileLen(FileName)) 'ファイルを開いてbufに1行読み込み ' → タブで配列に分割 ' → セルに書き出し Open FileName For Input As #FileNo Do Until EOF(FileNo) Line Input #FileNo, Buf Cnt = Cnt + 1 SplitString = Split(Buf, vbTab) For i = 0 To UBound(SplitString) Cells(Cnt, i + 1) = SplitString(i) Next i Loop Close #FileNo Else End If End Sub -----------------------------------------------------

  • Excelで作成されたCSVのVBでの読み込み

    いつもお世話になっております。 Excel2K、2002を使用しております。 Excelで作成されたCSVファイルをVBAで読み込もうと、以下の関数を作成しました。 Public Function CsvRead(ByVal FileName As String)   Dim IntFileNum As Integer 'ファイル番号   Dim TmpStr As String '   IntFileNum = FreeFile   Open FileName For Input As #IntFileNum 'CSVファイルのオープン   Do Until EOF(IntFileNum)     Input #IntFileNum, TmpStr     '     '~その他の処理~     '   Loop   Close End Function その他の処理中で特定の列に対し、特殊な処理を行う必要があるのですが ExcelでCSVファイルを作成する場合、16行単位でカンマの変動が起こりえますので、 http://support.microsoft.com/default.aspx?scid=kb%3Bja%3B400253 正確な列が取れません。 そこで1行読み込んでカンマで分解すればよいかと思い、 以下のように読み込んでみたのですが、、   Dim TmpStr() As String '   Dim LineStr As String   IntFileNum = FreeFile   Open FileName For Input As #IntFileNum 'CSVファイルのオープン   Do Until EOF(IntFileNum)     Line Input #IntFileNum, LineStr     TmpStr = Split(LineStr, ",")     '     '~その他の処理~     '   Loop 値にカンマが存在する場合も区切ってしまうので これも正しく取れませんでした。 値のカンマは区切り文字として判定せず、 正しく値を取得するにはどのようにすればよいでしょうか。 上記のことをふまえた判定をすべて行うしかないでしょうか。 ご教授のほど、よろしくお願いいたします。

  • EXCEL2007のVBAを使って、テキストファイルを読み込んで別のテ

    EXCEL2007のVBAを使って、テキストファイルを読み込んで別のテキストファイルを作って書き込むというコードを書きましたが、新しく出来たテキストファイルの末尾に、もともとのファイルには無かったスペースが追加されてしまいます。 原因と対策を教えて頂きたいです。 ------------------------------------------------------- Dim FileName1 As String Dim FileName2 As String Dim FileNumber1 As Integer Dim FileNumber2 As Integer Dim Data As String FileName1 = Application.GetOpenFilename("Text Files (*.txt), *.txt") FileName2 = Application.GetSaveAsFilename(, "Text Files (*.txt), *.txt") Data = Space(FileLen(FileName1)) FileNumber1 = FreeFile Open FileName1 For Binary As #FileNumber1 Get #FileNumber1, , Data Close #FileNumber1 'この間に"Data"内容を処理するコードを入れる予定 FileNumber2 = FreeFile Open FileName2 For Binary As #FileNumber2 Put #FileNumber2, , Data Close #FileNumber2 ------------------------------------------------------- このコードで1284バイトのテキストを読み込ませると末尾にスペースが追加されて1918バイトになってしまいました。 "Data"の内容を表示させてもスペースはなく、Len関数で大きさを調べても1284バイトです。

  • VB5でCSVデータをAccess97のDBへセット

    普段はVB.NETの開発をすこししているのですが VB5のプログラムの修正の依頼が来て困っています。 CSVのデータをVB5でAccess97のDBへデータセットしたいのですが VB.Netでは同様のプログラムを作成した事があるのですが VB5は全然仕様が違うので困っています。 VB5でCSVを読み込んで配列にセットするにはどのように したらいいのでしょか?CSVを行で読み込むところは なんとか調べてわかりましたが、VB5ではSplitや配列が使えそうに ないのでどのようにしたらいいのかわかりません。 よろしくお願いします。 現在のソース Dim strTextLine As String Dim strTxtDat As String intFileNo = FreeFile Open "c:\infile.csv" For Input As #intFileNo Do While Not EOF(intFileNo) Line Input #intFileNo, strTextLine Loop Close #intFileNo

  • ファイルを読み込んだらVBがフリーズする

    ↓のコードだと、ファイルを読み込んだ時点でVBがフリーズします(平気なファイルも一部ある)。原因と解決法を教えてください。 Private Sub Command1_Click() CommonDialog1.Filter = "テキスト(*.txt)|*.txt|すべて(*.*)|*.*" CommonDialog1.FilterIndex = 1 CommonDialog1.Flags = cdlONFileMustExist CommonDialog1.CancelError = True On Error Resume Next CommonDialog1.ShowOpen If (Err = 0) Then FileRead CommonDialog1.FileName End If On Error GoTo 0 End Sub Private Sub FileRead(FL As String) Dim FileNo As Integer Dim strDAT As String Dim strELM As String Dim pot1 As Integer, pot2 As Integer Dim pDB1 As Integer, pDB2 As Integer FileNo = FreeFile() Open FL For Input As #FileNo While Not EOF(FileNo) Line Input #FileNo, strDAT strDAT = strDAT & ":" pot1 = InStr(strDAT, ":") While pot1 > 0 strELM = Left(strDAT, pot1) pot2 = InStr(strELM, "OPEN") While pot2 > 0 pDB1 = InStr(strELM, Chr(&H22)) If pDB1 > 0 Then '前の『"』の位置 pDB2 = InStr(pDB1 + 1, strELM, Chr(&H22)) If pDB2 > 0 Then RichTextBox1.Text = RichTextBox1.Text & _ Mid(strELM, pDB1 + 1, pDB2 - pDB1 - 1) & vbCrLf End If End If pot2 = InStr(pDB2 + 1, strELM, "OPEN") Wend strDAT = Mid(strDAT, pot1 + 1) pot1 = InStr(strDAT, ":") Wend Wend Close #FileNo End Sub

  • ループを違う条件で抜けるようにしたい

    ファイルを読み込み、OPEN "*.*"(*=ワイルドカード)という文字列の*.*のみをリッチテキストボックスに出力するプログラムです。今のままだと、OPEN "ABC"+"Z.txt" などのように" "が同じ行(違う行にある" "は無視してよい)に2個以上あっても、最初の" "(この場合は"ABC"に"."が無いので、ABCは出力しなくて良いが、Z.txtは出力したい)で条件を抜けてしまいます。VBの初心者で、どうループを変えたらよいのかわからないので、どなたか教えてください。 Private Sub FileRead(FL As String) Dim Fileno As Integer 'ファイル番号 Dim strdat As String '行データ Dim pot1 As Integer '『OPEN』の位置 Dim pDB1 As Integer '1つ目の["] Dim pDB2 As Integer '2つ目の["] Dim dt As String Fileno = FreeFile Open FL For Input As #Fileno 'フォルダをセットする While Not EOF(Fileno) Line Input #Fileno, strdat '行データを読み込む pot1 = InStr(UCase(strdat), "OPEN") While (pot1 > 0) pDB1 = InStr(pot1 + 1, strdat, Chr(&H22)) If (pDB1 > 0) Then pDB2 = InStr(pDB1 + 1, strdat, Chr(&H22)) If (pDB2 > 0) Then dt = Mid(strdat, pDB1 + 1, pDB2 - pDB1 - 1) If (InStr(dt, ".")) Then '["]の間に[.]があるか RichTextBox1.Text = RichTextBox1.Text & dt & vbCrLf End If pot1 = pDB2 '2つ目の["] Else pot1 = pDB1 '1つ目の["] End If End If pot1 = InStr(pot1 + 1, strdat, Chr(&H22)) Wend Wend Close Fileno End Sub

  • VBAにより作成した関数の返り値をセル内で改行したいのですが、どうした

    VBAにより作成した関数の返り値をセル内で改行したいのですが、どうしたら良いのでしょうか? Private Function txtdate(filepass As String) Dim fileNo As Integer Dim count As Integer Dim outline As String Dim buf fileNo = FreeFile Open filepass & ".txt" For Input As #fileNo ' Do Until EOF(fileNo) Line Input #fileNo, buf If count = 0 Then outline = outline & buf MsgBox outline Else outline = outline & vbLf & buf MsgBox outline End If count = count + 1 Loop Close #fileNo txtdate = outline End Function このような形でテキストファイルの中身を読み込んでセルに反映させるという事をおこないたいのですが、テキストの内容が2行以上の場合、帰ってくる値に改行を入れたいと思っております。 17行目にそれらしくvblfを追加したのですがセルに上手く反映されません。msgboxで確認したところmsgboxでは問題無く改行が反映されているようなのですが… エクセルセル内で「=txtdate("適当なテキストファイルのパス名")」という形で関数を呼び出しています。 どなたか対処法教えていただければ幸いです。よろしくお願い致します。

  • UTF8で作成されたHTMLファイルの表示について

    WebBrowserをフォームに貼り付け、次のようなコードを記載してたのですが、表示が文字化けしてしまいます。どうすればよいでしょうか? Private Sub Form_Load() Dim html As String Dim pDoc As Object html = ReadFileData("UTF8.html") Set pDoc = New MSHTMLCtl.HTMLDocument WebBrowser1.Navigate "about:blank" Set pDoc = WebBrowser1.Document pDoc.writeln html Set pDoc = Nothing End Sub Public Function ReadFileData(ByVal FileName As String) As String Dim bytArray() As Byte Dim intFileNo As Integer Dim lngFileLenB As Long lngFileLenB = FileLen(FileName) ReDim bytArray(lngFileLenB - 1) intFileNo = FreeFile Open FileName For Binary As #intFileNo Get #intFileNo, , bytArray Close #intFileNo ReadFileData = StrConv(bytArray, vbUnicode) End Function 環境:VB6+WinXP

  • VB6 「Line Input」でのリークについて

    VB6での「Line Input」命令使用時のメモリリークについて教えて下さい。 1分毎に3600行のCSVファイルを読み込むプログラムを作成しています。  (CSVファイルは1行500文字程度) 以下の【パターン1】は作成したプログラムの1部ですが、 (1)を3600回ループ時にパフォーマンスモニタでの「Private Bytes」が増加してしまいます。   (1ループ毎に増加せず、数十回ループする毎に増加します。) 試しに【パターン2】を作成し、CSVファイルはオープンのみ行い、 読み込みは行わずに、500文字の文字列が入った変数をコピーした場合は、 「Private Bytes」は増加しません。 基本的に違いは(1)と(2)の箇所だけなのですが、 「Line Input」命令の使用方法などで間違っている箇所があるのでしょうか? ご存知の方、教えて下さい。お願いします。 【パターン1】 Private Sub read_Timer() Dim i As Long Dim CsvDataBuf(3600) As String 'CSV読込み変数 Dim FP As Integer 'ファイル番号 (省略) : FP = FreeFile Open "C:\test.csv" For Input As #FP i = 0 Do While Not EOF(FP) And i <= (3600 - 1) Line Input #FP, CsvDataBuf(i)     ←(1) i = i + 1 Loop Close #FP : (省略) 【パターン2】 Private Sub read_Timer() Dim i As Long Dim CsvDataBuf(3600) As String 'CSV読込み変数 Dim tempBuf As String Dim FP As Integer 'ファイル番号 (省略) : tempBuf = "~500文字の文字列~" FP = FreeFile Open "C:\test.csv" For Input As #FP i = 0 Do While Not EOF(FP) And i <= (3600 - 1) CsvDataBuf(i) = tempBuf       ←(2) i = i + 1 Loop Close #FP : (省略)