VBScript Script ファイル (.vbs)でエクセル表の加工方法とエラー対処法

このQ&Aのポイント
  • VBScript Script ファイル (.vbs)を使用してエクセル表を加工する際、先頭行の固定方法やエラー対処方法について説明します。
  • センセーショナルなタイトルが必要
  • VBScript Script ファイル (.vbs)でエクセル表を加工する際の注意点と便利なコードについて解説します。
回答を見る
  • ベストアンサー

VBScript 先頭行の固定

VBScript Script ファイル (.vbs)を書き出して、エクセル表の加工をしようとしています。 Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True Set objWorkbook = objExcel.Workbooks.Open("~~~ ・ ・ ・ 先頭行を固定したく、下記のようにしましたがエラーになります。 objWorksheet.Range("A2").Select objWorksheet.ActiveWindow.FreezePanes = True また、データーのある最下行+2にデーターの合計を入れるように、追加コードを記述したいのですが、どのようにするのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

とりあえず、objWorksheetが唐突なので、一応、 Set objWorksheet = objWorkbook.Sheets("Sheet1") ' ' ↑要指定◆シート名。例示はシート名"Sheet1" のような記述があるものとして、、、。 例えば、こんな感じで。 ' ' ↓シートがひとつしかないと保証されるならこの行は不要。 objWorksheet.Select ' ' == 先頭行の固定 == With objExcel.ActiveWindow ' With objWorkbook.Windows(1) .SplitRow = 1 .FreezePanes = True End With ' ' == 「データーのある最下行+2にデーターの合計」SUM関数で合計を求める例 == With objWorksheet ' ' ↓要指定◆最下行基準列。例示"A"はA列を基準に最下行を取得する場合 nRow = .Cells(65536, "A").End(-4162).Row ' 最下行 ' ' ↓要指定◆合計を出す列範囲。例示は"A:C"列に合計を出す場合 .Range("A:C").Rows(nRow + 2).FormulaR1C1 = "=sum(r2c:r" & nRow & "c)" End With

situmonnsya
質問者

お礼

ありがとうございます! ありがとうございます!! 途方に暮れていました。解決です。 ありがとうございます!!!!!

その他の回答 (1)

  • nidoking
  • ベストアンサー率69% (18/26)
回答No.1

Rangeではなく、Rows("2:2").Select を使えばうまくいきました。

関連するQ&A

  • VBScriptで自動リンクONでExcelファイルのOpen

    お世話になっております。VBScriptでExcelの既存ブックファイル をオープンさせるのを見よう見真似で作成したのですが、開こうと しているブックに自動リンクが設定されていて、毎回 「開いているブックには、ほかのファイルへの自動リンク・・・・」 と聞かれ「Y」をクリックしています。 希望としてはYを自動で選択してオープンしてくれたらと思っています。 調べてみてUpdateLinkがTrueとか書けばいいように思っていろいろ 試してみたのですがイマイチうまく行きません。 すいませんが教えてもらえませんか? [Source]------------------------------------------------------- Option Explicit Dim objExcel 'エクセルオブジェクトを作成します Set objExcel = CreateObject("Excel.Application") 'エクセル画面を表示します objExcel.Visible = True 'ワークブックを開きます objExcel.Workbooks.Open "C:\Book1.xls" 'エクセルオブジェクトの破棄 Set objExcel = Nothing

  • VBScript実行時エラーについて

    filemakerでデータをコピーし下記のようなVBScriptを使いエクセルファイル(グラフを下準備してある)を開きそのデータを貼り付けグラフを完成させ、そのグラフをgifファイルにエクスポートで保存し、次にfilemaker側でそのgifファイルを読み込む作業するスクリプトを組んでいます。ここで,PCを起動したときとか、作業中でも度々VBScript実行時エラー(パスまたはファイル名が無効です)が発生します。エクスポート先のgifファイル名を替えると1時的に問題は解決しますが・・・あくまで一時的なものなのでなんとか根本的解決策をご教示願います。 Set objExcel = CreateObject("Excel.Application") Set objWorkbook = objExcel.Workbooks.Open("C:\Users\hhh gggg\Documents\FM_Trial\グラフ6.xlsx") objExcel.Visible = True objExcel.Sheets("sheet1").Select Createobject("WScript.Shell").AppActivate("グラフ6.xlsx") ' --A1のセルに値を設定 objExcel.Sheets("sheet1").Range("A1").Select objExcel.Sheets("sheet1").Paste objExcel.Sheets("sheet1").ChartObjects("グラフ 1").Chart. Export ("C:\Users\hhh gggg\Documents\FM_Trial\test61.gif") ' --0.5秒待つ WScript.Sleep(1500) ' --Excel終了 objWorkbook.Close False objExcel.Quit ' --Excelオブジェクトクリア Set objExcel = Nothing

  • VBscriptでEXCELを起動

    今、非常に悩んでいる問題があります。 VBscriptでEXCELを起動したいのですがうまく行きません。 (Web画面であるボタンを押下すると、Webサーバ上のEXCELが開くというものです) プログラム的には (1) Dim excel Set excel = GetObject("", "Excel.Application") excel.Visible = True excel.Workbooks.Open "http://ホスト名/フォルダ名/ファイル名.xls" Set WK_excel = Nothing (2) Dim excel Set excel = CreateObject("Excel.Application") excel.Visible = True excel.Workbooks.Open "http://ホスト名/フォルダ名/ファイル名.xls" Set WK_excel = Nothing の二通り(他いろいろ)を試したのですが、何もおきずに終了します。 同じことをVB6.0でするとうまく行くのですが・・・ はっきり言うとVBscriptに関して知識がなく 質問内容も説明が分かりにくいかもしれませんが よろしくお願いいたします。

  • VBScript で Excel の Comboboxの操作(値の選択)はできますか?

    VBScript(?)で Excel内に設定されているComboboxを選択するようにさせたいのですがうまくできません。やり方が分かりません。そもそもScriptではできないのでしょうか? Visual Basicでないとできないのでしょうか? どなたかご存知の方がいらっしゃいましたら、教えてください。 本当にほんとうに最近勉強しだしたばかりのため、質問自体がおかしなことを書いているかもしれませんが、その場合はご容赦下さい。 ●会社で使っているEXCEL帳票があるのですが、毎回、同じような内容をマウスで一つ一つセルを選び値を入力したり、メニュー(Combobox?)を選択する作業が面倒なため、Scriptで自動的に値を入れたり選択させて効率化を図ろうと考えています。 普通のセルの場合、次のようなコードで書き込みができるのですが、 あらかじめ登録された内容から選択するセル(=これを"Combobox"というものと理解しています)に対しては、書き込みや選択ができません。 Comboboxのセルの選択は、どのようなコードでできるのか、教えていただけないでしょうか? いろいろ検索してみたのですが、該当するものが見つからなかったため、質問させていただきました。 (上記で書いたVBScriptは、実はWindows Scriptと言うのが正しいかもしれません) <普通のセルに値を書き込む場合> set objExcel = CreateObject("Excel.Application") Set objWorkbook = objExcel.Workbooks.Open("C:\Documents and Settings\xxxxxx\My Documents\test.xls") Set objWorksheet = objWorkbook.Worksheets("YYYYYYYY") ObjExcel.Visible = True objWorksheet.Cells(10, 5).Value = "ZZZ" <Comboboxの値をScriptで選択するには??> .

  • VBscriptでのエクセルの起動について

    phpで開発しているのですが 問題はVBscriptでの問題と思われますのでここで 質問させてください。 vbscript上で Dim xl Dim book, sheet Set xl = CreateObject("Excel.Application") xl.Visible = false Set book = xl.WorkBooks.Add("http://**/****.xls") xl.DisplayAlerts = False -------- phpでのエクセルへのデータ操作 -------- xl.DisplayAlerts = true xl.visible = true set book = Nothing Set xl = Nothing という形でエクセルを起動して、データを挿入してから 画面上に表示という事をしています。 このときに、エクセルはちゃんと起動してくるのですが アクティブウインドウになってくれません。 タスクバーのボタンがピコピコ点滅するだけです。 クリックすると前面に表示されるのですが。。。 どうにか、自動的に前面に出すことはできないでしょうか?

  • vbs 文字位置を中央に

    vbscriptでエクセルファイルへ出力するスクリプトを作成しています。 エクセルファイルのセルに文字列を入力し、文字を中央揃えにしたいのですが、うまくいきません。 ----------------------------------------- Dim FSO, objExcel, objBook, objSheet Set FSO = CreateObject("Scripting.FileSystemObject") Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True Set objBook = objExcel.Workbooks.Add Set objSheet = objExcel.Worksheets("Sheet1") objSheet.range("a1") = "test" objSheet.range("a1").HorizontalAlignment = xlHAlignCenter Set FSO = Nothing : objExcel = Nothing : Set objBook = Nothing : Set objSheet = Nothing ----------------------------------------- どうすれば、中央揃えにできますでしょうか? よろしくおねがいします。

  • VBSCriptで図形が選択できません

    困っています。 どなたかご教授願えないでしょうか。 実現したいことは、エクセルで作成したファイル「Book1.xlsm」の最初のSheetに配置された図形のうち、名前にFigが含まれるものだけを選択することです。 VBScriptで実現したいものの、「インデックスが境界を超えています」というエラーが出ます。 なお、エクセルマクロではエラーなく実現できました。 環境は以下のとおりです。 OS:Windows7 64bit Excel:2010 以下、VBScriptのコード→ Option Explicit Dim objExcel Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True Dim objWorkbook Set objWorkbook = objExcel.Workbooks.Open("C:\VBSTest\Book1.xlsm") Dim arrShapeMatched() Dim sp Dim i i = 0 For Each sp In objExcel.Sheets(1).Shapes If InStr(sp.Name, "Fig") >= 1 Then ReDim Preserve arrShapeMatched(i) arrShapeMatched(i) = sp.Name i = i + 1 End If Next objExcel.Sheets(1).Shapes.Range(arrShapeMatched).Select 'この文を実行時、インデックスが境界を超えていますというエラーがでます ←以上、VBScriptのコード なお、ほぼ同様のコードをエクセルのマクロで書くとエラーは出ず、意図した通りの結果になります。 以下、マクロに書いたコード→ Sub SelectShape() Dim arrShapeMatched() Dim sp Dim i i = 0 For Each sp In ActiveSheet.Shapes If InStr(sp.Name, "Fig") >= 1 Then ReDim Preserve arrShapeMatched(i) arrShapeMatched(i) = sp.Name i = i + 1 End If Next ActiveSheet.Shapes.Range(arrShapeMatched).Select 'マクロではエラーにならない End Sub ←以上マクロに書いたコード 投稿の都合上、xlsm形式のファイルを読み込んでいますが、実現したい形はマクロが含まれないファイル形式としたいと考えています。 よろしくお願いします。

  • なぜ開かない?

    VBScriptでブラウザからEXCELのシートを開くプロシージャを作りたいのですが、以下のようにしても開けません。ただし、実際に手動でこのEXCELファイルを開くと、「すでに開かれています」とのメッセージが出るので、開かれているけど表示されないといった、おかしな現象が起きていると思われます。どこが間違っているのでしょうか。 Dim objExcel Set objExcel = CreateObject("Excel.Application") sub openExcel Dim objFs Set objFs = CreateObject("Scripting.FileSystemObject") if true = objFs.FileExist("C:\・・ファイル名.xls") Then objExcel.WorkBooks.Open("C:\・・ファイル名.xls") end If end sub

  •  VBSの作り方がわかりません

    下記のようなVBSを使いたいのですが   テキストでなくエクセルをアクティブにしたいのですがうまくいきません   どのように直せばよいのかお教えください。  お願いいたします。 Dim excel With CreateObject("Wscript.Shell") .Run "D:\DATA\T.txt" End With On Error Resume Next Set excel = GetObject(, "Excel.Application") If Err.Number <> 0 Then Set excel = CreateObject("Excel.Application") End If excel.Visible = True excel.Workbooks.Open "D:\DATA\Sin1.xls"

  • このVBSの修正点を教えてください。

    Dim objExcel 'Excelのオブジェクトを作成する Set objExcel = CreateObject("Excel.Application") 'Excelを見えない形で表示させる。 objExcel.Application.Visible = True 'Excelブック①のパスとシート名を選択 objExcel.Workbooks.Open("C:\Users\user\Desktop\1_作成\銀行借入調達返済\2307-2406銀行借入調達返済 (全社表示).xlsm ") objExcel.Worksheets(objExcel.Worksheets.Count).select '実行するマクロ名を指定。 objExcel.Application.Run "CopyWorksheets_And_Autofill" objExcel.Application.Run "CopyNewBook" Set objExcel = Nothing 保存はANSIで.vbsで保存しました。

専門家に質問してみよう