エクセルで下記のVBAで一太郎が起動し、任意のファイルを読み込めます。
ワード、ロータス、三四六など同様に読み込みたいのですが、
多分"JXW.application"を変更すれば良いと思うのですが、それぞれどうすれば
よいのでしょうか。また、現在この方法で読み込んだ時、画面下にメニューアイコンの形で読み込まれることがあります、画面サイズの制御法を教えてください。
さらに"JXW.application"に相当する情報は、何に記載されているのでしょうか。
Dim Taro As Object
Set Taro = CreateObject("JXW.application")
Taro.Visible = True
Taro.documents.Open "ドライブ名:ファイル名.拡張子"
なにぶんVBAについて素人なので、よく理解しておりませんので、宜しく
ご教示願います。

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

A 回答 (2件)

wordは、


set a= CreateObject("word.application")
ですね。

Lotus,三四郎については、今手元に環境が無いんで、不明です。


どのように知るかですが、まず、Lotusや三四郎のマクロのヘルプ、仕様書があれば書いてある可能性があります。

それらの資料から見つけることが出来なければ、VBAのエディタの画面で、[ツール]-[参照設定]すると、組み込み可能なオブジェクトの一覧が表示されますので、まず、これを使って、該当するオブジェクトを組み込んでみます。(Wordなら、Microsoft Word 9.0 Object Libraryです。)
で、
dim new
とか打ち込んでやると、組み込み可能なオブジェクトの一覧が表示されますが、そっから見当をつけるといいです。


一太郎の画面サイズの変え方ですが、これも一太郎のマクロ関係のヘルプに記述が無いのであれば、上記の「参照設定」を使って調べるしかないですね。

参考までに、Word文書を最大化の状態で開くには、(「参照設定」Wordの機能を組み込んでから)

Dim WordApp As New Word.Application
WordApp.WindowState = wdWindowStateMaximize
WordApp.Visible = True

のようにします。 理解の助けのために、参照設定を使わないバージョンも書いてみました。
Dim WordApp As Object
Set Wordapp = CreateObject("Word.Application")
WordApp.WindowState = wdWindowStateMaximize
WordApp.Visible = True
    • good
    • 1
この回答へのお礼

ありがとうございました。
種々のファイルに、説明文を付けて、エクセルで管理しようと考えました。
土日に書店で立ち読みし、ワード、エクセルは分かりました。
三四六、ロータスは、いろいろ調べたり試したりしましたが未だに分かりません。
また宜しくお願いします。

お礼日時:2001/02/27 17:16

>種々のファイルに、説明文を付けて、エクセルで管理しようと考えました。



これに関しては、すべてのアプリケーションで同様の操作が可能、というわけではないです。
あくまで、「対応したアプリケーション」が対象です。
ロータスや三四六は多分対応していると思いますが。

先日、Lotus1-2-3のかなり古いバージョンを触る機会があったのですが、その時の感触から言うと
CreateObject("lotus123.application")
あたりが臭そうです。

詳しくは、前述の「参照設定」を使った方法でお試しください。
    • good
    • 0
この回答へのお礼

ありがとうございました。
私のパソコンに123が現在インストールされていないので、
今は、確かめることができませんがやってみようと思います。

お礼日時:2001/02/28 17:45

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

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

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

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

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

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...続きを読む

QEXCEL VBAから他アプリケーションを操作することは可能ですか?

こんばんは。

VBAの本を購入し勉強していますが、VBAと他アプリケーションとの連携について記載が少なく(txtやcsvファイル操作)、どこまで出来るんだろうという不安があり質問しました。

(1)EXCEL VBAから他アプリケーションを起動し、設定操作、命令を送り操作することは可能でしょうか?
イメージとしては他アプリに一方的に命令を送り操作できれば良しです。(アプリ側からのリターン要求はしません。)

(2)第2の質問です。
VBAで他アプリを起動した状態で人が操作している感覚でマウスを操作できますか?(利用方法:他アプリの●ボタンを押したい!!)
目の前にソフトがあるのに触る操作は出来ないものでしょうか?
いろいろ調べて見ましたが、この様な事例はありません。
駄目元ですが、こんな操作を知っていましたら教えてください。
こんな操作ができればいいな~

Aベストアンサー

#2,4 です。

> EXCEL2000内の特定のセルに規定値外のデータが入力された場合に
> UWSCを起動して...

UWSC のスクリプトが完成しているとすれば、起動オプション付きで
バッチ処理すれば良いでしょう。実行タイミングは、シートまたは
ThisWorkbook の Change イベントが使えます。

例)シートモジュール

Private Const EXE_PATHNAME As String = "C:\Program Files\uwsc\uwsc.exe"
Private Const DQ      As String = """"

Private Sub Worksheet_Change(ByVal Target As Range)

  Dim rChange   As Range
  Dim sCommand  As String
  Dim sScriptFile As String

  ' // 実行する UWSC スクリプト
  sScriptFile = "C:\sample.uws"
  ' // UWSC の起動オプションは UWSC のヘルプを参照
  sCommand = DQ & EXE_PATHNAME & DQ & " " & _
        DQ & sScriptFile & DQ
  
  ' // 変更されたのが単一セルかつ A 列でなければ終了
  If Target.Cells.Count > 1 Then Exit Sub
  Set rChange = Intersect(Target, Columns("A"))
  If rChange Is Nothing Then
    Exit Sub
  End If
  
  ' // さらに値が TEST だった場合のみ実行
  If rChange.Value = "TEST" Then
    Shell sCommand, vbNormalFocus
  End If

End Sub

#2,4 です。

> EXCEL2000内の特定のセルに規定値外のデータが入力された場合に
> UWSCを起動して...

UWSC のスクリプトが完成しているとすれば、起動オプション付きで
バッチ処理すれば良いでしょう。実行タイミングは、シートまたは
ThisWorkbook の Change イベントが使えます。

例)シートモジュール

Private Const EXE_PATHNAME As String = "C:\Program Files\uwsc\uwsc.exe"
Private Const DQ      As String = """"

Private Sub Worksheet_Change(ByVal Target As Range)

  ...続きを読む

Q一太郎マクロ

一太郎2012を使用しています。マクロで「行末移動」は

行末(.移動先=2)

でいいようなのですが,段落の最後への移動(あるいは「次の改行への移動」)はどのようになるでしょうか。

記述方法を教えていただくか,一太郎マクロの基本操作を紹介しているページを教えていただけるとありがたいです。

一太郎のマクロヘルプを起動すると,「このプログラムからヘルプを取得できない理由というメッセージの画面になってしまいます。」

Aベストアンサー

EndOfSentence()
または
文末()

()内は何も無しです。

>一太郎マクロの基本操作を紹介しているページ
残念ですが、私も見かけません。

マクロヘルプは、「ツール」→ 「マクロ」→ 「実行・編集」、出てくるダイアログの左やや下の 「新規」 ボタンをクリック、名前を付けるダイアログが出ますので適当に入力してOK、JSマクロ編集ツールが出てきますのでそこのヘルプを見てください。
 
個別の関数については、「ツール」→ 「マクロ」→ 「マクロバイザー」 で出てくるダイアログで関数を選んで左やや中央の 「マクロヘルプ」 ボタンで個別の解説が出てきます。

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

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

Aベストアンサー

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

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

QEXCEL VBA で他のアプリケーションを開く方法について

EXCEL VBAで他のアプリケーションを開く方法について教えていただきたいことがあります。
現在開いているエクセルのブックと同じフォルダにある、"AAA"という名称のsqc形式のファイル(EAST社のSkyLink Ver9.0のコマンドファイルです)をVBAで開く。
SHELL関数で開くと思っていたのですが、

Sub Test()
Dim MyPath As String, MyTask As Double
MyPath = ActiveWorkbook.Path & "\"
MyTask = Shell(MyPath & "AAA.sqc")
SendKeys "%FO", True
End Sub
とすると
「プロシージャの呼び出し、または引数が不正です」
というメッセージが出てしまいます。
如何せんSHELL関数を使うのが初めてでして、色々調べても
どうしても解決策にたどり着きません。
どうぞよろしくお願いいたします。

Aベストアンサー

こんにちは。

>SHELL関数で開くと思っていたのですが、

たぶん、読み違えたのだと思います。Shell でファイルを開くというのは、全部で3つの種類があります。それぞれ使い方が違います。ご質問に書かれているShell は、Excelの内部から呼び出す、つまり、Excelの配下からの呼び出しですから、ファイル名を指定しても、それを起動するソフトは分かりません。

一旦、Excelから降りてあげないといけないのですが、しかし、その方法が、通常2つの種類あります。ひとつは、Win OSからと、コマンドラインからと二種類あります。(厳密には、Win32APIなど、後二つあります。)

使いやすい方法は以下の方法ですが、拡張子が登録していることと、OS によって、その挙動が変わるはです。若干、エキスプローラからクリックしたものとは違うようです。

'-------------------------------------------

Sub TestSehll_1()
  Dim objSh As Object
  Dim myPath As String
  Dim fn As String
  '-------------------------------------------
  fn = "AAA.sqc"
  myPath = ActiveWorkbook.Path & "\" & fn
  '-------------------------------------------
  If Dir(fn) = "" Then
    MsgBox "ファイルがありません。", 48
    Exit Sub
  End If
  With CreateObject("Shell.Application")
    .ShellExecute myPath
  End With
  ''SendKeys "%FO", True 'これは、どうかな?
End Sub

なお、SkyLink というソフトの仕様を読んでみないけれども、検索すると、そのソフト名と同時に、Excel マクロという名前が出てきます。もしも、オートメーションを想定したソフトである場合は、このように外部から動かそうとはせずに、もっと確実な方法があるかもしれません。

こんにちは。

>SHELL関数で開くと思っていたのですが、

たぶん、読み違えたのだと思います。Shell でファイルを開くというのは、全部で3つの種類があります。それぞれ使い方が違います。ご質問に書かれているShell は、Excelの内部から呼び出す、つまり、Excelの配下からの呼び出しですから、ファイル名を指定しても、それを起動するソフトは分かりません。

一旦、Excelから降りてあげないといけないのですが、しかし、その方法が、通常2つの種類あります。ひとつは、Win OSからと、コマンドラインからと...続きを読む

Qエクセルの複数同時置換

エクセルで文字列を同時に複数置換することって出来ますか?

たとえば、ABCという文字列があった場合、

A→1
C→2

の置換を同時にやりたいんです。

ABC→1B2 に一度に置換する方法はありますか?
よろしくお願いします。

Aベストアンサー

マクロでしか出来ないと思います。
一応、標準モジュールに貼り付けることを想定していますが、どこでも構いません。フォームボタンなどに登録すると、簡単に使えるようになると思います。

Sub MultiReplacement()
 Dim MyWords As Variant
 Dim MyRepWords As Variant
 Dim Ans As Integer
 Dim Rng As Range
 MyWords = Array("A", "C") 'ここに検索語を入れてください。
 MyRepWords = Array(1, 2) 'ここに置換語を入れてください。
 '検索語と置換語を調べる
 If UBound(MyWords) <> UBound(MyRepWords) Then
  MsgBox "検索語数( " & UBound(MyWords) & _
  " )と置換語数( " & UBound(MyRepWords) & " )数が違います。", 64
  Exit Sub
 End If
 
 Set Rng = Selection 'マウスで範囲を選択してください。
 If Rng.Count = 1 Then
  Ans = MsgBox("セル1つしか選択されていませんが、よろしいですか?", vbYesNo)
  If Ans = vbNo Then
   Exit Sub
  End If
 End If
 '実行
 For i = LBound(MyWords) To UBound(MyWords)
  Cells.Replace What:=MyWords(i), Replacement:=MyRepWords(i), _
  LookAt:=xlPart, _
  MatchCase:=True
 Next i
End Sub

マクロでしか出来ないと思います。
一応、標準モジュールに貼り付けることを想定していますが、どこでも構いません。フォームボタンなどに登録すると、簡単に使えるようになると思います。

Sub MultiReplacement()
 Dim MyWords As Variant
 Dim MyRepWords As Variant
 Dim Ans As Integer
 Dim Rng As Range
 MyWords = Array("A", "C") 'ここに検索語を入れてください。
 MyRepWords = Array(1, 2) 'ここに置換語を入れてください。
 '検索語と置換語を調べる
 If UBound(MyWords) <> UBo...続きを読む

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

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

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

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

Aベストアンサー

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

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

Qエクセル関数 重複をのぞいて個数を数える方法

いつもお世話になっています
セルに
a  b  c  a  b b
と入力したとき、個数を数える方法は知っていますが、種類が3個だと集計するにはどんな関数を使えばいいのでしょうか。

Aベストアンサー

下記URLの方法は如何でしょう。

「重複しないデータを数える」
http://integer.exblog.jp/2132536/

「リストから重複するデータをはぶいた件数(個数)をカウントする」
http://ameblo.jp/xls/entry-10073848203.html

「重複しないセル数」ユーザー定義関数の説明
http://www.katch.ne.jp/~kiyopon/soft/juhukunai.html

QShell関数からバッチファイルを起動後に、バッチファイルが終了するまで待ちたい。

はじめまして。
掲題の通り、VB.netからshell関数を用いてバッチファイルを起動します。
その後、そのバッチファイルが終了してログファイルの出力を完了した後に、
ファイルを開いて確認したいのです。
thread.sleepなどで大体このくらいかなという時間を待ってみる、
などのやり方しか今は思いつかないのですが、
何か明確にバッチファイルの終了を受け取れる方法は無いものでしょうか。

どなたかご存知の方がいらっしゃいましたらご教授ください。

Aベストアンサー

Shell関数より Processクラスで実行したほうが簡単に待てますよ

Dim oPro as Process
oPro = Process.Start("..\..\a.bat")
oPro.WaitForExit()
MessageBox.Show("Hello")

といった具合です

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....続きを読む


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

人気Q&Aランキング