
UWSCでテキストファイルやExcelファイルを開きたいのですが、
FOPEN関数を使っても、たとえばテキストファイルを開こうと思っても開けません。
これはなぜでしょうか?
すべてのパソコンでダメでした。
OSはXPSP3、7SP1、です。
UWSCのバージョンは最新のバージョン(4.8e1)です。
UWSC.EXEのあるフォルダに、「test01.txt」を作成し、
fid=FOPEN("test01.txt",F_READ or F_WRITE)
と書いても、絶対パスで、
fid=FOPEN("C:\Users\user01\Desktop\uwsc\test01.txt",F_READ or F_WRITE)
と書いても、ダメでした。
その一行しか書いてないのがダメな原因なのでしょうか?
「C:\Users\user01\Desktop\uwsc\test01.txt」は
コマンドプロンプトやファイルを指定して実行、からは開けます。
アンチウィルスソフトは一時的にOFFにしてもだめでした。
OS(XPSP3)を再インストールして、ネットにつながず、
セキュリティソフトなしでやってみてもダメでした。
多分、自分が何か勘違いをしているのだと思いますが、
FOPEN関数は、ファイルを開いて表示するものだと思っていましたが
違うのでしょうか?
Webで検索すると、他のみなさんは開いているようなのですが・・・
ファイルのIDを取得するだけではだめで、ほかの記述も必要ということなのでしょうか?
ゆくゆくはExcelのファイルを普通に開きたいのです。
COMで開くような事例もあったので、それは試してみましたが、
Office2003のセキュリティの「中」設定が無視されて
開いてしまい、Auto_Openマクロも無視されたりで、
使いたくありません。
「中」設定のまま、「マクロを実行させるダイアログ」を
表示してExcelファイルを開きたいのです。
でもその前にということで、テキストファイルを試しにと思ったのですが
テキストファイルすら開けません。
何度かWeb検索しても一向に手がかりがつかめません。
大変すみませんが、どなたがご存知の方がいらっしゃったら、
よろしくご指導くださいませ。
No.2ベストアンサー
- 回答日時:
fopenはuwscでファイルを開くための命令です。
> fid=FOPEN("test01.txt",F_READ or F_WRITE)
エラー値が返ってないのなら、
fline=FGET(fid, 1)
とかでflineに1行目が取得できるので、
print fline
なんかで表示できるはず。
--
> UWSCでテキストファイルやExcelファイルを開きたいのですが、
メモ帳(notepad.exe)やExcelでファイルを開くためには、例えば、
exec("C:\Windows\notepad.exe test01.txt")
などとして、メモ帳をアプリとして起動し、同時に引数を指定します。
早速のご回答ありがとうございました。
お礼が遅くなってしまって大変申し訳ございませんでした。
>exec("C:\Windows\notepad.exe test01.txt")
↑お教えいただいたこのやり方でうまくきました。
本当にありがとうございました。
きっとお忙しい中だったと思うのですが、本当に助かりました。
ありがとうございました。
お礼として、一応、自分が何をしたかったのかをご報告させていただきます。
以下のようなことをしたかったのでした。
(01)UWSCファイルから、Excelを起動して、
マクロセキュリティ「中」を「低」にかえていったん閉じる。
(02)Excelのマクロ付きのプログラムファイルを起動。
(03)そのプログラムの終了時に、終了ボタンを押したときに、
UWSCにて「低」を「中」に戻して閉じる。
開きたいExcelファイルのパスは
D:\test\TestBook2003_01.xls です。
セキュリティを「中」から「低」に変えてExcelを開くUWSファイルのパスは以下です。
D:\test\test01_01_open_ex2003.uws
セキュリティを「低」から「中」に戻してExcelファイル閉じるUWSファイルのパスは以下です。
D:\test\test01_02_close_ex2003.uws
書いたコードは次のとおりです。
●Excelを「中」を「低」にして開くUWSファイルのコード
//Excelは、外部プログラム(VBSやUWSCなど)からCOM経由(?)で開くと、
//セキュリティ設定が「中」や「高」「最高」であっても、
//VBAプログラムが生きたまま開いてしまうという、
//言ってみるとセキュリティホール(?)のようなものがあります。
//それを利用して、まず開き、「中」や「高」を「低」にします。
//(「中」の場合、ダイアログが出ないため、「有効」ボタンを押す
// プログラムを書かなくてすむため)
//それでいったん閉じます。
//COM経由で開いたままだと、Auto_Openプロシージャが使えなかったり
//他のコードが実行できなかったり戸、色々と不都合があるといけないので、
//いったん閉じ、再度、COMじゃない、普通の起動方法(exec命令)で
//開きます。それならAuto_Openプロシージャや他のコードが使えなくなることがないので。
//不可視状態でやっても、結局少し表示されてしまうし、
//可視状態のほうが動きがチラつきが少なくてきれいなので、
//可視状態のままで実行させました。
//#################################################################################
//COM経由(?)でいったん空のExcelを開く
//#################################################################################
//(2000、2003共用)
Dim o_XL = CreateOLEObj("Excel.Application")
Dim o_WB = o_XL.WorkBooks.Add
o_XL.Visible = TRUE // 可視状態にします。
idExcel=getid("Microsoft Excel","XLMAIN")
//ショートカットキー動作にて、マクロセキュリティダイアログを開きます。
SCKEY( idExcel, VK_ALT, VK_T, VK_M, VK_S)
//#################################################################################
///セキュリティ設定を「低」にして閉じる。
//#################################################################################
idセキュ=getid("セキュリティ","bosa_sdm_XL9")
//Excel2003専用の「低」を選ぶコード↓。2000はメッセージ内容がちがうのでこれだと「低に」できません。
clkitem(idセキュ,"低(L) (推奨しません) コンピュータに損害を与える場合があるマクロを実行する前に警告しません。 ウイルス検索プログラムがインストールされているか、すべてのドキュメントが安全であると確認した場合のみ設定してください。",CLK_ACC)
//マクロセキュリティダイアログを閉じます。
clkitem(idセキュ,"OK",CLK_ACC)
//いったん閉じます。
SCKEY( idExcel, VK_ALT,VK_F4)
//#################################################################################
//COM経由(?)じゃない普通の開き方で目的のxlsファイルを開きます。
//#################################################################################
//(2003専用)
exec("C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE D:\test\TestBook2003_01.xls")
==========
●Excelの「アプリ終了」ボタンのコード
Private Sub CommandButton1_Click()
Dim ret As Variant
ret = Shell("D:\test\uwsc\UWSC.exe D:\test\test01_02_close_ex2003.uws")
End Sub
==========
●「test01_02_close_ex2003.uws(セキュリティを元に戻すUWSファイル)」の内容
idExcel=getid("Microsoft Excel","XLMAIN")
//マクロセキュリティダイアログを開きます。
SCKEY( idExcel, VK_ALT, VK_T, VK_M, VK_S)
//マクロセキュリティを中に戻します。
idセキュ=getid("セキュリティ","bosa_sdm_XL9")
//2003専用コード↓
clkitem(idセキュ,"中(M) コンピュータに損害を与える可能性があるマクロを実行する前に警告します。",CLK_ACC)
//マクロセキュリティダイアログを閉じます。
clkitem(idセキュ,"OK",CLK_ACC)
//Excelを閉じます。
SCKEY( idExcel, VK_ALT,VK_F4)
//上書きを聞かれたら、はい、で閉じます。
id上書き確認=getid("Microsoft Excel","#32770")
SCKEY( id上書き確認, VK_Y)
============
以上です。
これで目的を達することができました。
neKo_deuxさん、本当にありがとうございました。
また、Picosoftさんも本当にありがとうございました。
No.1
- 回答日時:
こんなツールがあるのですね。
ちょっとダウンロードしてヘルプを眺めてみました。
> FOPEN関数は、ファイルを開いて表示するものだと思っていましたが
> 違うのでしょうか?
「ファイルを開く」の意味を取り違えているようです。
FOPEN関数は「ファイルをUWSCの関数で読み書きするために開く」ための関数です。
メモ帳でファイルを開くわけではありません。
取得したファイルIDを使って、
「FGET(fid, 1)」と書けば1行目を読み込みますし、
「FPUT(fid, "test")」と書けば行末に「test」と書き込みます。
コマンドプロンプトで入力したときと同じ動作を期待する場合は、DOSCMD関数を使ってください。
DOSCMD("test01.txt", TRUE)
早速のご回答ありがとうございました。
お礼が遅くなってしまって申し訳ございませんでした。
>「ファイルを開く」の意味を取り違えているようです。
そういうことだったんですね。
FGETやFPUTをためせばよかったんですね。
なぜそこに気がつかなかったのか、自分で自分が恥ずかしいです(TT)
ありがとうございました。
>コマンドプロンプトで入力したときと同じ動作を期待する場合は、DOSCMD関数を使ってください。
これはやってみたのですが、思うような動作をしなかったので今回は採用しませんでした。
ありがとうございました。
結果的に、No2の方のご回答でうまくいったのですが、そちらで、
自分の書いた結果をご報告させていただきます。
恥ずかしいような内容ですが・・・(TT)
きっとお忙しいであろう中、ほんとうに、ありがとうございました。m( _ _ )m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/08 15:45
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/02/05 09:55
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) マクロの付いたExcelが開けません 3 2023/02/01 10:54
このQ&Aを見た人はこんなQ&Aも見ています
-
UWSCでファイルを開く方法
その他(プログラミング・Web制作)
-
UWSC 指定ファイルを指定のプログラムで開く
フリーソフト
-
UWSCで指定のフォルダを開きたい。
その他(ソフトウェア)
-
-
4
変数内に入った文字列の結合 UWSC
その他(プログラミング・Web制作)
-
5
(UWSC)エクセルのセルの値を読み込むには?
その他(プログラミング・Web制作)
-
6
UWSCの終了の仕方
その他(プログラミング・Web制作)
-
7
UWSC DeleteFile関数についての質問です。
Visual Basic(VBA)
-
8
UWSCの待機コマンドについて
その他(ソフトウェア)
-
9
(UWSC)ファイルを作るときに、任意のフォルダに作れますか?
その他(プログラミング・Web制作)
-
10
UWSCを使用して、ドロップダウンリストを操作
フリーソフト
-
11
【UWSC】WEBページ内コピーしたものをExcelで値で貼り付けするには?
その他(プログラミング・Web制作)
-
12
(UWSC) 「#32770」の意味わかりますか?
その他(プログラミング・Web制作)
-
13
UWSCについて
その他(プログラミング・Web制作)
-
14
UWSC 非アクティブウィンドウへのキー入力
その他(ソフトウェア)
-
15
【UWSC】エクセルのセルの値をブラウザに貼り付ける操作。セルの値の判別方法について。
その他(プログラミング・Web制作)
-
16
【UWSC】アプリを閉じたのに、GETID(”アプリ”)が「-1」となってくれない。
その他(プログラミング・Web制作)
-
17
UWSCで変数をキー入力
その他(プログラミング・Web制作)
-
18
UWSC
フリーソフト
-
19
UWSCで特定のChromeのタブをアクティブにする方法
その他(プログラミング・Web制作)
-
20
uwscでExcelに自動記入
Flash
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
.txtではなく.logの方が良いの...
-
VBAでワークシートを引数として...
-
多数のサブディレクトリ内のフ...
-
テキストファイルで提出とは?
-
ファイル内容の修正、行削除に...
-
リモートのファイル存在確認
-
psqlでエラーログをとりたい
-
ファイル名の一部をbatで変更し...
-
forコマンドのdelimsオプション...
-
Windowsのバッチファイルを利用...
-
renameコマンドについて
-
エクセルの各セルの内容をそれ...
-
ファイルを処理中に次の処理に...
-
VBSでフォルダ内のテキストファ...
-
Windows マシンでFTPバッチが動...
-
Excel VBAの文字列と数値の分類
-
バッチファイル 複数ファイル...
-
cshでファイルサイズ取得
-
バッチ(bat)でリストファイルか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
拡張子を元に戻す
-
.txtではなく.logの方が良いの...
-
VBAでワークシートを引数として...
-
多数のサブディレクトリ内のフ...
-
psqlでエラーログをとりたい
-
COPYコマンドで結合すると余計...
-
エクセルの各セルの内容をそれ...
-
バッチファイルで文字列削除に...
-
ファイルの最後に文字列挿入
-
UWSCでテキストファイルを開い...
-
バッチファイル 複数ファイル...
-
renameコマンドについて
-
ファイル名の一部をbatで変更し...
-
forfilesで検索したファイルを...
-
外部exeに対しての引数受け渡し
-
Windowsのバッチファイルを利用...
-
VBSでフォルダ内のテキストファ...
-
VBAでエクセルをtxtに変換する...
-
ExcelVBA テキストファイルUNIC...
おすすめ情報