| 
    
     |  | ▼たろー さん: >はじめまして。
 >
 >PL/SQLで作成したファイルを、
 >エクセルに取り込む際に、コメント行を削除した状態で
 >エクセルに一括取り込みを実施したいと思っています。
 >
 >ファイル取り込み処理は実現できたのですが、
 >コメント行の削除がどうしてもうまくできません。
 >(よい実装方法が思いつかない)
 >
 >どなたか効率よく実現できる方法ご存知ないでしょうか?
 >
 >ちなみに、下記の2種類のパターンを想定しています。
 > 1. --で始まる対象行(--〜改行コードまでの1行)
 > 2. /* 〜 */の間 (複数行に跨ぐ場合あり)
 >
 >よろしくお願いします。
 
 良く解らないけど?
 テクストファイルとして扱うとすれば、こんなので善いのかな?
 
 Option Explicit
 
 Public Sub Sample()
 
 Dim i As Long
 Dim dfn As Integer
 Dim vntFileName As Variant
 Dim strBuff As String
 Dim bytBuff() As Byte
 Dim strResult() As String
 
 vntFileName = Application.GetOpenFilename("全て (*.*),*.*")
 If VarType(vntFileName) = vbBoolean Then
 Exit Sub
 End If
 
 dfn = FreeFile
 Open vntFileName For Binary As dfn
 ReDim bytBuff(1 To LOF(dfn))
 Get #dfn, , bytBuff
 Close #dfn
 
 strBuff = StrConv(bytBuff, vbUnicode)
 Erase bytBuff
 
 DeleteData1 strBuff
 DeleteData2 strBuff
 
 strResult = Split(strBuff, vbCrLf)
 ActiveSheet.Range("A1").Resize(UBound(strResult) + 1) _
 = Application.WorksheetFunction.Transpose(strResult)
 
 MsgBox "処理が完了しました", vbInformation
 
 End Sub
 
 Private Sub DeleteData1(strData As String)
 
 '  1. --で始まる対象行(--〜改行コードまでの1行)
 
 Const cstrFind As String = "--"
 
 Dim i As Long
 Dim lngPos1 As Long
 Dim lngPos2 As Long
 
 lngPos1 = InStr(1, strData, cstrFind, vbBinaryCompare)
 Do Until lngPos1 = 0
 lngPos2 = InStr(lngPos1 + 1, strData, vbCrLf, vbBinaryCompare)
 If lngPos2 = 0 Then
 Exit Do
 End If
 strData = Left(strData, lngPos1 - 1) & Mid(strData, lngPos2)
 lngPos1 = InStr(1, strData, cstrFind, vbBinaryCompare)
 Loop
 
 End Sub
 
 Private Sub DeleteData2(strData As String)
 
 '  2. /* 〜 */の間 (複数行に跨ぐ場合あり)
 
 Const cstrFind1 As String = "/*"
 Const cstrFind2 As String = "*/"
 
 Dim i As Long
 Dim lngPos1 As Long
 Dim lngPos2 As Long
 
 lngPos1 = InStr(1, strData, cstrFind1, vbBinaryCompare)
 Do Until lngPos1 = 0
 lngPos2 = InStr(lngPos1 + 1, strData, cstrFind2, vbBinaryCompare)
 If lngPos2 = 0 Then
 Exit Do
 End If
 strData = Left(strData, lngPos1 - 1) & Mid(strData, lngPos2 + 2)
 lngPos1 = InStr(1, strData, cstrFind1, vbBinaryCompare)
 Loop
 
 End Sub
 
 
 |  |