Excel VBA質問箱 IV

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

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


1809 / 13645 ツリー ←次へ | 前へ→

【71775】PRNファイルの文字列の置換 ピッポ 12/4/7(土) 14:06 質問[未読]
【71777】Re:PRNファイルの文字列の置換 hint 12/4/7(土) 17:19 発言[未読]
【71778】Re:PRNファイルの文字列の置換 hint 12/4/7(土) 17:49 発言[未読]
【71779】Re:PRNファイルの文字列の置換 kanabun 12/4/7(土) 18:05 発言[未読]
【71793】Re:PRNファイルの文字列の置換 ピッポ 12/4/8(日) 20:48 お礼[未読]

【71775】PRNファイルの文字列の置換
質問  ピッポ  - 12/4/7(土) 14:06 -

引用なし
パスワード
   任意のファイル名のPRNファイルを開き、"*"という文字列があった場合、
"*  0 0 1"という文字列に置換後、上書き保存をするという
マクロを作成したいのですが、以下のファイル名の検索過程で上手く動作しません
でした。PRNファイルですと実行できないのでしょうか?


Sub Macro2()
  Dim f As String
  Dim myFSO As Object
  Dim oFold As String
  Dim oFile As String
  Dim c As Range
  Set myFSO = CreateObject("Scripting.FileSystemObject")
 
  
  oFold = Sheet1.Range("AL2").Value
  oFile = oFold Like "*.prn"
   'リンク先フォルダが存在するものだけ
    If myFSO.folderExists(oFold) Then
      If myFSO.fileExists(oFold & oFile) Then
      Open oFold & oFile For Input As #1
      End If
    End If


End Sub

【71777】Re:PRNファイルの文字列の置換
発言  hint  - 12/4/7(土) 17:19 -

引用なし
パスワード
   一例です。

Sub test()
  Dim oFold  As String
  Dim backup As String
  Dim fileToOpen
  Dim tmpfile As String
  Dim myLine As String
  
  oFold = Sheet1.Range("A1").Value
  backup = CurDir
  ChDir oFold
  
  fileToOpen = Application.GetOpenFilename("Text Files (*.prn), *.prn")
  If fileToOpen <> False Then
    tmpfile = oFold & "\tempfile"
    Name fileToOpen As tmpfile
    Open tmpfile For Input As #1
    Open fileToOpen For Output As #2
    Do While Not EOF(1)
      Input #1, myLine
      Print #2, Replace(myLine, "*", "* 0 0 1")
    Loop
    Close #2
    Close #1
    Kill tmpfile
  End If
  ChDir backup
End Sub

【71778】Re:PRNファイルの文字列の置換
発言  hint  - 12/4/7(土) 17:49 -

引用なし
パスワード
   上書き保存という仕様をそのまま実現したが、
普通は、
・事前にバックアップをとっておくか、
・処理の中で明示的にバックアップファイルを残すか、
・別フォルダに書き出すか
工夫した方がいいでしょう。
元に戻れることは大事ですから。

また、複数ファイルを同時に指定して、それを繰り返し処理にする
といったことももちろん可能でしょう。

【71779】Re:PRNファイルの文字列の置換
発言  kanabun  - 12/4/7(土) 18:05 -

引用なし
パスワード
   ▼ピッポ さん:
本題ではありませんが、
>任意のファイル名のPRNファイルを開き、"*"という文字列があった場合、
>"*  0 0 1"という文字列に置換後、上書き保存をする

"*" という1文字を "*  0 0 1" という文字列に置換すると、1行の文字列の
長さが 元の文字列長と同じではなくなり、PRNファイルとならなくなるので、
その点にも注意してください。

【71793】Re:PRNファイルの文字列の置換
お礼  ピッポ  - 12/4/8(日) 20:48 -

引用なし
パスワード
   お世話になります。
この度はご指導頂き感謝申し上げます。

動作確認した結果、問題ありませんでした。
ご指摘に通り、まだまだ改善の余地がありますので、
まずは自力でチャレンジしたいと思います。

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