- 締切済み
excel マクロでシート名取得
VBscriptでエクセルファイルのフルパスを記述したテキストファイルから 読み込んで、そのエクセルファイルにあるシート名をすべて 違うテキストファイルに出力したいのですが、どうすればよいのでしょうか?
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- pauNed
- ベストアンサー率74% (129/173)
こんにちは。 vbs詳しくないですが、この辺りを参考にすればできるかも 『Visual Basic または VBA から ADO を Excel データで使用する』 http://support.microsoft.com/kb/257819/ja http://hanatyan.sakura.ne.jp/index.html 『ADOを使ってExcelのシート名を高速に取得する』 http://hanatyan.sakura.ne.jp/dotnet/Excel05.htm 簡単なサンプルとしては下記。 Option Explicit Const adSchemaTables = 20 Dim adoCn Dim adoRs Dim wbName Dim shName Dim x() Dim j Dim chk On Error Resume Next wbName = "c:\work\Book1.xls" Set adoCn = CreateObject("ADODB.Connection") adoCn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & wbName & ";" & _ "Extended Properties=Excel 8.0;") Set adoRs = adoCn.OpenSchema(adSchemaTables) Do Until adoRs.EOF If adoRs Is Nothing Then Exit Do shName = adoRs.Fields("TABLE_NAME").Value chk = Right(shName, 1) If chk Like "$" Or chk Like "'" Then ReDim Preserve x(j) x(j) = wbName & vbTab & Left(shName, Len(shName) - 1) j = j + 1 End If adoRs.MoveNext Loop adoRs.Close Set adoRs = Nothing adoCn.Close Set adoCn = Nothing WScript.echo Join(x, vbCrLf) & vbCrLf 'win2000/ado2.7
- Wendy02
- ベストアンサー率57% (3570/6232)
こんちには。 その質問では、ちょっと厳しいですね。 できないとは言わないけれども、Excelはあるのですか? あるなら、VBScript を使う意義がないと思うのです。 >エクセルファイルのフルパスを記述したテキストファイルから読み込んで、 というのは、VBScript では、最初に、Argument を取得するところから入っていかなくてはならないと思います。それで、Text ファイルの拡張子をチェックして……とか。 しょせん、CreateObject で、Excelオートメーションを呼び出すぐらいなら、最初から、Excel VBAを使えばよいのではないでしょうか?それとも、Excelのファイルだけで本体がないので、バイナリ検索でもするというなら、また話は別ですが。(ちなみに、そのスキルは私にはありません)
- hiroyukitank
- ベストアンサー率30% (3/10)
お望みの回答かどうかはわかりませんが、何らかのヒントになればと思い書き込みました。 シート名の取得は、 シート名 = ActiveWorkbook.ActiveSheet.Name でできますね。 いまあるブック内の全部のシート名を取得するためにこんな感じでやっていけばなにかいい方法がみつかるのでは? Dim WSN As String, WSN2 As String 'シート名の変数の定義 Dim i As Integer, j As Integer i = Worksheets.Count 'シート数をカウント WSN2 = ActiveWorkbook.ActiveSheet.Name '最初に表示していたシート名を変数に格納 For j = 1 To i WSN = Sheets(j).Name 'シート名を格納 Sheets(WSN).Select 'シートを選択(ここで選択したシートになんらかの処理ができますね。また、シートを選択する代わりにテキストファイルに書き込みなどすればよいでしょう) Next Sheets(WSN2).Select '最初に表示していたシートにもどる
- popesyu
- ベストアンサー率36% (1782/4883)
サンプルを丸ごと書けということなのか、例えばテキストファイルの読み込み方法が分からないというレベルなのかどの辺なのでしょう。
補足
テキストファイルから読み込んで、ブック内全てのシート名の取得方法がわかりません。よろしくお願いします。