Excel VBA質問箱 IV

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

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


8741 / 13646 ツリー ←次へ | 前へ→

【31445】複数のcsvファイルを開いてブックに貼り付ける すま 05/11/21(月) 15:29 質問[未読]
【31447】Re:複数のcsvファイルを開いてブックに貼り... Kein 05/11/21(月) 16:13 回答[未読]
【31448】Re:複数のcsvファイルを開いてブックに貼り... だるま 05/11/21(月) 16:41 発言[未読]
【31450】Re:複数のcsvファイルを開いてブックに貼り... すま 05/11/21(月) 16:53 発言[未読]
【31449】Re:複数のcsvファイルを開いてブックに貼り... すま 05/11/21(月) 16:51 質問[未読]
【31452】Re:複数のcsvファイルを開いてブックに貼り... だるま 05/11/21(月) 18:57 回答[未読]
【31453】Re:複数のcsvファイルを開いてブックに貼り... Kein 05/11/21(月) 19:02 発言[未読]
【31466】Re:複数のcsvファイルを開いてブックに貼り... すま 05/11/22(火) 9:43 お礼[未読]

【31445】複数のcsvファイルを開いてブックに貼り...
質問  すま  - 05/11/21(月) 15:29 -

引用なし
パスワード
   こんにちは。はじめまして。
どなたか教えてください(^-^)

1.複数のcsvブックを開き、activebook(シートは1枚のみ)に追加したい。
追加されるシートの順序はこだわりません。
開きたいcsvファイルは、activebookと同じフォルダにあります。

こちらの掲示板を参考に一旦書いてみたのですが、
ファイルを選択したあとに、bookには追加されませんでした。

どこに何を追加すればいいのでしょうか?

Sub test6()
  Dim vFileName As Variant
  Dim sDefaultPath As String, iFileName As String
  sDefaultPath = ActiveWorkbook.Path
  
  ’ファイルを選択
  vFileName = Application.GetOpenFilename( _
  fileFilter:=StrConv("CSV ファイル (*.CSV),*.x*," & _
  "すべてのファイル (*.*),*.*", vbNarrow), FilterIndex:=1, _
    MultiSelect:=True)
    
  'キャンセルされたかチェック(キャンセル時MSG出力)
  If VarType(vFileName) = 11 Then
    MsgBox "キャンセルされました。"
    Exit Sub
  End If
  
End Sub


2.追加されたシート名は、ファイル名が適用されますが、
ファイル名の23文字目以降を適用するということはできますか?
その場合のコードはどうようなものでしょうか?

ご教示よろしくお願いいたしますm(__)m

【31447】Re:複数のcsvファイルを開いてブックに貼...
回答  Kein  - 05/11/21(月) 16:13 -

引用なし
パスワード
   だいたい、こんな感じかと思います。

Sub test7()
  Dim vFileName As Variant
  Dim i As Integer
  Dim MyB As Workbook
  
  ChDir ThisWorkbook.Path
  With Application
    vFileName = _
    .GetOpenFilename("CSV ファイル (*.csv),*.csv", MultiSelect:=True)
    If VarType(vFileName) = 11 Then
      MsgBox "キャンセルされました。": Exit Sub
    End If
    .ScreenUpdating = False
  End With
  For i = LBound(vFileName) To Ubound(vFileName)
    On Error GoTo NLine
    With ThisWorkbook
     Set MyB = Workbooks.Open(.Path & "\" & vFileName(i))
     MyB.Worksheets(1).Copy Before:=.Worksheets(1)
    End With
    With ActiveSheet
     If Len(.Name) > 23 Then
       .Name = Right$(.Name, 23)
     End If
    End With
NLine:
    MyB.Close False: Set MyB = Nothing
    If Err.Number <> 0 Then Err.Clear
    On Error GoTo 0
  Next i
  Application.ScreenUpdating = True
  MsgBox "コピー処理を終了しました", 64    
End Sub

【31448】Re:複数のcsvファイルを開いてブックに貼...
発言  だるま WEB  - 05/11/21(月) 16:41 -

引用なし
パスワード
   >ファイル名の23文字目以降を適用するということはできますか

と言っていますから、Right$ではなくMid$ですね。Keinさん。^d^
(23文字目は要るのか要らないのか良くわかりませんが。)

【31449】Re:複数のcsvファイルを開いてブックに貼...
質問  すま  - 05/11/21(月) 16:51 -

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

こんなに早くお返事いただき、ありがとうございます!
早速使わせていただいたのですが、

「実行時エラー '91':
 オブジェクト変数またはWithブロック変数が設定されていません」

というメッセージが出て、

>    MyB.Close False

の部分が黄色になってしまいました。
NLine以降、GoTo 0まで消してみたりしたのですが、解消できませんでした。

ご面倒をおかけいたしますが、再度お教えくださいますでしょうか。
よろしくお願い申し上げます。

【31450】Re:複数のcsvファイルを開いてブックに貼...
発言  すま  - 05/11/21(月) 16:53 -

引用なし
パスワード
   ▼だるま さん:
>>ファイル名の23文字目以降を適用するということはできますか
>
>と言っていますから、Right$ではなくMid$ですね。Keinさん。^d^
>(23文字目は要るのか要らないのか良くわかりませんが。)

だるまさん、ご回答ありがとうございます。
23文字目は必要になります。
Right$ではなく、Mid$に差し替えて使わせていただきます。

【31452】Re:複数のcsvファイルを開いてブックに貼...
回答  だるま WEB  - 05/11/21(月) 18:57 -

引用なし
パスワード
   >Set MyB = Workbooks.Open(.Path & "\" & vFileName(i))
Set MyB = Workbooks.Open(vFileName(i))

でどうでしょうか。^d^

【31453】Re:複数のcsvファイルを開いてブックに貼...
発言  Kein  - 05/11/21(月) 19:02 -

引用なし
パスワード
   あー・・すいません。だるまさんの回答が正解です。そのように変更して下さい。

【31466】Re:複数のcsvファイルを開いてブックに貼...
お礼  すま  - 05/11/22(火) 9:43 -

引用なし
パスワード
   Kein さん、だるま さんへ
おかげさまでできました!(*^-^*)

親切に答えてくださり、助かりました。
どうもありがとうございました。
またお願いいたします。

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