Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7931 / 13644 ツリー ←次へ | 前へ→

【36011】構造体を使用したテキストファイル出力っ... かわうそ 06/3/18(土) 18:13 質問[未読]
【36012】Re:構造体を使用したテキストファイル出力... Hirofumi 06/3/18(土) 18:39 回答[未読]
【36013】Re:構造体を使用したテキストファイル出力... Hirofumi 06/3/18(土) 18:42 回答[未読]
【36014】Re:構造体を使用したテキストファイル出力... かわうそ 06/3/18(土) 19:24 お礼[未読]

【36011】構造体を使用したテキストファイル出力っ...
質問  かわうそ  - 06/3/18(土) 18:13 -

引用なし
パスワード
   VBA初心者です。
どなたかご教授願います!m(_~_)m

構造体を使って値をセットし、ファイルに出力しようとしたところ、
Printのトコで'型が一致しません'のコンパイルエラーになってしまいます。
出力データは構造体の要素を1本につなげた形にしたいのですが・・・
要素一つ一つをまた別の変数にセットして1本にしないと出来ないのでしょうか?
構造体は引数としても使用しているのですが、
その使用意味がわからなくなってしまいました (T0T)

一応、抜粋したソースです。↓
  Type KOUZOU           '実際、要素の数は50〜100位あります
    DKBN   As String * 1
    ID1   As String * 10
    ID2   As String * 10
    YMD   As String * 8
    RUN   As String * 4 
  End Type

  Dim My_Kouzou As KOUZOU
  Dim TEXTFILE  As String
  Dim TXT    As Integer

  TEXTFILE = "D:\xxxxx.txt"
  TXT = FreeFile
  Open TEXTFILE For Output As #TXT
  
  My_Kouzou.DKBN = Trim(Sheet1.Range("A" & Iy).Value)
  My_Kouzou.ID1 = Trim(Sheet1.Range("B" & Iy).Value) & Space(2)
  My_Kouzou.ID2 = Trim(Sheet1.Range("C" & Iy).Value) & Space(5)
  My_Kouzou.YMD = Trim(Sheet1.Range("D" & Iy).Value)
  My_Kouzou.RUN = Trim(Sheet1.Range("E" & Iy).Value) 

  Print #TXT, My_Kouzou    '← ココでエラーです
  Close #TXT

どうか、よろしくお願いします!!

【36012】Re:構造体を使用したテキストファイル出...
回答  Hirofumi  - 06/3/18(土) 18:39 -

引用なし
パスワード
   問題が色々有るので私は、使わないけど?
(忘れているので上手く行かなかったらゴメン)
構造体を使って、出力するならRandomモードで出力したら?

Option Explicit

  Type KOUZOU           '実際、要素の数は50〜100位あります
    DKBN   As String * 1
    ID1   As String * 10
    ID2   As String * 10
    YMD   As String * 8
    RUN   As String * 4
    CrLf   As String * 2 '追加
  End Type

Public Sub Sample()

  Dim My_Kouzou As KOUZOU
  Dim TEXTFILE  As String
  Dim TXT    As Integer

  TEXTFILE = "D:\xxxxx.txt"
  TXT = FreeFile
  Open TEXTFILE For Random As #TXT Len = Len(KOUZOU)
  
  With My_Kouzou
    .CrLf = vbCrLf '追加
    .DKBN = Trim(Sheet1.Range("A" & Iy).Value)
    .ID1 = Trim(Sheet1.Range("B" & Iy).Value) & Space(2)
    .ID2 = Trim(Sheet1.Range("C" & Iy).Value) & Space(5)
    .YMD = Trim(Sheet1.Range("D" & Iy).Value)
    .RUN = Trim(Sheet1.Range("E" & Iy).Value)
  End With

  Put #TXT, , My_Kouzou   '← ココでエラーです
  
  Close #TXT
  
End Sub

【36013】Re:構造体を使用したテキストファイル出...
回答  Hirofumi  - 06/3/18(土) 18:42 -

引用なし
パスワード
   ゴメン間違った

'  Open TEXTFILE For Random As #TXT Len = Len(KOUZOU)

は間違いで

  Open TEXTFILE For Random As #TXT Len = Len(My_Kouzou)

此方が正解

【36014】Re:構造体を使用したテキストファイル出...
お礼  かわうそ  - 06/3/18(土) 19:24 -

引用なし
パスワード
   Hirofumi さん

どうもありがとうございました!
うまくいきましたっっ!!

感涙(T▽T)

また困った時はよろしくお願いします♪

7931 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free