• 締切済み

excel マクロでシート名取得

VBscriptでエクセルファイルのフルパスを記述したテキストファイルから 読み込んで、そのエクセルファイルにあるシート名をすべて 違うテキストファイルに出力したいのですが、どうすればよいのでしょうか?

みんなの回答

  • pauNed
  • ベストアンサー率74% (129/173)
回答No.4

こんにちは。 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)
回答No.3

こんちには。 その質問では、ちょっと厳しいですね。 できないとは言わないけれども、Excelはあるのですか? あるなら、VBScript を使う意義がないと思うのです。 >エクセルファイルのフルパスを記述したテキストファイルから読み込んで、 というのは、VBScript では、最初に、Argument を取得するところから入っていかなくてはならないと思います。それで、Text ファイルの拡張子をチェックして……とか。 しょせん、CreateObject で、Excelオートメーションを呼び出すぐらいなら、最初から、Excel VBAを使えばよいのではないでしょうか?それとも、Excelのファイルだけで本体がないので、バイナリ検索でもするというなら、また話は別ですが。(ちなみに、そのスキルは私にはありません)

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

お望みの回答かどうかはわかりませんが、何らかのヒントになればと思い書き込みました。 シート名の取得は、 シート名 = 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)
回答No.1

サンプルを丸ごと書けということなのか、例えばテキストファイルの読み込み方法が分からないというレベルなのかどの辺なのでしょう。

Shu-shin
質問者

補足

テキストファイルから読み込んで、ブック内全てのシート名の取得方法がわかりません。よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • WSHでエクセルのあるシートをテキストファイルに変換したい

    こんにちは。 OSはWin2K,WSHは5.6,Excelは2002を使用しています。 「月計表.xls」には「1月」から「12月」と「合計」 というシートがあります。 このうち「合計」シートをテキストファイル(タブ区切り) としてデスクトップに保存したいのですが、 VBScriptではどのように記述すればよろしいでしょうか? よろしくお願いいたします。

  • エクセル:シートを保存するマクロ

    あるエクセルファイルFile.xls内に、4つのシートSheet1,Sheet2,Sheet3,Sheet4があるとして、 4つのシートを個別にcsvファイルとして保存するようなマクロを作りたいです。 ▼ソースです  (ここまでのコードで、Pathに保存先のディレクトリ名を取得する部分があるとお考えください)  Filename = "Sheet1" '保存するシート名は、Sheet1~4 GoSub Save1 Filename = "Sheet2" GoSub Save1 Filename = "Sheet3" GoSub Save1 Filename = "Sheet4" GoSub Save1 '保存完了後は、File.xls内Sheet1のCells(4, 1)にカーソルを配置。 Sheets("Sheet1").Select Cells(4, 1).Select Exit Sub Save1: Sheets(Filename).Select fname = Path & "\" & Filename & ".csv" ActiveWorkbook.SaveAs Filename:=fname, FileFormat:=xlCSV, CreateBackup:=False Return End Sub 以上のソースで実行すると、 指定したディレクトリにsheet1.csv、sheet2.csv、sheet3.csv、sheet4.csvの4ファイルができます。 ここまでは問題ないのですが、 マクロを実行後、Sheet4.csv(最後に保存したファイル)が開かれた状態になってしまいます。 しかも、ファイル名はSheet4.csvなのに、シートSheet1~4を持っている状態です。 普通にSheet4.csvファイルを開くと、シートはSheet4しかありません。 状態が伝わるでしょうか? File.xlsのマクロを実行しているので、実行完了後もFile.xlsを開いておきたいのですが、 どのような記述を加えればよいでしょうか? マクロ(VBA)は使い始めたばかりなので説明されても理解できないかもしれませんが、 できればよろしくお願いいたします。

  • エクセルのマクロについて

    人が作ったマクロで困ってます。 数年分の書類を一つのファイルでシートに分けて作ってます。 マクロでファイル名を付けて保存するまではいいのですが、 ファイル名で使いたい日付がテキストボックスで作られているため、 うまくいきません。 テキストボックス内の文字列をコピーしてファイル名に使えないでしょうか? エクセルは2007です。(2003もあります)

  • エクセルVBAでテキストを出力したい

    エクセルVBAでテキストを出力したいのですが、 やり方がわからないので教えてください。 仮にSheet2のA列に文章があるとして、 シート全体を1つのテキストファイルとして出力し、 ファイル名をSheet1のA1セルにしたいです。 同じような質問もあるのですが、ファイル名に関しては、 ちょっと見当たらなかったので質問しています。

  • エクセルマクロで沢山のPDFをコピペしたい

    Windows7でエクセル2010を使っています。 アドビリーダーはXIです。 あるフォルダの中にあるPDFのファイル名の一覧がフルパスでエクセルにあります。 これはマクロで抽出しました。 PDFの内容はテキスト形式のみです。 そのファイル名の一覧を元に、次から次へPDFを開き、1ページ全てをコピーしてエクセルで新しいシートを作り、貼り付ける、という作業を連続で行いたいのです。 もしくは初めから一覧は作らなくても良かったのかもしれませんが、その都度違うフォルダを処理していくので、一覧にしてみました。 一度の作業で処理するのは一つのフォルダのみです。 色々試してみましたが、歯が立ちません。 どうぞお教え下さい。 同じような質問をしたばかりですが、回答が増えなくかったので、改めて質問させていただきました。

  • エクセルのマクロでHTMLファイルを出力するには

    エクセルのマクロでHTMLファイルを出力するには 下記アドレスのソースをもとに、エクセルでHTMLファイルを複数出力できたらと考えています。 内容は、sheet1のA列にテキストが入っていると、それを任意のファイル名(ダイアログ)でテキストとして保存が可能になるソースです。 ttp://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_040.html 出来ればこれを以下のように変えたいと考えております。 ●シート名「1」~「50」の計50シートのA列のテキストを、 それぞれのシート名+任意の文字列で保存をしたい。 ●ファイル名の任意の文字列については、シート内のセル (例:sheet1のA4)に記載されている内容としたい。 ●ファイル形式は、HTML形式で保存をしたい。 ●保存先のフォルダは任意のディレクトリ内 (例:C:\Documents and Settings\All Users\デスクトップ)の配下に、 シート内のセル(例:sheet1のA3)に記載されている内容を フォルダ名として、新規に作成し、その中に保存したい。 恐れ入りますが、ご回答よろしくお願いいたします。

  • Excelシートの上限は?(マクロ込)

    こんにちは いつもお世話になります。 今エクセルのSheet1にいろいろな振り分け計算を記述して、その結果を 品目別にシート2~5、6~9、10~13(4シート1組)で出力させています。 品目が増えてシートを追加したのですが、今まで動いていたマクロが動かなくなってしまいました。 シートが増えたのが原因だと思うのですが、そもそも1ブック内のシート数の上限はあるのでしょうか?(この程度でひっかかる?) また単純に回避する方法はあるのでしょうか? ご教示いただければ幸いです。 よろしくお願いいたします。

  • エクセルで別ファイルのシートの貼り付けマクロ

    マクロ初心者です。よろしくお願いします。 excelファイルのシートに同じシート名csvファイルのデーターの貼り付けをしたいのです。 ↓詳しくは。 excelファイルがあります。(ファイル名:全社) シート名=集計、1、2、3、4、5、6、7、8、9、10(固定) csvファイルがあります。1~始まり数は変動(1~3だったり、1~7とか) 1ファイル=1シート、ファイル名とシート名は同じ excelファイルのシート(1~10)に、開いたcsvファイルの同じシート名(1~10)のデータを貼り付けたい。 毎回コピー・貼り付けの繰り返し作業なので、マクロ作成を試しているのですが、うまくいきません。 教えてください。お願いします。

  • エクセルのマクロ

    エクセルに画像を貼りつけるマクロを教えてください。 エクセルにたくさんの数字が入っています。 その数字と同じファイル名の画像を貼りつけたいです。 数字は何度も同じものが出てくるので、エクセルのシートに入っている数字すべてに張り付けたいです。 よろしくお願いいたします。

  • HTMLで、エクセルのワークシートへリンク

    HTMLで、エクセル内のワークシートへリンクさせたいのですが その絶対パスの書き方がわかりません。 C:\Documentsから始まって~\エクセル\●●.xlsで、 エクセルフォルダ内、 ●●のエクセルファイルまでは開くことができました。 で、さらに、 そのエクセルの中のワークシートまで指定したいのですが、 ワークシートのパスは どのように書けばいいのでしょうか? ●●.xls\ワークシート名 では開きませんでした。 よろしくお願いします。

黒だけ印刷されない
このQ&Aのポイント
  • 黒だけ印刷されないトラブルについて相談します。
  • MFC-J6983CDWで黒だけ印刷されない問題が発生しました。
  • パソコンとの有線LAN接続で黒だけ印刷されない問題が発生しています。
回答を見る