エクセルでテキストファイルを開く作業をVBSで自動化したいのですが、下のスクリプトが上手く動作しません。どうすれば上手いこと動くように出来るでしょう?
OpenTextのVBS上での使用法がポイントだと思うんですが。

Dim objXL
Set objXL = WScript.CreateObject("Excel.Application")
objXL.Workbooks.OpenText "hoge.txt", ,1, xlDelimited, xlDoubleQuote, False, False, False, False, False, True, ":", Array(1, 1)
objXL.Visible = True

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

A 回答 (1件)

VBSは余り使ったことはありませんが、VBAのつもりで考えてみました。


以下のようにしたら動きましたが、フルパスにして拡張子をCSV(xlDelimitedなので)にしています。TXTのままではセルに分割されませんでした。

『True, ":", Array(1, 1) 』では、
  『:』も区切り記号として使いたい?(どうするか不明)
  最初の項目を一般の形式に指定?他は指定していないのでやはり一般の形式?
ということで、消去して動かしてみました。
やはり詳しくないため不明な点が多いです。(windows98、Excel2000です) ご参考に。

Dim objXL
xlDelimited=1
xlDoubleQuote=1
Set objXL = WScript.CreateObject("Excel.Application")
objXL.Workbooks.OpenText "D:\・・・\・・・\hoge.csv", ,1, xlDelimited, xlDoubleQuote, False, False, False, False, False
objXL.Visible = True
    • good
    • 0

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

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

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

QVBSからのサーバサイドのEXEの実行

こんにちはSHIRAOといいます。
WScript.Shellを使用してサーバにあるEXEファイルを
起動しようと思っているのですがどうもうまくいきません。WScript.Shellを使用する時に何か設定しなければならないことがあるのでしょうか?

<script language="vbscript">
Function Window_OnLoad
:
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "C:\WINDOWS\system32\notepad.exe"
:
End Function
</script>

Aベストアンサー

>Set objShell = WScript.CreateObject("WScript.Shell")
何か、エラーが出ていたかと思いますが……。

<script language="vbscript">
として、この領域は、Windowsと違うはずですから、直接、Wscriptのメソッド自体は、使えないはずです。

Set objShell = CreateObject("WScript.Shell")

と、してみてください。

一応、Set objShell = Nothing は入れたほうがよいかもしれませんね。

Q=IF(ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)),"",VLOOKUP($A1,sheet2!$A$1:$B $

いつもお世話になってます。
以下の関数式について、お時間がありましたらどうぞご教示ください。

=IF(ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)),"",VLOOKUP($A1,sheet2!$A$1:$B $12,2,FALSE))

「シート2の範囲指定した表にA1セルの値と同じ値の右隣になる値を返せ。ただし該当なき場合は空白とせよ。」

純粋になんでこのような構文になるのかが解りません。

1.ISNAってそもそもなんでしょう?
2.同じ式を繰り返すのはなぜ?
(模範式で、このように同じ式を繰り返す構文があまり無いように思えたのです。)

・参考となる他所のページがあれば教えて下さい。
・素人です。お手柔らかにお願いします。

(エクセル2003)

Aベストアンサー

1.ISNAってそもそもなんでしょう?
ISで始まる情報関数の一つで、#N/A!エラーのみを判定する関数
結果はTRUE(真),FALSE(偽)のいずれかになります。
エラー判定のIS関数には他に
ISERR:#N/A!を除くすべてのエラーを判定する関数
ISERROR:すべてのエラーを判定する関数
があります。

2.同じ式を繰り返すのはなぜ?
ISNAの判定する値がセルでなく数式の結果だからです。
A2=VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)
なら
A3=IF(ISNA(A2),"",A2)
ということになります。A2のように計算の為のセルを省略する為に
=IF(ISNA(数式),"",数式)のように同じ数式を2回繰り返しになってます。

QVBS★Excel★スクリプト★引数の取得

VBSは初心者というか、やったことがありません。ど素人になります。
説明がとてもぎこちないのもその辺からだと思いますが、宜しくお願いします。
VBのシステムからVBSファイル
<内容>
Dim wbname
Dim mypara
Dim file_path
Dim oApp
file_path = "C:\share\Excel\1234.xls"
Set oApp = CreateObject("Excel.Application")
oApp.Visible = True
On Error Resume Next
oApp.UserControl = True
oApp.Workbooks.Open "C:\share\Excel\1234.xls"
Set oApp = Nothing
WScript.Quit
を指定して起動すると(1)Excelで作成したシステムが稼動するように作りたいのですが、(1)を起動する環境設定があり、C:\Documents and Settings\MBS\デスクトップ\1111.vbs #CODE
#CODEが引数になります。
その#CODEをVBSで取得したいのですが、単体で1111.vbsを動かすとExcelファイルは動きます。
元のシステムではexeファイルしかみないようなのですが、例えば電卓とかメモ帳とかは動きます。vbsファイルだけは動きません。どのようにすれば動くかアドバイスをお願いします。
宜しくお願いします。

VBSは初心者というか、やったことがありません。ど素人になります。
説明がとてもぎこちないのもその辺からだと思いますが、宜しくお願いします。
VBのシステムからVBSファイル
<内容>
Dim wbname
Dim mypara
Dim file_path
Dim oApp
file_path = "C:\share\Excel\1234.xls"
Set oApp = CreateObject("Excel.Application")
oApp.Visible = True
On Error Resume Next
oApp.UserControl = True
oApp.Workbooks.Open "C:\share\Excel\1234.xls"
Set oApp = Nothing
WScript.Quit
を指定して起動する...続きを読む

Aベストアンサー

VBScript の中で

WScript.Arguments(0)

のようにすれば一つめの引数を取得できます。
>例えば電卓とかメモ帳とかは動きます。vbsファイルだけは動きません。
の意味が良くわかりません。
質問文のプログラムではそういう部分が無いようですが・・

QAND関数 引数が0以外の値がTRUE,0がFALSEとみなされる の意味について

AND関数の注意点に、質問タイトルが書いてありました。
全文は以下の通りです。
引数が数値の場合には、0はFALSE、それ以外の値はTRUEが引数に指定されたものとして計算されます。

AND関数は全てがTRUEのとき、TRUEを返す関数だと思っています。
FALSEを指定するとは?
ここでのFALSEが完全一致、という意味のFALSEでしょうか?
???
混乱しています(-_-;)
お分かりになる方ご教授くださいませ。
できたら 例など添えていただけるとありがたいです<(_ _)>

Aベストアンサー

>変数aの値が0である場合にはこのAND関数はFALSEを返す、ということでしょうか?
その通りです。
言語的には、数値と数値以外を比較する事はできないので、内部的には、FALSEの値
として0が使われます。
#TRUEは言語によって、1または-1が使われます。

QVBSでのファイル読込、出力操作について

いつもありがとうございます。

掲題の件について、ご教授頂けますでしょうか。

下記のように『start.vbs』を実行すると『a.txt』の行に記載されている実行ファイル名を読み込み
『test.vbs』にファイル名分のコマンドを書き込みしたいです。


例)
-----------------------------
start.vbs (作成途中)
-----------------------------
Set objWShell = CreateObject("wscript.shell")
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objFile = objFso.OpenTextFile("c:\a.txt", 1, False)

' 出力先ファイル
Set objVBSFile = objFSO.CreateTextFile(c:\test.vbs, True)

If Err.Number > 0 Then
WScript.Echo "Open Error"
Else
Do Until objFile.AtEndOfStream
objVBSFile.WriteLine(objFile.ReadLine)
Loop
End If


-----------------------------
a.txt
-----------------------------
adobe.exe
photoshop.exe
****.exe
   ・
   ・
   ・

------------------------------
start.vbs
------------------------------
objWShell.Run "cmd.exe c:\adobe.exe ", 0, True
objWShell.Run "cmd.exe c:\photoshop.exe ", 0, True
objWShell.Run "cmd.exe c:\****.exe ", 0, True
   ・
   ・
   ・

vbsをサイトを参考にして作ってはいるものの、start.vbsを実行すると
a.txtのファイル名をvbsに書き込むのが限界です。
少しずつ勉強していくのですが、本件少し早めに作りたいという背景があり
ご教授頂けませんでしょうか。

また、わかりにくい説明となっておりますが
どうぞ宜しくお願い致します。

いつもありがとうございます。

掲題の件について、ご教授頂けますでしょうか。

下記のように『start.vbs』を実行すると『a.txt』の行に記載されている実行ファイル名を読み込み
『test.vbs』にファイル名分のコマンドを書き込みしたいです。


例)
-----------------------------
start.vbs (作成途中)
-----------------------------
Set objWShell = CreateObject("wscript.shell")
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objFile = objFso.OpenTextFile("c:\a.txt", 1, False)

'...続きを読む

Aベストアンサー

No2だが、書き忘れたことが、
http://msdn.microsoft.com/ja-jp/library/cc392209.aspx

ユーザーガイドの章だが、さらっとよむと30分もあれば、さらっと読める程度の物。いわば概略と呼べる物で、小説で言えばプロローグ程度の物で、ここに本文のキーが凝縮されている物だ。本の読み方の講習だね。

まず、だまされたと思って、ここを最後まで読んでみよう。作成のヒントが凝縮されて書きこまている。200ページ程度のサル本が凝縮されて記載されている。

このようなサイトをサーフィンしてゆくと、本の読み方とか、より良い自分にあった、探していた本を、どのように探し、みいだすのか自分で気がつくものだ。知りたいところをまずみる。そこに自分が知りたい事がどのように記載されているか、抜き出す。それに、どれだけ短時間に出会えたか? それが、あなたにとって最も重要な事。

Qエクセルで同じA列の中に、1,2,3,4,5,6,2,3,4,2,1,3,2,2,2,3,1という

エクセルで同じA列の中に、1,2,3,4,5,6,2,3,4,2,1,3,2,2,2,3,1,3,1というような順番で数字が並んでいます。

その数字の中で、1→3と3→1になるものがいくつあるか求めたいのですが、出す関数・マクロがわかりません。
教えていただけないでしょうか?

よろしくお願いします。

Aベストアンサー

こんばんは!

>A列の中に
とは行方向に数値が入っている!というコトでしょうか?

そうであれば
表示したいセルに
=COUNTIFS(A1:A1000,1,A2:A1001,3)+COUNTIFS(A1:A1000,3,A2:A1001,1)
としてみてください。

「1」の次の行が「3」の場合と
「3」の次の行が「1」の場合をプラスしています。m(_ _)m

QSQLServer2005のストプロでxp_cmdshellを使いvbsファイルを実行できない

ストプロ内でxp_cmdshellを使用し、vbsファイルを実行したいのですが実行できません。
vbsファイルはxp_cmdShellでキックされたらSQLサーバのデータをSELECTし、テキストファイルにSELECTで取得した行数だけ行を追加するという内容です。
vbsファイルはコマンドプロンプトから実行すると動くので正しいと思います。

ストプロにはvbsファイル実行の前後にtableのupdate作業があり、
その2つは行われます。しかし、書き出されるはずのデータがテキストファイルに書き出されません。
vbsファイルは実行されていないようですがエラーは出ず正常終了となり、
xp_cmdshell実行後の戻り値は0で成功となっています。
xp_cmdshellオプションは有効になっており、は混合モードでSysAdminの権限を持つユーザーで処理をしています。

また、ストプロではなく、SQLServerManagementStudioから下記のようにvbsファイル実行しようとした場合、エラーなく正常終了するのですがテキストファイルにデータは追加されていません。
 EXEC @result = xp_cmdshell 'Cscript c:\AddRow.vbs'
しかし、EXEC xp_cmdshell 'dir *.exe'は実行できます。

vbsファイルをxp_cmdshell で実行するときは何か特殊な記述が必要なのでしょうか。何がいけないのかわからず困っております。お気づきのことがありましたらご指摘いただけますようお願い致します。
以下にストプロの中身をを記述します。


BEGIN

  SET NOCOUNT ON;

-- テーブルのアップデート処理
  UPDATE table1 SET Status = 1
  WHERE Status = 0

--ファイル書き出しvbsの実行
  DECLARE @result int
  SET @result = 1
  EXEC @result = xp_cmdshell 'Cscript c:\AddRow.vbs'
--ここは下記のようにCscriptを抜いても試しましたがだめでした。
--EXEC @result = exec master..xp_cmdshell 'c:\AddRow.vbs'

  IF (@result = 0)
  BEGIN
--xp_cmdshellの実行が成功したときのみこの処理に入る予定。
--実際は実行されていないようだが@result が0なのでこの処理を行っている。
    UPDATE table1 SET Status = 2
    WHERE Status = 1
  END
END

ストプロ内でxp_cmdshellを使用し、vbsファイルを実行したいのですが実行できません。
vbsファイルはxp_cmdShellでキックされたらSQLサーバのデータをSELECTし、テキストファイルにSELECTで取得した行数だけ行を追加するという内容です。
vbsファイルはコマンドプロンプトから実行すると動くので正しいと思います。

ストプロにはvbsファイル実行の前後にtableのupdate作業があり、
その2つは行われます。しかし、書き出されるはずのデータがテキストファイルに書き出されません。
vbsファイルは実行...続きを読む

Aベストアンサー

当たり前ですが、このvbsはSQL Serverのサービスが実行します。

つまりSQL Serverのサービスを動かしているプロセスがvbsを実行出来なければいけません。もちろん、書き込みを行なうテキストファイルに対する権限も必要です。

「SQL Server構成マネージャ」でサービスを動かしているユーザを確認してください。このユーザでvbsが実行できるようにしてください。

Qexcel関数で TRUEやFALSEについて

関数入力で TRUE、FALSEがありますが この意味が分かりせん (テキストを読んでも)
FALSEだからといって けして間違いではない??
ようするに どう使い分けたら良いのか
教えてください  

Aベストアンサー

エクセルの関数関係でTRUE、FALSEが出てくるのは、3種類あります。
(1)引数にTRUE、FALSEのどちらかを指定するよう決められているある種の関数。
(2)関数の値が、TRUEかFALSEのどちらかを返す。
(3)FALSE,TRUE関数(論理関数の一つ)
本件は(1どれかが決まっていて、引数があれかこれか2種類ある場合に、どちらかに決まっていると考えればよい。VLOOKUPのTRUE・FALSEなどはなぜ一方がTEUEで他方がFALSEなのか理由は判り難い。
個人的にはVLOOKUP関数は第4引数がTRUE型から機能が
主に用いられ、FALSE型に拡張されたのではないかと推定します。始めから設計する立場ならA型、B型でもよいように思う。
(2)は文字通り真か偽で当てはまる場合がTRUE、当てはまらない場合がFALSEの値を返すので、IF関数で聞くことになります。
(3)これらは特定の
  A.1と2
  B,0と1(これが多い)
  C.0と-1
  D.0とそれ以外
など、OS、言語、アプリなどで違う2値を取る(割り当てられている)ようなのです。
だからこれらを見ると、(2)の場合を除き、(1)では単なる符牒と考えれば割りきれるのではと思います。
使用の関数例(ざっと1部)
VLOOKUP、HLOOKUP
BINOMDIST
GABMMADIST
INDIRECT
MATCHになると照合の型が3種ありTRUE、FALSEを使わない。2種でもTRUE、FALSEを使わないものがありそう。

エクセルの関数関係でTRUE、FALSEが出てくるのは、3種類あります。
(1)引数にTRUE、FALSEのどちらかを指定するよう決められているある種の関数。
(2)関数の値が、TRUEかFALSEのどちらかを返す。
(3)FALSE,TRUE関数(論理関数の一つ)
本件は(1どれかが決まっていて、引数があれかこれか2種類ある場合に、どちらかに決まっていると考えればよい。VLOOKUPのTRUE・FALSEなどはなぜ一方がTEUEで他方がFALSEなのか理由は判り難い。
個人的にはVLOOKUP関数は第4引数がTRUE型から機能が
主に用いられ...続きを読む

QVBSに関する質問

VBSを使ってプログラムを作りたいのですが、
visual studioを使ったデバッグの方法について教えてください。

バージョンはvisual studio express 2013で最新バージョンです。
OSはwin8 64bitです。


・とりあえず、
http://winscript.s41.xrea.com/wiki/index.php?%5B%5B%A5%A8%A5%C7%A5%A3%A5%BF%2FVWD2005%5D%5D
のページにあるように、
タイトル VBSスクリプトの実行(&R)
コマンド C:\WINDOWS\system32\wscript.exe
引数 $(ItemPath?)

を外部ツールに登録した上で

MsgBox "テスト"

と書かれた適当なvbsファイルをD&Dで読み込ませてみたのですが
コードの色分けが行われておらず全て同じ色になっています。
http://www.koutou-software.co.jp/junk/use-vs-project-with-vbscript.html

このページのようにdimなどを青色に表示するにはどうしたら良いですか?



・MsgBox "テスト"の左横にブレイクポイントの赤い丸を付けて
VBSスクリプトの実行をしたのですが、
特にプログラムを停止することなく実行されてしまうのですが
どうすれば指定した位置でプログラムを止めることができますか?


・あとEXEファイルとして出力したいのですが
ビルド機能が見つからないのですがどうすれば良いですか?


・http://www.koutou-software.co.jp/junk/use-vs-project-with-vbscript.html
このページには
Visual C++としてプロジェクトを作成し、いろいろな設定を行った後にするみたいな解説がありますが
この通りやっても、wscript.exeが見つからないというようなエラーが出て
実行することができませんでした。


少し質問が多いですが
よろしくお願いいたします。

VBSを使ってプログラムを作りたいのですが、
visual studioを使ったデバッグの方法について教えてください。

バージョンはvisual studio express 2013で最新バージョンです。
OSはwin8 64bitです。


・とりあえず、
http://winscript.s41.xrea.com/wiki/index.php?%5B%5B%A5%A8%A5%C7%A5%A3%A5%BF%2FVWD2005%5D%5D
のページにあるように、
タイトル VBSスクリプトの実行(&R)
コマンド C:\WINDOWS\system32\wscript.exe
引数 $(ItemPath?)

を外部ツールに登録した上で

MsgBox "テスト"

と書かれた適...続きを読む

Aベストアンサー

推測による所などもあり明確な回答ではありませんが、一部について回答します。
便宜上、質問項目を上から順に番号付けて記載します。


(1)および(2)について。
Visual Studio Express 2013 には3種類のバージョンがありますが、(1)のリンク先に示される Web Developer に相当するのは「Express 2013 for Web」というバージョンです。
このバージョンを利用しているでしょうか?
# 当方はfor Webをインストールしていないので、それを使えばできるのかどうかははっきりとはわかりませんが。。


(3)について。
VBS (VBScript) を利用するのであればexeにはできません。
VBSはその名の通りスクリプトとして実行する目的のものですので、そもそもexeなどのバイナリを作らずに実行したい場合に使うものです。
exeにしたいのならば、たとえばVB.NETなどを利用を検討する必要があります。
(そして個人的には、VB.NETを使うぐらいならC#をおすすめしますが。VB.NETと基本的にプログラムの作り方は同じで、書きやすさが断然上だと思うので。あくまで個人的主観による。)


(4)について。
リンク先にも書かれていますが、その手順は製品版のVisual Studioを利用する場合のものかと思います。
製品版のVisual StudioはExpressのように種類が分かれていないため、C++のプロジェクトを流用してスクリプトデバッガを起動することなどが出来るのだと思います。

ちなみに、当方の手元では「Visual Studio Express 2013 for Windows Desktop」がインストールしてあるのですが、これにはスクリプトデバッガは含まれていないようです。
# コマンドラインから「wscript //x script.vbs」のようにしてもVS2013が選択肢に出てこないので、たぶん。
そのため、「for Windows Desktop」バージョンでメイクファイルプロジェクトを利用しても同じことをするのは不可能そうです。

推測による所などもあり明確な回答ではありませんが、一部について回答します。
便宜上、質問項目を上から順に番号付けて記載します。


(1)および(2)について。
Visual Studio Express 2013 には3種類のバージョンがありますが、(1)のリンク先に示される Web Developer に相当するのは「Express 2013 for Web」というバージョンです。
このバージョンを利用しているでしょうか?
# 当方はfor Webをインストールしていないので、それを使えばできるのかどうかははっきりとはわかりませんが。。


(3)について。
VB...続きを読む

QVLOOKUPのTRUEとFALSEの意味は

Excel2010を使っています。VLOOKUP関数を使うときに、検索掛ける値と掛けられる値が一致しなくてもいい時は、例えば=VLOOKUP(A8,E8:G30,3,TRUE)などと書きます。完全に一致する検索の場合は、TRUEではなくFALSEを入れます。
 このTRUE(真)とFALSE(偽)の意味は何でしょうか。どう解釈すると覚えやすい(説明しやすい)でしょうか。

Aベストアンサー

使い方で覚えます。
一例ですが
重量などある範囲で料金が決まっていて検索をかける場合
TRUE
50~100gの間などで 60gと云った一致しない検索値

品名など、固定した値で、価格が決まっている場合
FALSE

画像を添付しておきます。

なぜ 完全一致が FALSE で 近似が TRUE とかは
わかりません。


人気Q&Aランキング

おすすめ情報