C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 102 を表示中)
■60924 / )  Re[1]: CSVの書き換え
□投稿者/ 風太郎 (34回)-(2011/07/26(Tue) 13:14:14)
No60922 (ITB5259 さん) に返信
> OS ウインドウズ7
> エクセル 2007
>
> 今 VBA でコードを作成しています。
> 友人がVBなのでVBに移行の可能性が有ります。
> 下記コードはVBAのコードですが、VBで下記の事が可能でしょうか
>
>
>
> 下記解析データで
> MEMBER の4-9列を0又は1に変更する事が目的です。0か1かは計算でだします。
> コンピュータ会社に確認したところ、カンマの数は全て下記のまま必要との事
>
> 下記コードはデータがない場合全てカンマをなくすコードになっています。
> 現状のままカンマを残しMEMBER の4-9列を0又は1に変更する事ができないでしょうか
>
>
> ** 解析データ **
> -------------------------------------------------------------------------------
> START Windows 8.00
> TITLE
> "例題2-曲線ばり(Ex-002)"
> CONTROL
> 0,0,0, 4,9.80665, 5
> M-CONTROL
> 1 , 1 , 0 , 0 , 0 , 0
> 0 , 0 , 0 , 5 , 80
> 1 ,2.0,1.1,60,2000
> 1 ,2.0,1.1,2.0,0.2,60
> 0 , 1 , 1 , 1 ,20,15, 1 ,,150
> 0 , 1 , 1 , 1 ,20,15,1.0,1.0
> NODE
> 1,0.0,0.0,0.0,, 0,0.0,0.0,,0.0,
> 2,0.0,1.0,0.0,, 0,0.0,0.0,,0.0,
> 3,0.,0.9914448609,.13052619583,, 0,0.0,0.0,,0.0,
> 4,0.,0.9659258244,.25881905214,, 0,0.0,0.0,,0.0,
> 5,0.,0.9238795283,.38268344246,, 0,0.0,0.0,,0.0,
> 6,0.,0.8660253965,0.5000000126,, 0,0.0,0.0,,0.0,
> 7,0.,0.7933533292,0.6087614435,, 0,0.0,0.0,,0.0,
> 8,0.,0.7071067657,0.7071067966,, 0,0.0,0.0,,0.0,
> 9,0.,0.6087614088,0.7933533558,, 0,0.0,0.0,,0.0,
> 10,0.,0.4999999748,0.8660254184,, 0,0.0,0.0,,0.0,
> 11,0.,0.3826834021,0.923879545,, 0,0.0,0.0,,0.0,
> 12,0.,0.2588190099,0.9659258357,, 0,0.0,0.0,,0.0,
> 13,0.,0.1305261525,0.9914448666,, 0,0.0,0.0,,0.0,
> 14,0.0,0.0,1.0,, 0,0.0,0.0,,0.0,
> BOUNDARY
> 1,""
> 2,1,1,1,1,1,1,,,,,,
> MATERIAL
> 1,20.0E+10,7.6923E+10,,,,""
> M-MATERIAL
> 1 ,21, 4 , 13 , 4 , 10 , 4 , 13 , 4 , 10 , 4 ,1,1,1,1,15
> SECTION
> G1, 1,1,1,0.02,0.02,,,,,1.2,1.2,,,,,0,0,,,,,""
> MEMBER
> 1, 2, 3,0,0,0,0,0,0,G1, 0,0,,,,,,,,,,,,,,,,,,
> 2, 3, 4,0,0,0,0,0,0,G1, 0,0,,,,,,,,,,,,,,,,,,
> 3, 4, 5,0,0,0,0,0,0,G1, 0,0,,,,,,,,,,,,,,,,,,
> 4, 5, 6,0,0,0,0,0,0,G1, 0,0,,,,,,,,,,,,,,,,,,
> 5, 6, 7,0,0,0,0,0,0,G1, 0,0,,,,,,,,,,,,,,,,,,
> 6, 7, 8,0,0,0,0,0,0,G1, 0,0,,,,,,,,,,,,,,,,,,
> 7, 8, 9,0,0,0,0,0,0,G1, 0,0,,,,,,,,,,,,,,,,,,
> 8, 9, 10,0,0,0,0,0,0,G1, 0,0,,,,,,,,,,,,,,,,,,
> 9, 10, 11,0,0,0,0,0,0,G1, 0,0,,,,,,,,,,,,,,,,,,
> 10, 11, 12,0,0,0,0,0,0,G1, 0,0,,,,,,,,,,,,,,,,,,
> 11, 12, 13,0,0,0,0,0,0,G1, 0,0,,,,,,,,,,,,,,,,,,
> 12, 13, 14,0,0,0,0,0,0,G1, 0,0,,,,,,,,,,,,,,,,,,
> AI-LOAD
> 0,0,1.0,2,0.2,0.0, 0
> LOAD-DEFINITION
> 1,0,0,0,"",0
> F-NODE
> 14,100.0,,,,,
> CALCULATION-CASE
> 1,"解析ケース1",1,0, 1,1.0, 0,, 0,, 0,, 0,, 0,, 0,, 0,, 0,, 0,
> STOP
>
> -----------------------------------------------------------------
> ** データ書出し ** 下記コード VBA
>
> Option Explicit
>
> Sub CSV_Write()
>
> Dim FileType, Prompt As String
> Dim FileNamePath As Variant
> '**************************************************************************
> ' メモ
> ' PRN で引き込んだエクセルの表をこのエクセル→csvで変換できる。
> '**************************************************************************
>
> Dim StartRow, StartColumn, Max_Row, Max_Column As Integer
> Dim Rowcnt, Columncnt As Integer
> Dim UsedCell As Range
>
> Dim ch1 As Long
>
> '**************************************************************************
>
>
> FileType = "CSV ファイル (*.dat),*.dat"
>
> Prompt = "保存するファイルの名前を付けてください"
> '保存するファイルのパスを取得します
> FileNamePath = SaveFileNamePath(FileType, Prompt)
>
> If FileNamePath = False Then 'キャンセルボタンが押された
> Exit Sub
> End If
>
>
> ch1 = FreeFile '空いているファイル番号を取得します
> Open FileNamePath For Output As #ch1 'FileNamePath のファイルをオープンします
>
> Set UsedCell = ActiveSheet.UsedRange '使用しているセルの取得
>
> StartRow = 1
> StartColumn = 1
> Max_Row = UsedCell.Rows.Count
>
> With UsedCell
> For Rowcnt = StartRow To Max_Row
> '各行に就いて最終行取得
> Max_Column = .Cells(Rowcnt, .Columns.Count + 1).End(xlToLeft).Column - .Column + 1
> For Columncnt = StartColumn To Max_Column - 1
> Print #ch1, CStr(.Cells(Rowcnt, Columncnt).Value) & ",";
> Next Columncnt
> Print #ch1, CStr(.Cells(Rowcnt, Columncnt).Value)
> Next Rowcnt
> End With
>
> Close #ch1 'ファイルを閉じます
>
> Set UsedCell = Nothing
>
> End Sub
>
> Function SaveFileNamePath(FileType, Prompt) As Variant
> SaveFileNamePath = Application.GetSaveAsFilename _
> (ActiveSheet.Name, FileType, , Prompt)
> End Function
>
>
>

きっちり見ていませんが、文字列の抽出と置換 etcかと思われますね

>>下記コードはVBAのコードですが、VBで下記の事が可能でしょうか
可能だと考えます。

>>現状のままカンマを残しMEMBER の4-9列を0又は1に変更する事ができないでしょうか
規則性があるので、変更する事ができると考えます。




返信 編集キー/


管理者用

- Child Tree -