Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


29626 / 76738 ←次へ | 前へ→

【52390】Re:ファイルの生成
発言  ichinose  - 07/11/12(月) 17:46 -

引用なし
パスワード
   こんばんは。

私も

>>いい方法はないでしょうか?
>別途ファイルを分けるか、Textをセルに入力して
>配布する方法も検討する事をお勧めします。

に賛成です。何故、テキストをわざわざOLEにしなければならないのかも
知りたいところです。

操作が簡単だからですか?
でも、シートに取り込むのだって「外部データの取り込み」で簡単に出来ますよね?

疑問です・・・・。
が、以下のサンプルコードで簡単なテキストファイルではうまく作動しています。


あくまでも新規ブックの標準モジュールに

'===================================================
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Declare Function SetActiveWindow Lib "user32" (ByVal hWnd As Long) As Long
'===================================================
Sub test()
  Dim olenm As String
  Dim ole As OLEObject
  Dim hWnd1 As Long
  Dim hWnd2 As Long
  Dim shll As Object
  olenm = mk_sample_ole
  MsgBox "サンプルOLEを作成しました" & vbCrLf & _
      "これから、OLEの中のテキストをセルに表示します"
  Set shll = CreateObject("Wscript.Shell")
  shll.AppActivate Application.Caption
  Set ole = ActiveSheet.OLEObjects(olenm)
  hWnd1 = GetActiveWindow
  Application.DisplayAlerts = False
  ole.Verb xlVerbPrimary
  hWnd2 = hWnd1
  Do Until hWnd1 <> hWnd2
   Sleep 1000
   hWnd2 = GetActiveWindow
   Loop
  Call SetActiveWindow(hWnd2)
  shll.SendKeys "^A"
  shll.SendKeys "^C"
  DoEvents
  shll.AppActivate Application.Caption
  Range("a1").Select
  ActiveSheet.Paste
  SetActiveWindow hWnd2
  shll.SendKeys "%FX"
  Set shll = Nothing
End Sub
'===================================================
Function mk_sample_ole()
'サンプルとして、テキストファイルを作成し、
'アクティブシートにoleオブジェクトを作成する
  Dim g0 As Long
  Dim fno As Long
  fno = FreeFile
  Open ThisWorkbook.Path & "\olesamp.txt" For Output As #fno
  For g0 = 1 To 26
    Print #fno, String(30, Chr(g0 + 64))
    Next
  Close #fno
  DoEvents
  ActiveSheet.Range("F10").Select
  With ActiveSheet.OLEObjects.Add(Filename:= _
    ThisWorkbook.Path & "\olesamp.txt", Link:=False, _
    DisplayAsIcon:=False)
    mk_sample_ole = .Name
    End With
End Function


上記のコードを含むブックを必ず保存した後にプロシジャーtestを実行してみてください。

サンプルテキストファイル(olesamp.txt)を当該ブックと同じフォルダに作成し、
そのテキストファイルからoleオブジェクトを作成します。

このサンプルoleObjectから、テキストをアクティブシートのセルa1にコピーします。


試してみてください。


これは、あくまでサンプルです。

冒頭で述べたとおり、仕様の変更を検討してみてください。

0 hits

【52339】ファイルの生成 kim 07/11/9(金) 11:23 質問
【52345】Re:ファイルの生成 neptune 07/11/9(金) 18:45 回答
【52364】Re:ファイルの生成 kim 07/11/10(土) 23:37 質問
【52371】Re:ファイルの生成 neptune 07/11/11(日) 12:49 発言
【52366】Re:ファイルの生成 かみちゃん 07/11/10(土) 23:59 発言
【52377】Re:ファイルの生成 kim 07/11/11(日) 14:44 質問
【52378】Re:ファイルの生成 とおりすがり 07/11/11(日) 15:33 発言
【52379】Re:ファイルの生成 neptune 07/11/11(日) 18:46 回答
【52382】Re:ファイルの生成 kim 07/11/11(日) 22:08 質問
【52389】Re:ファイルの生成 neptune 07/11/12(月) 14:17 発言
【52390】Re:ファイルの生成 ichinose 07/11/12(月) 17:46 発言
【52395】Re:ファイルの生成 kim 07/11/12(月) 19:04 お礼
【52393】Re:ファイルの生成 kim 07/11/12(月) 18:43 お礼
【52403】Re:ファイルの生成 neptune 07/11/13(火) 10:45 発言
【52404】Re:ファイルの生成 kim 07/11/13(火) 12:27 お礼

29626 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free