AKB48の推しメンをセンターにできちゃうかもしれない!? >>

EXCELのVBAの .ActiveSheet.QueryTables.Add メソッドを利用する方法で、
(不可能ならば別な方法でもお願いします。)
CSVファイルを読み取って、シートに書き込みたいと思ったのですが、
その際、CSVファイル全体ではなくて、特定番目の列だけを読み取って、書き込むことは出来ないでしょうか。
その特定の列の指定を複数にすることも出来ますでしょうか。
もし複数でも可能でしたら、EXCELに書き込むときに、
一列目、二列目、と詰めて書くのではなく、間に空列をはさんだりして、
バラバラに好きな位置の列に、読み取ったそれぞれの列を、書き込むことは出来るでしょうか。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

accessdb_userさんこんにちは。


データソースに新規にCSVのソースを追加することによって可能です。例えば、マイドキュメントにCSVファイルがあり、データベースの先頭をセルA1に置くとして、次のようになるはずです。

ActiveSheet.QueryTables.Add(Connection:=Array(Array("ODBC;DefaultDir=C:\My Documents;Driver={Driver da Microsoft para arquivos texto (*.txt; *.csv)};DriverId=27;Extensions=txt,csv,tab,a"), Array("sc;FIL=text;MaxBufferSize=2048;MaxScanRows=25;PageTimeout=5;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;")), Destination:=Range("A1"))

手動で言えば、外部データの取り込みで、新規データソースを作成し、アクセスするデータベースの種類に対応するドライバに
Driver da Microsoft para arquivos texto (*.txt; *.csv)
を選択するということです。これによって、クエリーが使えますから、
> 特定番目の列だけを読み取って、書き込むことは出来
ます。また、MSクエリーの他の機能も使えます。複数の列の取り込みも可能です。
取り込む列の選択は、上記AddメソッドのCommandTextプロパティの値として、Array関数に格納して使います。

.CommandText = Array("SELECT XXX.AAA, XXX.BBB& vbCrLf & "FROM XXX.csv XXX" )

のようになります。XXXはファイル名、AAA,BBBはフィールド名です。
クエリーを使った場合、空白の列を入れることはできないようです。データ取り込み後にInsertメソッドやCopy、Pasteメソッドで列挿入や入れ替えをすれば良いと思われます。
一度、自動記録すると解りやすいと思います。
    • good
    • 3

テストデータとして下記を作りました。


ファイル名をaa1.csvで保存しました。
5,大島,大阪,商業,a1
23,古河,豊橋,商業,b1
34,恩田,岐阜,普通,d1
45,寒川,福島,国際,c1
67,桐井,新潟,工業,c2
13,青井,久留米,普通,a2
そしてVBEのModule1に
Sub test01()
i = 1
Open "aa1.csv" For Input As #1
While Not EOF(1)
 Input #1, a, b, c, d, e
 ' MsgBox a & "," & b & "," & c & "," & d & "," & e
 Worksheets("sheet1").Cells(i, 1) = b
 Worksheets("sheet1").Cells(i, 2) = d
 i = i + 1
Wend
Close #1
End Sub
テスト済み。項目数(フィールド数)だけa,b,c,・・・を設定してください。そして何番目の項目かを選んでください。このテストでは2、4番の2つを選択した。
その項目数だけWorksheets("sheet1").Cells(i, xx) = xを増やしてください。xxはA列を1としてB列を2とする列順序数です。xは取り出してシート列にセットする変数名(項目データ)です。
    • good
    • 3
この回答へのお礼

ご解答ありがとうございました。
とても明快でわかりやすいソースとご説明で、よくわかりました。
プログラムするときに参考にさせていただきます。
でも、セルに一つずつ書き込むのでは、処理が遅くなってしまうようなのです。
一気に書き込めればいいのですが・・・

お礼日時:2002/08/05 19:11

データが以下のようになってるとします


名前,生年月日,性別
mike,19920503,male
tiger,19950304,male
linda,19790403,female

Open "CSVファイルの場所" For Input As #1
i = 1
Do Until EOF(1)
Line Input #1, tmp
hairetu = Split(tmp, ",")   'カンマで区切られたものをばらして
                 '配列にいれます
'1行目を読んだ状態では
                 ’hairetu(0)="名前",
                 ’hairetu(1)="生年月日",
                 ’hairetu(2)="性別"となってます

Cells(i, 4) = hairetu(2) ’配列3番目(性別)をD列に出力します
  Cells(i,6)=hairetu(0) '配列1番目(名前)をG列に出力します
i = i + 1

Loop
Close #1

こんな回答しかできませんでした
きっともっといいやり方があるとおもいますので他の方の意見を参考に
してください
    • good
    • 1
この回答へのお礼

セルに一つずつ書いていくと、なぜかやたら処理に時間がかかってしまうようなので、
CSVを一気に読み込みたいと思っていたんです。しかし、列を分けて読み込むのは難しいでしょうか。
でも、ファイル入出力に慣れていなかったので、ためになりました。ありがとうございました。

お礼日時:2002/08/05 19:07

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q巨大なCSVの加工(指定列のみの抽出)について

巨大なCSVの加工(指定列のみの抽出)について

下記のような構成のCSVファイルがあります。

"ID","a","b","c","d","e","f","g","h","i","j","k","l","m"
"0001","a","b","c","d","e","f","g","h","i","j","k","l","m"
"0003","a","b","c","d","e","f","g","h","i","j","k","l","m"
"0004","a","b","c","d","e","f","g","h","i","j","k","l","m"




例えば、
ここから"ID"列と"c"列と"f"列のみ抽出して新たなCSVファイルで保存。
という処理を行いたいのですが、行数が5000万行近くあり、ファイルサイズが80GB程あるので
エクセルはおろかアクセスでも開くことができません。
テキストエディタの秀丸64bit版なら開くことができますが、指定列の抽出方法が分かりません。
秀丸のマクロでもVBSでも良く、また膨大な待ち時間がかかっても構わないので実現する方法について
お知恵をお貸しください。

巨大なCSVの加工(指定列のみの抽出)について

下記のような構成のCSVファイルがあります。

"ID","a","b","c","d","e","f","g","h","i","j","k","l","m"
"0001","a","b","c","d","e","f","g","h","i","j","k","l","m"
"0003","a","b","c","d","e","f","g","h","i","j","k","l","m"
"0004","a","b","c","d","e","f","g","h","i","j","k","l","m"




例えば、
ここから"ID"列と"c"列と"f"列のみ抽出して新たなCSVファイルで保存。
という処理を行いたいのですが、行数が5000万行近くあり、ファイルサイズが80...続きを読む

Aベストアンサー

"ID","a","b","c","d","e","f","g","h","i","j","k","l","m"
"0001","a","b","c","d","e","f","g","h","i","j","k","l","m"
扱いやすいように仕向けるのも手段の一つ。
"ID00","a","b","c","d","e","f","g","h","i","j","k","l","m"
"0001","a","b","c","d","e","f","g","h","i","j","k","l","m"
固定長になるものであれば
C列相当は16文字目から3バイト
F列相当は28文字目から3バイト

実際は固定長ではないのだろうが、
プログラムができるのなら、
そのプログラム技術で取り込みやすいデータに
加工することもできるのではないか。そういう工夫できることはないか。
最終目的でなくても何かできないか探してみる。
・・・のキーワードの後20バイトにC列とF列が
含まれているはず、となればその20バイトだけ抜き出すことで
扱うサイズがグッと減る。
工夫したければ、何か規則性を探す。

1行ずつ読み込んで判定を繰り返すプログラムで十分かと思います。

エクセルにろアクセスにしても
シートやテーブルに格納するだけが手段ではない。
VBAを使えばファイルI/O操作はできます。

"ID","a","b","c","d","e","f","g","h","i","j","k","l","m"
"0001","a","b","c","d","e","f","g","h","i","j","k","l","m"
扱いやすいように仕向けるのも手段の一つ。
"ID00","a","b","c","d","e","f","g","h","i","j","k","l","m"
"0001","a","b","c","d","e","f","g","h","i","j","k","l","m"
固定長になるものであれば
C列相当は16文字目から3バイト
F列相当は28文字目から3バイト

実際は固定長ではないのだろうが、
プログラムができるのなら、
そのプログラム技術で取り込みやすいデータに
加工するこ...続きを読む

Qエクセルで特定の列だけを抽出してcsvで保存したい

エクセルで特定の列だけを抽出してcsvで保存したい

例えば、A列:住所、B列:氏名、C列:電話番号といった3つの列がありそれぞれデータがはいっているとします(図参照)。
そしてcsvとして書き出すときにB列とC列だけを書き出したい場合どのようにすればよいでしょうか。
この場合、書き出すときにA列だけを一旦削除、などということはしたくないです。
また1列目のタイトルも書き出さないようにしたいです。
ご教授よろしくお願いいたします。

Aベストアンサー

#2です。非連続な列群を指定した場合に対応させてみました。ご参考まで。
Unionに各範囲を与えるところは、ご自分でお願いします。
Sub test()
Dim targetRange As Range, myArea As Range, myColumn As Range
Dim i As Long, j As Long, columnCount As Long
Dim buf As Variant, buf2 As String
Dim FSO As Object

Set FSO = CreateObject("Scripting.FileSystemObject")
Set targetRange = Union(Range("a1:a3"), Range("c1:d3"), Range("f1:f3"))
'データチェック 先頭行位置、行数の一致チェック 必要ならご自分で作成下さい。
'If Not checkRanges(targetRange) Then Exit Sub
For Each myArea In targetRange.Areas
columnCount = columnCount + myArea.Columns.Count
Next myArea
With FSO.createTextFile("C:\Sample.txt", True) 'overwrite
For i = 1 To targetRange.Areas(1).Rows.Count
ReDim buf(1 To columnCount)
j = 1
For Each myArea In targetRange.Areas
For Each myColumn In myArea.Columns
buf(j) = myColumn.Cells(i).Text 'Value
j = j + 1
Next myColumn
Next myArea
buf2 = Join(buf, ",")
.writeline buf2
Next i
.Close
End With
End Sub

#2です。非連続な列群を指定した場合に対応させてみました。ご参考まで。
Unionに各範囲を与えるところは、ご自分でお願いします。
Sub test()
Dim targetRange As Range, myArea As Range, myColumn As Range
Dim i As Long, j As Long, columnCount As Long
Dim buf As Variant, buf2 As String
Dim FSO As Object

Set FSO = CreateObject("Scripting.FileSystemObject")
Set targetRange = Union(Range("a1:a3"), Range("c1:d3"), Range("f1:f3"))
'データチェック 先頭行...続きを読む

QEXCEL VBAマクロ作成で、他のEXCELからデータを取り込みたい

メインプログラム(EXCEL VBA)より、
他のフォルダーにあるEXCELの項目の内容を取り込みたいです。
たとえば他のフォルダーのEXCELのRange("A2:A3").ValueをメインプログラムのRange("C2:C3").Valueにセットしたい時です。

・コマンドボタン押したら、どこのEXCELから取り込むかのポップアップ(?)は、表示はできてます。
・作業者が選んだパスとブックもMsgBoxで表示できてるので、もらう相手の場所も取得できてます。

・となると次はOPEN,INPUTですか?
テキストデータの取り込みですと、Inputでそのバッファを定義してるのですが、なんか違うような。。。

よろしくお願いします!

Aベストアンサー

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Cells(2, 2).Value ' 相手シートの B2 の値を自分自身の A1 に書き込む

readBook.Close False ' 相手ブックを閉じる
Set readSheet = Nothing
Set readBook = Nothing

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Ce...続きを読む

Q【VBA】テキストファイルを指定行数からの読み込み

こんばんは。

EXCEL VBAでテキストファイルを読み込む事について質問です。

VBAでテキストファイルをこちらから指定する行数(上から何番目という感じで)からデーターを読み込みたいのですが、どの関数をつかっていいかわからず困っています。
1行ずつ読みこむ「Input Line関数」では、無駄な行まで読み込むので動作が遅くなります。
読み込みたい行はすでにわかっているので、最初からその行に飛んでからデーター読み込みたいと思ってます。

ちなみに指定する行数は、ファイルによって違います。
あらかじめ「Input Line関数」で、ある文字が何行目にあるかを探す行為をあらかじめ行っています。

みなさまのアイデアを拝借したく、よろしくお願いします。

Aベストアンサー

速度は分かりませんが、これとか
http://officetanaka.net/excel/vba/filesystemobject/textstream10.htm

あるいは、丸ごと読みこんで、改行コードでSplitして、文字列配列を相手に該当行検索も含めて処理するとか。
昨今のPCでは、相当大きなテキストファイルでもメモリー内で処理できると思います。
http://officetanaka.net/excel/vba/filesystemobject/textstream07.htm

テキストファイルの構造によってはADOで処理する案も考えられますが、Recordsetにはファイルの先頭から(あるいは末尾先頭で)入っている事が保証されているのか、ちょっと心配。参考URLはCSVになっていますが、タブ区切りテキストファイル(拡張子.txt)でもいけます。
http://home.att.ne.jp/zeta/gen/excel/c04p47.htm

以上ご参考まで。

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

QExcelVBA テキストファイルから特定行を抽出し、エクセルファイルのテキストボックスに張り付ける

Excel VBAにて、テキストファイルから文字列を選別して、それをエクセルファイルのテキストボックスに張り付けるコードの記述をご教授いただけますでしょうか。

環境はWindows7 Pro Excel2010
下記テキストファイルです。

test.txt

IDENTIFICATION DIVISION.
PROGRAM-ID. sample
AUTHOR. XXX
*
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT A ASSIGN TO B
SELECT C ASSIGN TO D
DATA DIVISION.
FILE SERECTION.

この FILE-CONTROL.と DATA DIVISIONの間に挟まれている
SELECT A ASSIGN TO B
SELECT C ASSIGN TO D

この2行を取り出して、エクセルファイル上にあるテキストボックス張り付ける処理です。
よって、FILE-CONTROL.と DATA DIVISION.の間にある不特定多数の行を抽出するロジックです。

テキストボックスに張り付ける前の行を抽出するだけでも、ご教授頂けたら幸いです。

よろしくお願いします。

Excel VBAにて、テキストファイルから文字列を選別して、それをエクセルファイルのテキストボックスに張り付けるコードの記述をご教授いただけますでしょうか。

環境はWindows7 Pro Excel2010
下記テキストファイルです。

test.txt

IDENTIFICATION DIVISION.
PROGRAM-ID. sample
AUTHOR. XXX
*
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT A ASSIGN TO B
SEL...続きを読む

Aベストアンサー

http://okwave.jp/qa/q8938350.html

Q大量のCSVデータを1つのエクセルデータにまとめる方法について

今仕事で、CSVファイルが400ファイル程あり、これを一つの
エクセルファイルにまとめなくて加工しなければならないのですが
うまいことVBAを活用して効率的にできないか思案中なのですが
うまい具合に行きません。
データの持ち方として
○CSVファイル1
1.AAA
2.BBB

○CSVファイル2
3.CCC
4.DDD

となっており、これを1つのエクセルファイル上で
1.AAA
2.BBB
3.CCC
4.DDD
としたいのですがなにかいい方法はないでしょうか?
1つのブックで外部データの取り込みでCSVを次々に選択して
いくVBAなんてあれば教えていただけないでしょうか?
よろしくお願いします。

Aベストアンサー

こんにちは。
昔書いた事があるサンプルです。
同一フォルダにあるcsvファイルをまとめて処理します。

Sub CSVまとめsample()
  Dim MyObj As Object
  Dim MyFol As String
  Dim MyFnm As String
  Dim MyStr As String
  Dim i   As Long
  Dim n   As Long
  Dim n1  As Long
  
  'フォルダを選択する
  Set MyObj = CreateObject("Shell.Application") _
    .BrowseForFolder(0, "SelectFolder", 0)
  '選択なければ処理を抜ける
  If MyObj Is Nothing Then Exit Sub
  MyFol = MyObj.self.Path & "\"
  MsgBox MyFol & "を処理します。"
  Set MyObj = Nothing
  Application.ScreenUpdating = False
  'ThisWorkbookにシートを追加して処理
  With Sheets.Add
    'Dir関数を使って指定フォルダ内csvファイルを順次処理
    MyFnm = Dir(MyFol & "*.csv")
    Do Until Len(MyFnm) = 0&
      i = i + 1
      'データエリアを取得してセット先を変更
      n = IIf(n = 0, 1, n + n1)
      '外部データ取り込みを利用
      With .QueryTables.Add(Connection:="TEXT;" & MyFol & MyFnm, _
                 Destination:=.Range("B" & n))
        .AdjustColumnWidth = False
        .TextFilePlatform = xlWindows
        .TextFileStartRow = 1
        .TextFileCommaDelimiter = True
        .Refresh False
        n1 = .ResultRange.Rows.Count
        .Parent.Names(.Name).Delete
        .Delete
      End With
      'ファイル名をA列にセット
      .Range("A" & n).Resize(n1).Value = MyFnm
      '次のファイルへ
      MyFnm = Dir()
    Loop
  End With
  If i > 0 Then
    MyStr = i & "個のファイルを処理しました。"
  Else
    '検索結果が0なら
    MyStr = "検索条件を満たすファイルはありません。"
  End If
  Application.ScreenUpdating = True
  MsgBox MyStr
End Sub

#シート行数をオーバーした時のエラー処理などはしてないので
#うまくいかなかったらごめんね^ ^;

こんにちは。
昔書いた事があるサンプルです。
同一フォルダにあるcsvファイルをまとめて処理します。

Sub CSVまとめsample()
  Dim MyObj As Object
  Dim MyFol As String
  Dim MyFnm As String
  Dim MyStr As String
  Dim i   As Long
  Dim n   As Long
  Dim n1  As Long
  
  'フォルダを選択する
  Set MyObj = CreateObject("Shell.Application") _
    .BrowseForFolder(0, "SelectFolder", 0)
  '選択なければ処理を抜ける
  If MyObj Is Nothi...続きを読む

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

Qエクセル(VBA)にて、CSVファイルを自動的に読み込むマクロ。

aaa.csvというcsvファイルがあるとします。
そこで、
エクセルのあるシートにボタンを用意して、マクロを登録し、そのボタンを押すと、sheetという名前のシートへ一発入力(インポート)するようにしたいのです。

マクロをいじったりしましたが、だめです。
よろしければ、上記のような動作をするためのソースを簡単に提供いただけないでしょうか?
*マクロの記録は使いたくないです・・・。

すみませんが、よろしくお願いいたします。

Aベストアンサー

Workbooks.Open Filename:="aaa.csv"
LastRow = Range("A65536").End(xlUp).Row
Range("A1:I" & CStr(LastRow)).Select
Selection.Copy Destination:=Workbooks("aaa.xls").Worksheets("sheet").Range("A1")
ActiveWindow.Close

2行目は、csvファイルの最後の行番号を取得しています。
3行目ですが、列がI列まであるときの例です。

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング