Excel VBA質問箱 IV

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

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


19164 / 76734 ←次へ | 前へ→

【63006】Re:VBAでCSVを連結してをXLSで保存
発言  kanabun  - 09/9/30(水) 19:32 -

引用なし
パスワード
   ▼YUKI さん:
>前回の続きでわからないことがあって困ってます
>前回の処理にシートを追加してCSVファイルを連結したのを入れる処理を加えたいのですがうまくいかずエラーが起きます
>わかる方いれば教えてください
>
あの、前回
>Sub CSV結合してBookへ出力()
と今回作成されようとしている
>Sub シートを追加してそこにインポート()
とで、異なるところは
結合したCSVテキストファイルを
【前回】新規Bookにインポートするか、
【今回】すでにインポートして作成したBookに さらにシートを追加して
 そこにインポートするか
のちがいだけなんですよね?

それでしたら、あらたにプロシージャを作り、
変数名まで前回のものと異なるものにする必要はサラサラないと
思うけどな?

前回のもの↓を変更部分だけ追加修正するように、
省エネで行きましょうよ♪

それから、コードに付したコメントは あとになって読み返すとき
何をしているかの重要な情報なので、
消してしまわないほうがいいですよ

>Sub CSV結合してBookへ出力()
>  Dim fs As Object, fd As FileDialog
>  Dim fStr As String, fName As Variant, i As Integer
>  Dim iz As Long
>  
'▼1. 統合するCSVファイルの選択
>  Set fd = Application.FileDialog(msoFileDialogFilePicker)
>  With fd
>    .AllowMultiSelect = True
>    .Title = "データ選択(ファイル参照)"
>    .Filters.Add "テキストファイル", "*.csv"
>    If .Show = 0 Then Exit Sub
>    If .SelectedItems.Count < 2 Then
>      MsgBox "データを複数選んでください"
>      Exit Sub
>    End If
>  End With
> 
'▼2. 選択CSVファイルを結合して ひとつのCSVに統合する
>  Set fs = CreateObject("Scripting.FileSystemObject")
>  iz = fd.SelectedItems.Count
>  For i = 1 To iz
>    With fs.OpenTextFile(fd.SelectedItems(i), 1)
>      fStr = fStr & .ReadAll
>      .Close
>    End With
>  Next i
>  fName = Replace(LCase(fd.SelectedItems(iz)), ".csv", "$.csv")
>  With fs.CreateTextFile(fName)
>    .Write fStr
>    .Close
>  End With

'▼3.新規ワークブックを作成し、統合後のCSVファイルをインポート
>  Dim WS As Worksheet
>  Set WS = Workbooks.Add(6).Worksheets(1)
>  テキストファイルのインポート fName, WS

'▼4.名前を付けてBookの保存
>  fName = Application.GetSaveAsFilename( _
>    InitialFileName:="ファイル.xls", _
>    FileFilter:=",*.xls")
>    
>  If fName = False Then Exit Sub
>  Application.EnableEvents = False
>  ActiveWorkbook.SaveAs fName, FileFormat:=xlNormal
>  Application.EnableEvents = True
>End Sub

以上が前回分のコードです。
で、今回仕様が変わるのは
'▼3. の部分、つまり「どこにインポートするか」が変わる
ということではないですか?

もしそうなら、その部分を以下のように
新規Bookにインポートする場合と
現在アクティブなBookにシートを追加してそこにインポート
するばあいとで 分岐処理すればよいかと。

'▼3.統合後のCSVファイルをインポート
>  Dim WS As Worksheet
   dm msg as string
   msg = "統合したCSVファイルを" & vbCr
   msg = msg & "新規Bookに読み込むばあいは [はい]" & vbCr
   msg = msg & "現在Bookの新規シートに読み込むばあいは[いいえ]"
   msg = msg & vbCr & "ボタンを押してください"
 Select Case msgbox(msg, vbYesNoCancel)
  Case vbCancel
    Exit Sub
  Case vbYes
>   Set WS = Workbooks.Add(6).Worksheets(1)
  Case vbNo
    With ActiveWorkbook.Worksheets
      Set WS = .Add(After:=.Item(.Count)
    End With
  End Select
>  テキストファイルのインポート fName, WS

と分岐処理を入れるだけでいいのじゃないかと思いますけど?

>うまくいかずエラーが起きます
どこで、どのような内容のエラーになるのかの情報も一緒に
示してくださいね
8 hits

【62965】VBAでCSVを連結してをXLSで保存 YUKI 09/9/28(月) 0:52 質問
【62967】Re:VBAでCSVを連結してをXLSで保存 kanabun 09/9/28(月) 9:02 発言
【62968】Re:VBAでCSVを連結してをXLSで保存 kanabun 09/9/28(月) 9:37 発言
【62973】Re:VBAでCSVを連結してをXLSで保存 YUKI 09/9/28(月) 15:37 発言
【62974】Re:VBAでCSVを連結してをXLSで保存 kanabun 09/9/28(月) 16:55 発言
【62975】Re:VBAでCSVを連結してをXLSで保存 kanabun 09/9/28(月) 17:45 発言
【62976】Re:VBAでCSVを連結してをXLSで保存 YUKI 09/9/28(月) 18:35 お礼
【62977】Re:VBAでCSVを連結してをXLSで保存 kanabun 09/9/28(月) 18:49 発言
【62978】Re:VBAでCSVを連結してをXLSで保存 YUKI 09/9/28(月) 18:53 お礼
【62980】Re:VBAでCSVを連結してをXLSで保存 kanabun 09/9/29(火) 0:11 発言
【62987】Re:VBAでCSVを連結してをXLSで保存 YUKI 09/9/29(火) 18:53 お礼
【63004】Re:VBAでCSVを連結してをXLSで保存 YUKI 09/9/30(水) 17:48 質問
【63006】Re:VBAでCSVを連結してをXLSで保存 kanabun 09/9/30(水) 19:32 発言
【63007】Re:VBAでCSVを連結してをXLSで保存 kanabun 09/9/30(水) 19:35 発言
【63008】Re:VBAでCSVを連結してをXLSで保存 kanabun 09/9/30(水) 19:52 発言
【63047】Re:VBAでCSVを連結してをXLSで保存 YUKI 09/10/4(日) 6:04 お礼

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