• 締切済み

エクセルVBAを利用したフォルダ内にあるファイルの指定エクセルシート貼り付け

フォルダ内にある任意のファイル(拡張子のないテキストデータ)を開き、指定されたエクセルのシートに貼り付けするといった方法がわかりません。 どなたか分かる人がいましたら教えていただきたいです。 現在openなどを使用していますがファイルを指定すれば実行できるのですが任意のファイルになるとエラーになってしまいます。

みんなの回答

回答No.4

「フォルダ内にある任意のファイル(拡張子のないテキストデータ)を開き」とありますが、 任意のファイルというものは存在しません。 存在しないものは開けません。 貴方がいいたいことを次のように理解して、回答します。 「特定のフォルダ内にある全てのファイルを開く」と理解し、「特定のフォルダ内にある全てのファイルのFullnameを取得する方法」を書きます。 Dim AAA,BBB,CCC,DDD Dim AA Dim A,B Dim XXX() AA="特定のフォルダ名" Set AAA = CreateObject("Scripting.FileSystemObject") Set BBB = AAA.GetFolder(AA) Set CCC=BBB.Files A=CCC.Count Redim XXX(A) B=0 For Each DDD In CCC B=B+1 XXX(B)=DDD.Fullname Next XXX(1)~XXX(A)を順次開けば、「特定のフォルダ内にある全てのファイルを開く」ことが出来ます。

noname#111860
noname#111860
回答No.3

フォルダの中に、ファイルがいくつかあるのはわかったけど 任意のデータは、どうやって選択しているの? ・テキストボックスで手で入力? ・リストボックスやコンボボックスを使って選択する? > 初めの部分が名前を指定して > 実行すればできたのですが任意のデータにすると実行できなくなります。 先の回答の中にも記載したけれども、  実行時エラーが発生しているのであれば、  その表示されたエラーメッセージをそのまま書いて欲しい。  アドバイスの方向や確認ポイントの検討も  こういったメッセージから何処でおかしいのか判断出来る場合も多いので

toppokun10
質問者

補足

少々わかりづらいですね。 Sub 上リンク() Dim myCell(1) As String Dim i As Integer, j As Integer Dim データ As Variant データ = Worksheets("入力").Range("H64") 'ワークシート[Sheet1]をアクティブにする Worksheets("上型NC").Activate '[C:\*****\***\***]フォルダの「データ」をシーケンシャ入力ルモードで開き、 'ファイル番号を「1」に指定する Open "C:\****\***\***\データ" For Input As #1 Do Until EOF(1) 'ファイルのデータを変数に格納する Input #1, myCell(1) i = i + 1 For j = 1 To 1 Cells(i, j).Value = myCell(j) Next j Loop 'ファイルを閉じる Close #1 Worksheets("入力").Activate End Sub になりまして”データ”の部分に任意の決まっていないデータがをいれたいのですがデータがないといわれてしまいます。ここではエクセルのシートにデータ名を入力して実行、上型NCシートに貼り付けといった手順をとりたかったのですが。 わかりづらいかもしれませんが宜しくお願いします。 ちなみにデータの部分を実際のファイル名にすれば貼り付けはできましたが任意のものにするとできなくなりました。 inputboxなども使用してみましたが同様におエラーになりました。 なにかいい方法がありましたら宜しくお願いします。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

>常套句なれども、下記をやってどれぐらい有名な課題か調べてから言って。 調べて勉強すればもっと細かい点の質問になるはず。 Googledeなどで「フォルダ ファイル VBA」で照会して見ましたか。 プログラムを組むときの素人には数少ない情報入手元が、WEBです。たくさん出ます。 FSO Dir関数 の2方法が代表的。 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_080.html が照会結果の最初のもの。 >(拡張子のないテキストデータ って珍しいと思うが、ファイル名で「.」が無いをチェックするか。 >指定されたエクセルのシートに貼り付けするといった あいまいな表現。指定されたとは、テキストファイルごとに、貼り付けるシートが違うのか。 名前はバラバラか?そうするとデーターシートの対応関係のテーブル が必要で面倒で、質問実体と違う(筆が滑った)のでは。しかし大事な点。 ーー >openなどを使用していますがファイルを指定すれば実行できるのですが 変数名を使って、プログラムすれば解決する。 その変数名に、ファイルを見つけるループの処理の中でファイル名を次々セットしては、本体処理に入る。 この質問をしているところを見ると、プログラム経験が少ないのかな。コンピュター処理は、ほとんど全て処理を繰り返しに持ち込む。 そのとき必ずその回に内容を変えている変数が有るはず。なければ 同じ対象に同じパターンのことを繰り返すことにナリ、意味無いから。この処理パタンの認識(学習・実感)はプログラム学習で一番大切なこと。

toppokun10
質問者

お礼

ありがとうございます。 vbaをまじめにはじめてから1週間程度なのでまだまだ勉強不足なんですが。 できるシリーズのVBAは一通り読んだ程度です。 もう少し説明しますと、例でいうとフォルダ内にB0001A、B0003A、B0102A・・・といった複数の中身はテキスト系のファイルがはいっています。そこからデータを指定して実行してエクセルシートに貼り付けます。そのテキストから必要なコードのみ検出して別シートに貼り付けるというような内容になります(A??のすべて)。最後の部分はネットなどでさがして例文からなんとかできたのですが、初めの部分が名前を指定して実行すればできたのですが任意のデータにすると実行できなくなります。

noname#111860
noname#111860
回答No.1

テキストファイルの読み込みは ↓を参考に http://hanatyan.sakura.ne.jp/vbhlp/txt01.htm エクセルファイルの読み書きが ↓を参考に http://hanatyan.sakura.ne.jp/vbhlp/excelframe.htm また、上記のサイトを参考にしても 解決できない場合は、 エラーの内容・メッセージを、具体的に書いてください。

toppokun10
質問者

お礼

ありがとうございます。 お礼と補足の部分を間違えてしましました。 質問内容が少々曖昧でしたね。 ちなみにvbaをまじめにはじめてから1週間程度の素人です。 できるシリーズのVBAは一通り読んだ程度です。 例でいうとフォルダ内にB0001A、B0003A、B0102A・・・といった複数の中身はテキスト系のファイルがはいっています。そこからデータを指定して実行してエクセルシートに貼り付けます。そのテキストから必要なコードのみ検出して別シートに貼り付けるというような内容になります(A??のすべて)。最後の部分はネットなどでさがして例文からなんとかできたのですが、初めの部分が名前を指定して実行すればできたのですが任意のデータにすると実行できなくなります。 何分まだまだ素人ですのでお気に触るかもしれませんがよろしくお願いします

toppokun10
質問者

補足

質問内容が少々曖昧でしたね。 ちなみにvbaをまじめにはじめてから1週間程度の素人です。 できるシリーズのVBAは一通り読んだ程度です。 例でいうとフォルダ内にB0001A、B0003A、B0102A・・・といった複数の中身はテキスト系のファイルがはいっています。そこからデータを指定して実行してエクセルシートに貼り付けます。そのテキストから必要なコードのみ検出して別シートに貼り付けるというような内容になります(A??のすべて)。最後の部分はネットなどでさがして例文からなんとかできたのですが、初めの部分が名前を指定して実行すればできたのですが任意のデータにすると実行できなくなります。 何分まだまだ素人ですのでお気に触るかもしれませんがよろしくお願いします。

関連するQ&A