Excel VBA質問箱 IV

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

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


5514 / 13645 ツリー ←次へ | 前へ→

【50352】csvの中の分数をExcelでそのまま表示するには? Hide 07/7/20(金) 16:59 質問[未読]
【50365】Re:csvの中の分数をExcelでそのまま表示... サボテン 07/7/21(土) 9:30 回答[未読]

【50352】csvの中の分数をExcelでそのまま表示...
質問  Hide  - 07/7/20(金) 16:59 -

引用なし
パスワード
   機械設計用のCADソフトから、図面の属性をCSVで出力するのですが、図面の縮尺は分数(1/1,1/2,1/3など)でかかれています。
csvデータを少し加工して、データベースに受け渡す際、Excelで処理するのですが、読み込んだとたん「1/2」が「1月2日」になってしまいます。
何とかする方法はないものでしょうか…

【50365】Re:csvの中の分数をExcelでそのまま表...
回答  サボテン  - 07/7/21(土) 9:30 -

引用なし
パスワード
   ▼Hide さん:
少し力技になってしまいますが、OPEN 〜 # ステートメントにて、1行ずつ
読み込んで、データの頭に「’」を付けて、「文字列化」していく方法があります。

簡単なコード例
Sub sub_csv読込test()
  Dim myFileName As String
  Dim myFileNum As Integer
  Dim mySTR As String
  Dim myDATA() As String
  Dim myLooP As Long
  Dim myRow As Long
  
  myFileName = "C:\Documents and Settings\user\デスクトップ\test.csv"
  
  myFileNum = FreeFile
  Open myFileName For Input As #myFileNum
  Do Until EOF(myFileNum)
    Line Input #myFileNum, mySTR
    myDATA = Split(mySTR, ",")  'データを「,」で区切る
    For myLooP = LBound(myDATA) To UBound(myDATA)
      '頭に「’」を付けてセルに記述
      ActiveCell.Offset(myRow, myLooP).Value = "'" & myDATA(myLooP)
    Next myLooP
    myRow = myRow + 1
  Loop
  
  Close #myFileNum
  
End Sub

こんな感じです。(ヘルプで「OPEN」を参照して下さい)

開くファイルをダイアログ指定化とか、
読み込み位置(上の例はアクティブセルを基準位置としてる)などを
もう少し作り込むとより使いやすくなるかと思います。

他にスマートなやり方もあるかもしれませんが、一応参考までに。

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