- ベストアンサー
複数選択フォルダの配列への格納
- 複数選択でのファイルの配列取り込みは下記でおこなえましたが、tmp = Application.GetOpenFilename(, , "処理したいファイルを複数選択してください", , True) For Z = LBound(tmp) To UBound(tmp) 同じような感じの事をフォルダでしたいのですが・・・
- 具体的には複数選択したフォルダ(年月の名前が付いたフォルダ)が複数個あり、そのフォルダ内に約700個づつファイルがあります。フォルダは年月の名前が付くフォルダなので1年分だと12フォルダ、2年分だと24フォルダになり名前も変わります(201403、201404、201405、・・・・)。ファイルはフォルダの1分毎のデータになりますので名前が変わり、数も多いです。1フォルダ分(1ヶ月なら24時間×28~31日でだいたい700ファイルくらい)なので過去分も含めると月数が増えると手ではちょっとキツイです。
- 対象Folders = 複数選択したフォルダの配列 For Z = LBound(対象Folders) To UBound(対象Folders) 対象files = 複数選択したファルダ内のファイルの配列 For Y = LBound(対象files) To UBound(対象files) ファイルを開いてデータ収集 Next Next 上記のようなイメージの処理をしたいのですが、ご存知の方ご教示いただけると幸いです。
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- ダイアログボックスで複数フォルダの複数ファイルの選択
ダイアログボックスで複数フォルダの複数ファイルの選択がうまくいきません。 単一フォルダ内からの複数ファイルの選択は機能しているのですが、ダイアログボックスで他のフォルダを選択して他のファイルを選択すると最終的に選択したファイルのみが残り、先に選択した分が累積されません。 OpenFileNameが上書きされるのが原因な気がするのですが配列への累積処理が解りません。 その後の処理で選択したファイルを全て開いて加工したいので、累積させる方法を知りたいのです。下記コードはLoop処理で行おうとして累積が解らないままのものです。 一度のダイアログ表示で複数フォルダの複数ファイルを選択出来る方法があればそれでもかまいません。どなたか助けては頂けないでしょうか。お願いします。 '**明細の選択(複数同時)** Do BN = Application.InputBox("対象明細書の年月を入力してください。1桁の月は02月のように入力)", , Default:="2009.04", Type:=2) If BN = False Then '入力なければ GoTo OWARI End If WorkPath = ThisWorkbook.Path & "\明細書一覧" & BN & "月" ChDrive WorkPath ChDir WorkPath OpenFileName = Application.GetOpenFilename(FileFilter:="Microsoft Excelブック,*.xls", _ Title:="対象の明細書を選んで下さい。Ctrlキーを押しながら複数ファイルを同時に選択出来ます。", MultiSelect:=True) Rtn = MsgBox("他にも対象ファイルがありますか?", vbYesNo, "選択") If Rtn = vbNo Then Exit Do End If Loop Mypath = ThisWorkbook.Path MyFile = "\請求制御.xls" 'ここにファイル名記入 If IsArray(OpenFileName) Then For i = 1 To UBound(OpenFileName) If OpenFileName(i) = Mypath & MyFile Then MsgBox "同じファイルが含まれてます。", vbInformation, "同じファイルは選択出来ません" GoTo OWARI End If tmp = tmp & Dir(OpenFileName(i)) & vbCrLf Next MsgBox vbCrLf & tmp & vbCrLf & "の全" & i - 1 & "枚です" & vbCrLf & "これらでよろしいですか? ", vbInformation, "選択したファイルは "
- ベストアンサー
- Visual Basic
- 二次元配列のVBA
二次元配列のVBAの書き方がよくわからないのですが、 私が作ったサンプルプログラムのSub 二次元()において 二次元配列で表すにはどうすればいいのでしょうか? Sub 二次元()では 配列を格納する変数はtmpしか使っていませんが もう一つ配列を格納する用の変数を作ればいいのでしょうか? 数字とアルファベットは別々に取り出したいです。 ----------------------------------------------------- Sub 一次元() Dim myStr As String Dim tmp As Variant Dim i As Long For i = 1 To 5 myStr = myStr & "," & i Next myStr = Mid(myStr, 2) tmp = Split(myStr, ",") For i = LBound(tmp) To UBound(tmp) Debug.Print tmp(i) Next i End Sub Sub 二次元() Dim myStr As String Dim tmp As Variant Dim i As Long For i = 1 To 5 myStr = myStr & "," & i & "と" & Chr(64 + i) Next myStr = Mid(myStr, 2) tmp = Split(myStr, ",") For i = LBound(tmp) To UBound(tmp) Debug.Print tmp(i) Next i End Sub
- ベストアンサー
- Excel(エクセル)
- 変数を配列に格納する時に、二つの条件を指定すること
変数を配列に格納する時に、二つの条件を指定することはできますか? VBAです。 Private Sub test() Dim i As Long Dim Str As String Dim tmp As Variant Str = "a,i,u-e-o" tmp = Split(Str, ",") '配列に格納する For i = LBound(tmp) To UBound(tmp) Debug.Print tmp(i) Next i End Sub の場合、結果が a i u-e-o になってしまいます。 tmp = Split(Str, "," or "-") のようなことをして a i u e o と表示させたいです。 "a,i,u-e-o"を"a,i,u,e,o"にすることはできません。ご教授よろしくお願いします。
- ベストアンサー
- Visual Basic
- 配列について。
Redim した後 For i LBound(配列) To UBound(配列) 作業 Next i をしているのですが、配列の要素数を別プロセスで 計算させる場合、必ずしも要素が存在するとはかぎ りません。 その場合エラーがでるわけですが、このように配列 の中身が存在しない場合はどのように回避できるの でしょうか? VB6&Windows2000です。
- ベストアンサー
- Visual Basic
- スキャンファイル格納場所を複数フォルダから選択
でスキャンファイルを格納するフォルダーを複数のパソコンから選択できるようにする方法についての質問です。 現在メインのデスクトップPC以外にノートブックPCのスキャンフォルダにもスキャンファイルを取り込みたいと思っています。本体のスキャンボタンを押してフォルダを選択する画面で家庭内LANに繋がるPCの複数の登録から該当フォルダーを選択できるようにはできないのでしょうか? ※OKWaveより補足:「ブラザー製品」についての質問です。
- ベストアンサー
- プリンター・スキャナー
- 複数のフォルダ名を修正するには??
まめファイル4では、フォルダを複数選択して名前の編集をすると次の編集画面にうつりますが、まめファイル5にしてから、フォルダ名を複数選択しても最初のフォルダしか名前の編集が出来ません。 どうしたら、よろしいのでしょうか?
- 締切済み
- Windows XP
- このフォルダを削除してもいいでしょうか?
(名前)tmp***.tmp (フォルダ名)C\Program File\Common Files\Symantec Shared\VirusDefs こんな感じのフォルダがたくさんあるのですが、 削除してもいいのでしょうか?
- 締切済み
- Windows XP
- フォルダ内の複数ファイル同時選択について
ファイルの移動、コピーや削除をする際に「Ctrl」+左クリックで複数のファイルを選択していましたが何かの拍子で設定を変えてしまったみたいで同時に複数のファイルを選択できなくなってしまいました。 フォルダオプション等をいじってでいろいろ試してみましたがどうにもなりません。 設定の直し方御存知の方、ご教授願います
- ベストアンサー
- Windows Vista
- VBS 複数ファイル複数行を配列格納
ある配下のCSVファイル2個(固定)を読み込み、 コンピュータ名の列が同じ行を比較するというツールを作っています。 考えた結果以下まではできましたが、どうしても指定行を配列に埋め込み処理ができません。 比較方法はわかります。 ですが以下のプログラムでは、CSVの行は複数行あるので最終行しか格納されません。 どのようにしたら、2つのCSVファイルそしてすべての行を配列に入れ込むことができるのでしょうか。 For Each FileName In src.Files FileEx = fso.GetExtensionName(FileName) If LCase(FileEx) = "csv" Then Set CsvFile = fso.OpenTextFile(FileName) Do Until CsvFile.AtEndOfStream tmpLine = CsvFile.ReadLine If roopCnt = 0 Then '1個目のCSV ArrayA = Split(tmpLine,",") Else '2個目のCSV ArrayB = Split(tmpLine,",") End rowCnt = rowCnt +1 Loop roopCnt = 1 End If Next
- ベストアンサー
- Visual Basic
- VBの配列 IsNull, IsNuthing, ...? 用途がわかりません。
以下の場合、(1)で範囲エラーとなります。 redim a(0)とすると、a配列に1個データがあるということで、for文が実行されますが。 Redimしないまま(データが無い意味としたいので)で、このFor文をパスするには、どのように記述すればよいのでしょうか? dim a() as string '----->(2) for i=LBound(a) to UBound(a) '---->(1) msgbox(a(i)) next i
- ベストアンサー
- Visual Basic
お礼
ご回答本当にありがとうございます。 フォルダ名は規則正しいですが、歯抜けで選択することもあり複数選択対象だけを配列に取り込みたいのと、他の作業でも使用したいので、方法はないのでしょうか? 大変お忙しいところお手数ですが、可能ならご教示お願いいたします。