戻る  □一般操作のサロン  □ 使用方法  □ 新着記事  □ 新規に質問する!  □ トピック一覧  □ 検索  □ 過去ログ
[ 最新記事及び返信フォームをトピックトップへ ]
このトピック参照回数 :
VBAでテキストファイルを開きたいです。

    [191973] VBAでテキストファイルを開きたいです。-

    ■親トピック/記事引用/メール受信=OFF■

    □投稿者/ otsuka -(2020/05/15(12:34))
    □U R L/
      vba 初心者です。
      ユーザーフォームでコマンドボタンを作成して、
      .txtファイルをExcelで開くプログラムを作成しましたが、
      文字化けをしてしまいます。
      解決方法を教えて頂きたいです。
      <取込む.txtファイル中身のデータです。文字化けします。>
      "abc","abc","abc"・・・・・・・
      <Excelでタブ区切りで.txtに保存し、そのファイルを取り込むと成功します。>
      
      Private Sub importButton_Click()
          
          Dim txtName As String
          txtName = Application.GetOpenFilename("テキストファイル,*.txt")
          
          If txtName <> "False" Then
              Open txtName For Input As #1 
          End If
          
          Dim r As Long
          r = 4 '4行目から書き出す
          
          Do Until EOF(1) 
          
              Dim buf As String
              Line Input #1, buf 
              
              Dim aryLine As Variant 
              aryLine = Split(buf, vbTab) 'vbTabはTab文字を表します。ココをいろいろなものに変更してやりましたが、上手く行きません。
              
              Dim i As Long
              For i = LBound(aryLine) To UBound(aryLine) 
                  Cells(r, i + 1) = aryLine(i)
              Next
              
              r = r + 1   
          Loop
          
          Close #1 
          
          MsgBox "終了しました。"
          
          Unload 傭車料入力     'ユーザーフォームを閉じる。
            
      End Sub
      
      全く別のソースコードでも良いので解決方法を教えて下さい。
      
      お手数ですが、よろしくお願いいたします。


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他



      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [191977] Re[1]: VBAでテキストファイルを開きたいです。-

    記事引用/メール受信=OFF■

    □投稿者/ 下書き退助 -(2020/05/15(14:29))
    □U R L/

      テキストファイルの文字コードが Shift_JIS でない
      とか?




    [191980] Re[2]: VBAでテキストファイルを開きたいです。-

    記事引用/メール受信=OFF■

    □投稿者/ otsuka -(2020/05/15(17:38))
    □U R L/

      ご連絡ありがとうございます。
      テキストファイルの文字コードは、UincodeとUTF-8の出力が可能です。
      詳しくないのであまりわかりませんが、
      ご対応をよろしくお願い致します。


      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [191985] Re[3]: VBAでテキストファイルを開きたいです。-

    記事引用/メール受信=OFF■

    □投稿者/ γ -(2020/05/15(20:10))
    □U R L/
       データ リボン にある
      - 外部データの取り込み
      - テキストファイル
      を使うと、対象ファイルの文字コードを指定できます。
      これを利用してはどうですか?
      
      まずはマクロ記録をとって、
      必要な修正をするとコード作成につなげられます。
      トライしてみて下さい。




    [191988] Re[4]: VBAでテキストファイルを開きたいです。-

    迷宮入りorほかあたって見ます・・ / 記事引用/メール受信=OFF■

    □投稿者/ otsuka -(2020/05/16(00:21))
    □U R L/

      ご連絡ありがとうございます。
      やはりマクロ記録で無いとダメですか・・・。
      他の方法や質問の修正はできませんか?
      マクロの場合、最初にファイルを選択したい、
      (GetOpenFilename)を出したいのですが、どの様なプログラムを書いたら良いですか?
      お手数をお掛けしますが、ご対応をよろしくお願いします。


      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [191989] Re[5]: VBAでテキストファイルを開きたいです。-

    記事引用/メール受信=OFF■

    □投稿者/ γ -(2020/05/16(06:01))
    □U R L/
      マクロ記録を誤解されているように思います。
      
      最初から最後までマクロ記録の結果で作業して、
      他のものを使っていけないなどと申し上げていません。
      部分部分で利用するというのがマクロ記録活用の基本です。
      
      (1)マクロ記録すれば、
      Sub Macro1()
          With ActiveSheet.QueryTables.Add(Connection:= _
              "TEXT;D:\MyDocuments\202005\test.txt", Destination:=Range("$A$1"))
              .Name = "test"
              .FieldNames = True
              .RowNumbers = False
         (以下省略)
      などといった記録がされると思います。
      
      (2)
      ファイル指定は、今のコードをそのまま活かして、
      
          Dim txtName As String
          txtName = Application.GetOpenFilename("テキストファイル,*.txt")
      
          With ActiveSheet.QueryTables.Add(Connection:= _
              "TEXT;" & txtName, Destination:=Range("$A$4"))  '■ファイル名、読み込み先を修正
              .Name = "test"
              .FieldNames = True
              .RowNumbers = False
         (以下省略)
      のように組みあわせることができます。(処理キャンセル部分あえて省略)
      
      (3)
      今、障害になっているポイントは、多分、テキストファイルの"文字コード"でしょう。
      もしテキストファイルがUTF-8であれば、それを指定する入力項目がありますから話は簡単です。
      マクロ記録では、
              .TextFilePlatform = 65001
      などと記録され、それをそのまま使うだけです。文字化けはしません。
      
      (4)
      Line input # ステートメントでは、文字コード指定はできません。
      古くからあるものですから、そうした対応は考慮されていません。
      
      上記の方法がダメというなら、
      UTF-8を指定してテキストファイルを読み込む方法があります。
      ADODB.Streamを利用する方法です。
      例えば、下記の記事が参考になるでしょう。
      
      「文字化けよさようなら!エクセルVBAでUTF-8のCSVを読み込む方法」
      ht tps://tonari-it.com/vba-csv-utf8/
      (スペースをとってください。セキュリティの関係でこう書かざるを得ないので)
      
      (5)
      ただ、今の方式のように直接データをシートに書き付けると、例えば001が1と解釈されてしまったり、
      日付でないものが日付と解釈されたりと、予期せぬデータ変換がなされることがあります。
      その点、既にあげた.QueryTables.Addを使用する方法では、列ごとの表示形式を指定できたり、
      小回りが利きます。サービスレベルは上だと思います。
      上記(4)のADODB.Streamを使ったものよりも簡単だろう、結局は早くゴールすることができるだろうと思い、
      それ(QueryTables.Add方式)をお薦めした次第です。
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [192000] Re[6]: VBAでテキストファイルを開きたいです。-

    解決!!ありがとうございました! / 記事引用/メール受信=OFF■

    □投稿者/ otsuka -(2020/05/16(16:10))
    □U R L/

      ご連絡ありがとうございます。
      大変わかりやすくご回答頂き、初心者の私にも理解する事が出来ました。
      VBAを学び初めて行き詰まり、
      今回、はじめて掲示板へ投稿をさせて頂きました。
      ご解説がとても丁寧で満足しております。
      ありがとうございます!
      次回もご利用させて頂きたいと思います。
      月曜日から仕事の為、その際に使用をさせて頂きます。
      本当に感謝申し上げます。



このトピック内容の全ページ数 / [0]

このトピックに書きこむ
Name/
E-Mail/

└>このツリーのレス記事をメールで受信しますか? YES/ NO/
Title/
URL/
Comment/ 通常モード->  図表モード-> (←の場合適当に改行を入れて下さい)
タグが使用できます。例 ⇒ <font color="blue">文字</font>
解決!!ありがとうございました! 解決       保留中です・・・ 保留        迷宮入りorほかあたって見ます・・ 迷宮入       すいませ〜ん。誰か〜! Help! ←※回答者専用
解決したらチェック       保留(コードテスト中など・・)         解決不可orレスが全く付かなくてほかのサイトに行くときなど・・
削除キー/
(半角8文字以内) 


- Child Forum -
Edit:ゆう-G